|
硬件I2C一直停留在busy 我尝试配置f1的硬件I2C,写好程序后读取一下mpu6050的I2C地址,只读取一个byte,调试代码时发现I2C写操作没问题,但是读取操作加入之后I2C一直停留在busy。: c" G5 k* v0 J6 G9 ~
看了几篇博文,开关I2C->CR1的最高位SWRST并且重新初始化也不行,误打误撞遇到了博主lalalaxy的文章,文中提到需要在接收数据前把SDA拉高,还提到要注意数据手册中的清零细节。 重新查看手册发现我之前漏掉EV6_1的细节:
8 X4 }6 t6 ?4 D' U/ m M" y 图中提到EV6_1这个事件对应只读取一个byte时的操作,并且在标准库中没有相应的flag操作。所以这里的操作需要手动完成,即在事件6之后加:4 H" @3 P* Q6 N( k , M: e3 v! y! l/ K8 G
我没有在读数据前将SDA拉高,I2C通讯也可以正常读取,目前尚不知原因。 8 E9 t( d, {6 X5 A* K! O0 ~- F
) E2 G8 Y! t" o! \6 f7 w GPIO口初始化错了也有可能造成busy的情况。 E) G0 a, \+ O, ^: F- H ———————————————— t8 G# K* n! Q3 Z& g 版权声明:外星人请走开 如有侵权请联系删除 : U; L' U$ Q0 K% b% O1 R1 m5 M ' g) _. Z- h7 S) E1 l- }9 Y, [" r |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版