STM32/STM8技术william hill官网
直播中

王霞

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

SPI受传感器芯片影响导致读数异常

最近做陀螺加速度芯片数据采集驱动编写,遇到一个奇怪的问题,请大家帮忙分析一下。
起初用的传感器芯片型号是BMI055,单片机STM32F405,使用硬件spi,读写数据均正常。
后将传感器芯片型号换成BMI088,单片机和SPI驱动包括引脚等都不变,仍是硬件spi,发现每次读传感器的寄存器要读两次才能读出来正确的值。


以读取ACC相关寄存器为例,以下为读取寄存器时序:

      读寄存器              应读出结果         实际结果
      0x00                   0x1E                0x00
      0x00                   0x1E                0x1E
      0x41                   0x00                0x1E
      0x41                   0x00                0x00
      0x58                   0x04                0x00
      0x41                   0x00                0x04
      0x41                   0x00                0x00

      根据上表,基本上就是每次读的实际结果都是上一次应该读出的结果,也就是滞后一个读取周期。看传感器手册,055和088在通讯配置上并没有什么明显不同的地方。
      不知道大家有没有遇到过这个问题的,麻烦指导一下这个问题可能是什么原因造成的,感谢!

回帖(7)

李娜

2018-10-17 11:05:03
没用过,帮你顶一下
举报

h1654155275.5669

2018-10-17 11:05:18
你可以了解一下spi时序的问题,我感觉是你使用spi模式不对。
举报

王霞

2018-10-17 11:05:50
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

张华

2018-10-17 11:06:12
最直观的方法就是示波器触发着看,软件单步调试,看问题在哪,根据调试结果来调整你的程序,不然你也不知道你该怎么调整
举报

王霞

2018-10-17 11:06:28
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李斌

2018-10-17 11:06:53
“每次读传感器的寄存器要读两次才能读出来正确的值。”这个虽然楼主你找到问题所在了,但是你一定要注意有些片子datasheet数据格式是16bit的,有些是32bit的,还有24bit的,好好看下datasheet,就知道需要通信几次了
举报

王霞

2018-10-17 11:07:11
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

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