|
最近有客户在使用YBX-BMI270惯性测量单元模块时反馈无法读取数据,并且不能读取到芯片ID。BMI270模块支持SPI和I2C通讯,客户使用的是正点原子的STM32F419阿波罗开发板进行测试,使用的是SPI方式。
我们提供的代码示例是基于STM32G070微控制器的,因此需要进行代码移植。对客户发来的代码进行检查,SPI读写函数、main主函数、硬件底层初始化部分的代码都移植的没有问题;
代码是经过验证的,因此怀疑是硬件连接造成的。查看硬件连接,BMI270连接到STM32F429控制器的SPI1接口,CS引脚连接到PA4引脚。
结合正点原子提供的原理图,对硬件连接进行验证,并使用示波器进行检查,确认硬件连接正确。
使用STM32CubeMX工具检查生成的底层代码,发现SPI的时钟设置的过高造成的。STM32F429的主频最大为180MHz,SPI参数配置中进行了8分频,分频后的频率为11.25MBits/s。查看BMI270的数据手册,在<Table 19: Timing specifications for SPI>中规定了支持的最大通讯速率是10MHz。因此,将SPI的分频系数修改为32分频,时钟频率为2.8M,修改成功后,数据正常读取。
|