![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
硬件I2C一直停留在busy/ O0 H; @2 y+ {) y0 Y$ k5 G 我尝试配置f1的硬件I2C,写好程序后读取一下mpu6050的I2C地址,只读取一个byte,调试代码时发现I2C写操作没问题,但是读取操作加入之后I2C一直停留在busy。
看了几篇博文,开关I2C->CR1的最高位SWRST并且重新初始化也不行,误打误撞遇到了博主lalalaxy的文章,文中提到需要在接收数据前把SDA拉高,还提到要注意数据手册中的清零细节。 重新查看手册发现我之前漏掉EV6_1的细节:, _ L& R& I& D: W8 p" J1 n# G * L3 t4 r7 Z- J, |% X3 r ![]() 图中提到EV6_1这个事件对应只读取一个byte时的操作,并且在标准库中没有相应的flag操作。所以这里的操作需要手动完成,即在事件6之后加:
我没有在读数据前将SDA拉高,I2C通讯也可以正常读取,目前尚不知原因。 Y6 G1 Q& z3 A+ u ![]() GPIO口初始化错了也有可能造成busy的情况。3 I. e) m! v) h2 p7 } ————————————————& \3 Q$ i, T$ G0 O3 l7 r( k 版权声明:外星人请走开7 T' ~* X7 b0 O: O! v 如有侵权请联系删除 - k9 I/ B' N2 c0 g' ?- h5 J U3 z 2 l2 i+ m* \+ e/ p1 L0 b# m |
【原创】STM32F103的SPI2的配置函数,DMA发送和接收!
【源代码】STM32F103C8T6最小板搞定CMSIS-DAP和SWO功能
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F103做CAN的收发通信经验分享
STM32固件库分享,超全系列整理
小马哥STM32F103开源小四轴RoboFly全部资料大放送
【管管推荐】STM32经验分享篇
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB