使用ADS131A02,设置为异步中断模式,在每次DRDY信号的下降沿中断里,发送命令进行初始化设置。在下一个DRDY信号下降沿中断里读取上一个命令的回复ack。但是读取出来全为0xffff。不知问题出在哪里?
每个data frame的开头都是ACK吗?
如果没有发送命令,那data frame 的第一个DOUT应该是什么内容?
UINT16 SPI_ADS131_SendByte(UINT16 byte)
{
UINT8 retry=0;
UINT16 retdata = 0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //检查指定的SPI标志位设置与否:发送缓存空标志位
{
//retry++;
//if(retry > 100)
//return 0;
}
SPI_I2S_SendData16(SPI2, byte); //通过外设SPIx发送一个数据
retry=0;
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET)
{
//retry++;
//if(retry > 100)
//return 0;
}
retdata = SPI_I2S_ReceiveData16(SPI2);
return retdata;
//return SPI_I2S_ReceiveData16(SPI2); //返回通过SPIx最近接收的数据
}
Qiankun Wang:
您好,我最近也在使用这个芯片,请问您解决此问题了吗?
dongyang shi:
回复 Qiankun Wang:
您好,仔细看了芯片手册,ADS131异步中断模式每次进行读写都需要操作一次CS信号。拉低–读写–拉高
您试一下