打印
[STM32F1]

我用的是STM32F103RBT的芯片,采用库函数来完成I2C通信,MCU...

[复制链接]
359|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2024-7-31 19:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是STM32F103RBT的芯片,采用库函数来完成I2C通信,MCU为主,没有用中断,也没有用DMA,但就是会卡死在while循环了,用示波器抓了一下,没有抓到应答信号,怎么办呢?

使用特权

评论回复
沙发
powerantone| | 2024-8-13 17:10 | 只看该作者
检查I2C初始化设置

使用特权

评论回复
板凳
laocuo1142| | 2024-8-13 17:10 | 只看该作者
检查I2C通信的起始和停止条件

使用特权

评论回复
地板
powerantone| | 2024-8-13 17:10 | 只看该作者
检查I2C通信的等待函数

使用特权

评论回复
5
stormwind123| | 2024-8-13 17:11 | 只看该作者
使用示波器同时观察SCL和SDA信号,看是否有正常的I2C通信波形。

使用特权

评论回复
6
狄克爱老虎油| | 2024-8-17 23:56 | 只看该作者
加个延时试试

使用特权

评论回复
7
冰春彩落下| | 2024-8-21 22:01 | 只看该作者
在使用STM32F103RBT芯片进行I2C通信时,如果程序卡死在while循环中,并且示波器没有抓到应答信号,这通常意味着I2C通信出现了问题,可能是时序问题

使用特权

评论回复
8
三生万物| | 2024-8-21 23:00 | 只看该作者
检查I2C设备的SCLSDA线是否正确连接到STM32I2C引脚。确保I2C设备的电源和地线连接正确。

使用特权

评论回复
9
一秒落纱| | 2024-8-22 01:00 | 只看该作者
建议检查是否有上拉电阻连接到SCLSDA线。I2C协议要求这两条线必须有上拉电阻(通常为4.7kΩ)。

使用特权

评论回复
10
夜阑风雨| | 2024-8-22 02:00 | 只看该作者
确认I2C的时钟频率设置正确。I2C标准模式下通常为100kHz,快速模式下为400kHz。检查I2C的初始化配置是否正确,包括I2C模式、应答、时钟控制等。

使用特权

评论回复
11
远山寻你| | 2024-8-22 07:00 | 只看该作者
可以确认I2C通信的库函数调用顺序是否正确,包括初始化、启动条件、发送地址、发送数据、停止条件等。

使用特权

评论回复
12
光辉梦境| | 2024-8-22 08:00 | 只看该作者
其实可以检查是否有错误处理机制,例如在发送或接收数据时检查应答信号。确认I2C通信的地址是否正确,包括7位地址和读/写位。

使用特权

评论回复
13
淡漠安然| | 2024-8-22 09:00 | 只看该作者
使用调试器(如ST-Link)连接到STM32,设置断点,逐步执行代码,观察变量和寄存器的状态。

使用特权

评论回复
14
江河千里| | 2024-8-22 11:00 | 只看该作者
在关键步骤(如发送地址、发送数据)后添加调试输出(如串口打印),以便跟踪程序执行情况。使用示波器观察SCLSDA信号,确认信号波形是否符合I2C协议要求。

使用特权

评论回复
15
别乱了阵脚| | 2024-8-22 13:00 | 只看该作者
如果I2C设备没有正确上电或初始化,可能会导致没有应答信号。

使用特权

评论回复
16
暖了夏天蓝了海| | 2024-8-22 16:00 | 只看该作者
一般如果I2C设备忙于其他任务或处于错误状态,也可能不会发送应答信号。

使用特权

评论回复
17
花间一壶酒sd| | 2024-8-31 22:05 | 只看该作者
如果出现程序卡死在 while 循环的问题,并且示波器没有捕捉到应答信号,这通常表明存在通信上的问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

341

主题

1694

帖子

3

粉丝