问题现象
主要是发现在静止状态下,运行大概15分钟,在stream FIFO模式下,出现z轴数据移动到Y轴,(也有时候到x轴。)
判断方式


已经确认,从FIFO里读出的数据的channel id都是正确的,可以看到下图,0x01 为Y轴,而0x020F则是1G。
这个的结果数据是从FIFO直接确认的(看来keil调试,所以可以排除后面组包导致的问题)
初始化逻辑
读取fifo按照
先读取fifo ready和对比watermark
最后去取数据。
主要是发现在静止状态下,运行大概15分钟,在stream FIFO模式下,出现z轴数据移动到Y轴,(也有时候到x轴。)
判断方式


已经确认,从FIFO里读出的数据的channel id都是正确的,可以看到下图,0x01 为Y轴,而0x020F则是1G。
这个的结果数据是从FIFO直接确认的(看来keil调试,所以可以排除后面组包导致的问题)
读取fifo按照
先读取fifo ready和对比watermark
最后去取数据。
有多大几率会出现这个现象,每次都是运行15分钟左右吗?变化之后一直继续读取,还会再有变化或变化回来吗?
可以参考下我们的官方例程: https://github.com/analogdevicesinc/no-OS/tree/main/drivers/accel/adxl38x
https://github.com/analogdevicesinc/no-OS/tree/main/projects/eval-adxl38x
...
我提供下故障的分布形式,
可以看到有2小时到15分钟。

补充一张逻辑分析仪的图,
从图中看出,382的原始输出确实不符合预期,应该是z轴是重力轴
变化之后一直继续读取,会一直错误着,还是会变化回正确值?
会错误,然后会持续交换(持续时间15mins到2小时不等,又会交换到正确值)
目前怀疑应该是因为FIFO在同时读数和存储写新数据时发生了轴间错乱,导致了这个现象。
参考我们官方demo程序修改过吗。另外可以加快SPI读取速率,保证在新加速度数据来临之前,已经将FIFO数据读完了,避免出现同时读和写FIFO的操作
这个问题解决了吗?是怎么解决的呢?
我也有一样的问题,不加xyz标识的时候,突然会丢一个轴,整个数据就乱了。
解决不了,我们用逻辑分析仪看了,确实是芯片波形出来有问题,只能不停复位fifo
看来是芯片内部问题,我在想想其他办法,感谢