我用ST的开发板与ADXL355用SPI通信,无法读到正确的DEVID_AD值。
现象是:
间隔100ms读一次DEVID_AD(SPI发送一个字节0x00,每次都一样),每次上电前五次的值分别是0x00、0xAD、0x1D、0xED、0x01,这太巧合了从0xAD开始分别为ADXL355前4个寄存器的值,我认为预期结果应该是读出全是DEVID_AD的复位值0xAD。目前不能判断ADXL355有没有正常工作和通信,并且不知道问题出在哪里,希望在这里找到答案。
我用示波器检查过SPI的MOSI、MISO、SCK,波形皆正常。
我使用的硬件如下:
1、MCU:STM32L051C8
2、ADXL355评估板 EVAL-ADXL355-PMDZ
代码如下
GPIO:MOSI、MISO、SCK都为复用推挽输出,复用功能为SPI1;NSS为推挽输出,使用软件控制,此管脚一直拉低。
SPI驱动:
已经明白问题出在哪里了,我把数据宽度改为16位,并且每次都控制片选就没问题了