|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近做陀螺加速度芯片数据采集驱动编写,遇到一个奇怪的问题,请大家帮忙分析一下。9 Y' _! _. T( {
起初用的传感器芯片型号是BMI055,单片机STM32F405,使用硬件spi,读写数据均正常。* {- }$ c! Y, j! H0 v: i
后将传感器芯片型号换成BMI088,单片机和SPI驱动包括引脚等都不变,仍是硬件spi,发现每次读传感器的寄存器要读两次才能读出来正确的值。
$ T2 t/ |* i7 |+ K0 D# S; x+ {! i" o; @0 g- o: _9 d& E8 z
8 M/ V" J: ]; K* o" Q
以读取ACC相关寄存器为例,以下为读取寄存器时序:
/ h( T0 b1 o2 X6 S/ J! w6 G* L
( |/ Q7 _; U/ E7 ~; [ 读寄存器 应读出结果 实际结果, X* D9 q" v: U
0x00 0x1E 0x009 X! J) Q1 _+ \+ B; D7 n
0x00 0x1E 0x1E
6 v9 a- H |/ x8 p: V 0x41 0x00 0x1E$ S4 N2 t' ?1 H
0x41 0x00 0x00) T1 b3 a/ o) i4 D) w2 `/ P
0x58 0x04 0x00
( } b# n& v& r3 x9 F3 j2 n 0x41 0x00 0x046 c' N+ ^# ]: u0 o# K
0x41 0x00 0x00
0 p# l7 B- X9 F! i: J
" }! \$ o1 F4 E; } 根据上表,基本上就是每次读的实际结果都是上一次应该读出的结果,也就是滞后一个读取周期。看传感器手册,055和088在通讯配置上并没有什么明显不同的地方。
0 I$ f8 R% y8 [8 o8 f4 C 不知道大家有没有遇到过这个问题的,麻烦指导一下这个问题可能是什么原因造成的,感谢!0 Z& E8 P- o% s, H7 x
9 l. F' a% z r7 }7 T7 ], {' F. I4 t |
|