Post Go back to editing

使用nxp的rt1176单片机的spi外设 读取 AD7768的数据dout时,读不出数据,请指导一下

Thread Summary

The user is experiencing issues reading data from AD7768 using SPI on a custom board. The final answer suggests verifying hardware connections, power, and clock settings, and checking the SPI control mode and one-shot configuration. The user should also confirm if the DOUT, DCLK, and DRDY pins are generating the expected waveforms.
AI Generated Content

我的读取流程如下:

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 给我点建议吧

Parents
  • 出不了结果的可能性很多,不正确的软件和硬件配置都有可能导致出不了结果。

    首先您是基于什么电路调的,官方评估板?自制板?您这个电路是否确认过其硬件能正常工作,也就是电源,时钟这些等都已经正确设置,且您知道基于您这个板子您或别人是否曾跑出数据过。

    还有就是您用的控制模式的什么,spi控制还是pin控制。是否配置成one shot模式等,甚至手册中提及了好些个导致不能输出数据的情况,且您说的无法读取数据是否只是代码无法识别数据?有无测过dout dclk drdy这些引脚有无实际波形输出动作。我这边一时无法根据信息给出错误的定位,更多的还需要您基于手册自查。

Reply
  • 出不了结果的可能性很多,不正确的软件和硬件配置都有可能导致出不了结果。

    首先您是基于什么电路调的,官方评估板?自制板?您这个电路是否确认过其硬件能正常工作,也就是电源,时钟这些等都已经正确设置,且您知道基于您这个板子您或别人是否曾跑出数据过。

    还有就是您用的控制模式的什么,spi控制还是pin控制。是否配置成one shot模式等,甚至手册中提及了好些个导致不能输出数据的情况,且您说的无法读取数据是否只是代码无法识别数据?有无测过dout dclk drdy这些引脚有无实际波形输出动作。我这边一时无法根据信息给出错误的定位,更多的还需要您基于手册自查。

Children
No Data