我的读取流程如下:
1 首先在板子整体初始化阶段,完成spi外设的初始化,代码如下所示,一次传输32bit,cs信号低有效,从机模式设置为 mode1
将drdy连接到spi的cs引脚,同时也连接到另外一个gpio上,使能这个gpio的中断
lpspi_3_slave_cfg.bitsPerFrame = 32;
lpspi_3_slave_cfg.cpol = kLPSPI_ClockPolarityActiveHigh;
//lpspi_3_slave_cfg.cpol = kLPSPI_ClockPolarityActiveLow;
//lpspi_3_slave_cfg.cpha = kLPSPI_ClockPhaseFirstEdge;
lpspi_3_slave_cfg.cpha = kLPSPI_ClockPhaseSecondEdge;
lpspi_3_slave_cfg.direction = kLPSPI_MsbFirst;
lpspi_3_slave_cfg.whichPcs = kLPSPI_Pcs0;
lpspi_3_slave_cfg.pcsActiveHighOrLow = kLPSPI_PcsActiveLow;
lpspi_3_slave_cfg.pinCfg = kLPSPI_SdiInSdoOut;
//lpspi_3_slave_cfg.dataOutConfig = kLpspiDataOutRetained;
lpspi_3_slave_cfg.dataOutConfig = kLpspiDataOutTristate;
LPSPI_SlaveInit(LPSPI3, &lpspi_3_slave_cfg);
LPSPI_SlaveTransferCreateHandle(LPSPI3, &lpspi_3_handle, LPSPI_3_SlaveUserCallback, NULL);
2 按照ad7768的时序图,在gpio的下降沿调用spi的再传输函数,重新启用1次32bit的传输,以接收dout的输出数据
(在上升沿调用spi的再传输函数也试过,但结果是一样的),结果都是读不出来数据,代码如下
lpspi_3_slave_Xfer.txData = NULL; lpspi_3_slave_Xfer.rxData = spi_3_rx_buf; lpspi_3_slave_Xfer.dataSize = 4; lpspi_3_slave_Xfer.configFlags = kLPSPI_SlavePcs0 | kLPSPI_SlaveByteSwap; // Slave start receive LPSPI_SlaveTransferNonBlocking(LPSPI3, &lpspi_3_handle, &lpspi_3_slave_Xfer);
问题:
1 你们在使用spi外设读取AD7768数据时思路是怎么样的,我看了官方的spi读取文档,思路也是这个,但死活做不出结果
2 给我点建议吧


