硬件I2C一直停留在busy 我尝试配置f1的硬件I2C,写好程序后读取一下mpu6050的I2C地址,只读取一个byte,调试代码时发现I2C写操作没问题,但是读取操作加入之后I2C一直停留在busy。4 x+ p9 w+ W( r) d$ p( k
看了几篇博文,开关I2C->CR1的最高位SWRST并且重新初始化也不行,误打误撞遇到了博主lalalaxy的文章,文中提到需要在接收数据前把SDA拉高,还提到要注意数据手册中的清零细节。 重新查看手册发现我之前漏掉EV6_1的细节:& f% R/ K0 U/ v! \1 j/ \ 图中提到EV6_1这个事件对应只读取一个byte时的操作,并且在标准库中没有相应的flag操作。所以这里的操作需要手动完成,即在事件6之后加:- ]8 m( n5 v( U' ]8 l% G$ F
我没有在读数据前将SDA拉高,I2C通讯也可以正常读取,目前尚不知原因。 " s- n! @% I) ]1 I. \ GPIO口初始化错了也有可能造成busy的情况。4 B6 ?0 P' U) F# u ———————————————— 版权声明:外星人请走开 如有侵权请联系删除 0 f: N1 g1 p/ P6 l " ]2 d: @: a, \3 q4 t9 ^' A1 h. M, F |
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP