标签:验证 代码 rate src 图片 想法 img 输出 png
最近接手个项目,说是IMU数据一直出现溢出的问题,查看了代码,也没找到什么严重的bug,该配置的寄存器也都配置了,该初始化的参数也都初始化了,可是数据始终不正常。最后在仔细研究器件手册后,终于发现了一个可疑的点,最后测试下来果然是因为这个疑似问题点造成的。接下来就来说说这个不大不小的坑。
从上面的寄存器表可以看到,如果要修改DEC_RATE的值,我们需要设置的是0x36,这个寄存器的默认值为0x0000,所以当我们要设置的值小于0xFF的时候,可能就只会修改0x36,而不会再去设置高8位数据的0x37。就是因为这样一个理所当然的想法,就造成了整个DEC_RATE数据的问题。
经过验证,无论DEC_RATE要设置成什么值,都要同时设置0x36和0x37,从而保证这个寄存器的值是绝对确定的,否则就容易出现数据异常,最后导致整个采集输出的数据都异常。
标签:验证 代码 rate src 图片 想法 img 输出 png
原文地址:https://blog.51cto.com/14432982/2417362