旧乡故客
发表于: 2024-9-25 10:26:25 | 显示全部楼层

最近有客户在使用YBX-BMI270惯性测量单元模块时反馈无法读取数据,并且不能读取到芯片ID。BMI270模块支持SPI和I2C通讯,客户使用的是正点原子的STM32F419阿波罗开发板进行测试,使用的是SPI方式。


我们提供的代码示例是基于STM32G070微控制器的,因此需要进行代码移植。对客户发来的代码进行检查,SPI读写函数、main主函数、硬件底层初始化部分的代码都移植的没有问题;

Keil code.jpg


代码是经过验证的,因此怀疑是硬件连接造成的。查看硬件连接,BMI270连接到STM32F429控制器的SPI1接口,CS引脚连接到PA4引脚。

硬件连接.jpg

结合正点原子提供的原理图,对硬件连接进行验证,并使用示波器进行检查,确认硬件连接正确。


使用STM32CubeMX工具检查生成的底层代码,发现SPI的时钟设置的过高造成的。STM32F429的主频最大为180MHz,SPI参数配置中进行了8分频,分频后的频率为11.25MBits/s。查看BMI270的数据手册,在<Table 19: Timing specifications for SPI>中规定了支持的最大通讯速率是10MHz。因此,将SPI的分频系数修改为32分频,时钟频率为2.8M,修改成功后,数据正常读取。

CubeMX spi.jpg


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 14 | 回复: 14



手机版|

GMT+8, 2024-12-21 19:51 , Processed in 0.074682 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表