
硬件I2C一直停留在busy 我尝试配置f1的硬件I2C,写好程序后读取一下mpu6050的I2C地址,只读取一个byte,调试代码时发现I2C写操作没问题,但是读取操作加入之后I2C一直停留在busy。
看了几篇博文,开关I2C->CR1的最高位SWRST并且重新初始化也不行,误打误撞遇到了博主lalalaxy的文章,文中提到需要在接收数据前把SDA拉高,还提到要注意数据手册中的清零细节。 重新查看手册发现我之前漏掉EV6_1的细节: ![]() 图中提到EV6_1这个事件对应只读取一个byte时的操作,并且在标准库中没有相应的flag操作。所以这里的操作需要手动完成,即在事件6之后加:
我没有在读数据前将SDA拉高,I2C通讯也可以正常读取,目前尚不知原因。 ![]() GPIO口初始化错了也有可能造成busy的情况。 ———————————————— 版权声明:外星人请走开 如有侵权请联系删除 |
基于使用STM32F1制作一个计时器经验分享
基于STM32cubeMX的STM32F1IIC从机通讯
STM32固件库分享,超全系列整理
游名科技:STM32F103+TMC2160:86步进电机和驱动一体原理图/PCB...
STM32F1入门福利贴:基于HAL库/CubeMX软件的软硬件设计手册
基于STM32F1模拟I2C通信中寄存器操作IO方向经验分享
基于STM32F1定时器区别
基于STM32F1外部触发脉冲计数定时器实验
基于STM32F1基本定时器单次触发模式经验分享
基于STM32F1的无法进入SysTick经验分享