|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近做陀螺加速度芯片数据采集驱动编写,遇到一个奇怪的问题,请大家帮忙分析一下。3 f; c1 U! k/ X( R( y* y9 Q# F
起初用的传感器芯片型号是BMI055,单片机STM32F405,使用硬件spi,读写数据均正常。" U$ J: n- y+ g
后将传感器芯片型号换成BMI088,单片机和SPI驱动包括引脚等都不变,仍是硬件spi,发现每次读传感器的寄存器要读两次才能读出来正确的值。
! v, \: I( [( c8 }, X \6 v5 `7 j; C% a5 @" F- ^
+ e- m1 q% p/ C0 f以读取ACC相关寄存器为例,以下为读取寄存器时序:
, ?$ x, |: ?2 Z6 d
# S- J8 y. h# J; n 读寄存器 应读出结果 实际结果1 V& V! Z# s! @9 Q0 ?0 L/ S
0x00 0x1E 0x00
/ H" o& v5 L/ s+ o: e+ ~ 0x00 0x1E 0x1E
: `8 ^$ u. ^! o- B0 T 0x41 0x00 0x1E
/ t7 ^. u0 @. D# i 0x41 0x00 0x00- I |3 ]3 I; c' k( P8 a
0x58 0x04 0x004 ^! U, {/ i0 O; R1 x) K) t! |
0x41 0x00 0x04
3 k. S, o, \. v; w 0x41 0x00 0x00
6 c( s. K. b* @) R
& j e9 Q6 k7 C; g/ R! K/ S& w' b 根据上表,基本上就是每次读的实际结果都是上一次应该读出的结果,也就是滞后一个读取周期。看传感器手册,055和088在通讯配置上并没有什么明显不同的地方。
) x M* n2 H. b$ J! d 不知道大家有没有遇到过这个问题的,麻烦指导一下这个问题可能是什么原因造成的,感谢!) e& {3 F/ i% i
; v+ C% L& H# T |
|