我最近使用
STM32作为控制器,采集ADIS16445的数据。但是再通过SPI
通信读取Port ID这里出现了问题,希望有人能帮忙解决,或给些建议。问题描述如下:
这是我编写的读取Port ID部分的代码:
将0x5600拆分成两个字节发送给ADIS16445,之后再读取两个字节,拼接出接收到的数据。
如此循环下去,STM32通过串口连接电脑,打印获取到的Port ID ,进行显示。
接下来是具体的问题,我在电脑上查看串口助手,并不能收到稳定准确的Port Id(0x403D)。
返回下面的内容:
有时返回的是0X000,有时返回的是0xffff,极少数情况下能够接受到正确的Port ID(0x403D)
接下来我使用示波器开始排除错误:
每次发送两个字节的数据,所以CS有两次低电平时段,没有问题。
发送一个字节需要8个脉冲,也没问题。
DIN引脚循环输出
DIN = 0101 0110 0000 0000 = 0x5600,没问题
以上三个引脚的波形都正确,但是DOUT输出的波形确是方波,而不是我们期望的Port ID
DOUT = 0100 0000 0011 1101 = 0x403D = 16,445,但这可以解释为什么我接收到的一段时0xffff,一段是0x0000,如此一直循环。但极少情况下能够接受到0X403D。
下面是我采集数据的实物图:
现在的情况是,我通过STM32向ADIS16445发送的内容都是正确的,但是ADIS16445的输出却不是期望的。
我觉得不是硬件连接的问题,没有短路或者接错线的情况,SPI通信也没问题,然而我也想不出还有哪里出错了。
真心的希望有人能帮我解决一下这个问题,或者给出一些建议。
再次感谢!