传感技术
直播中

王霞

7年用户 1316经验值
私信 关注
[问答]

adis16445获取PortID出错的原因?怎么解决?

我最近使用STM32作为控制器,采集ADIS16445的数据。但是再通过SPI通信读取Port ID这里出现了问题,希望有人能帮忙解决,或给些建议。问题描述如下:
这是我编写的读取Port ID部分的代码:

将0x5600拆分成两个字节发送给ADIS16445,之后再读取两个字节,拼接出接收到的数据。
如此循环下去,STM32通过串口连接电脑,打印获取到的Port ID ,进行显示。

接下来是具体的问题,我在电脑上查看串口助手,并不能收到稳定准确的Port Id(0x403D)。
返回下面的内容:

有时返回的是0X000,有时返回的是0xffff,极少数情况下能够接受到正确的Port ID(0x403D)


接下来我使用示波器开始排除错误:

  • CS引脚:

每次发送两个字节的数据,所以CS有两次低电平时段,没有问题。


  • SCLK引脚:

发送一个字节需要8个脉冲,也没问题。


  • DIN:

DIN引脚循环输出DIN = 0101 0110 0000 0000 = 0x5600没问题


  • DOUT:

以上三个引脚的波形都正确,但是DOUT输出的波形确是方波,而不是我们期望的Port ID
DOUT = 0100 0000 0011 1101 = 0x403D = 16,445,但这可以解释为什么我接收到的一段时0xffff,一段是0x0000,如此一直循环。但极少情况下能够接受到0X403D。

下面是我采集数据的实物图:



现在的情况是,我通过STM32向ADIS16445发送的内容都是正确的,但是ADIS16445的输出却不是期望的。
我觉得不是硬件连接的问题,没有短路或者接错线的情况,SPI通信也没问题,然而我也想不出还有哪里出错了。
真心的希望有人能帮我解决一下这个问题,或者给出一些建议。
再次感谢!

更多回帖

发帖
×
20
完善资料,
赚取积分