I2C中断例程里面这个delay()延时是怎么回事?

2025-08-08 03:49:31

[AT32F437]

I2C中断例程里面这个delay()延时是怎么回事?

[复制链接]

301|6

手机看帖扫描二维码随时随地手机跟帖

星云狂想曲

当前离线

关注TA

发消息

3

主题29

帖子587

积分

高级技术员

高级技术员, 积分 587, 距离下一级还需 413 积分

高级技术员, 积分 587, 距离下一级还需 413 积分

积分587

在线时间3 小时

精华0

注册时间2024-12-17

最后登录2025-7-31

电梯直达

楼主

星云狂想曲|

楼主

|

2025-7-31 10:19

|

只看该作者

|倒序浏览

|阅读模式

I2c, 中断, ST, TI, or

今天在学习AT32F437系列I2C的参考例程时,看到I2C中断方式通讯的例程里面有下面一个延时操作。有人知道为什么吗?

复制/* wait for the communication to end */

if(i2c_wait_end(&hi2cx, I2C_TIMEOUT) != I2C_OK)

{

error_handler(i2c_status);

}

delay_ms(10);

/* start the request reception process */

if((i2c_status = i2c_master_receive_int(&hi2cx, I2Cx_ADDRESS, rx_buf, BUF_SIZE, I2C_TIMEOUT)) != I2C_OK)

{

error_handler(i2c_status);

}上文中的第7行,delay_ms(10)延时处理。

我在单步调试时,看到没有这个延时处理通讯也正常的。

还有人做过类似的测试不??

本主题由 21电子网审核员 于 2025-7-31 10:32 审核通过

使用特权

评论回复

标题置顶

标题高亮

点赞共0人点赞

muyichuan2012

当前离线

关注TA

发消息

215

主题2064

帖子6401

积分

版主

积分6401

在线时间2796 小时

精华4

注册时间2016-10-26

最后登录2025-8-7

打赏0.00受赏10.80

沙发

muyichuan2012|

|

2025-7-31 18:38

|

只看该作者

这个案例是第一笔数据发完了,间隔10ms,发下一笔数据。你可以根据自己应用修改。

使用特权

评论回复

点赞共0人点赞

快乐制造机

当前离线

关注TA

发消息

1

主题177

帖子1031

积分

助理工程师

助理工程师, 积分 1031, 距离下一级还需 969 积分

助理工程师, 积分 1031, 距离下一级还需 969 积分

积分1031

在线时间26 小时

精华0

注册时间2025-3-6

最后登录2025-8-7

板凳

快乐制造机|

|

2025-8-1 10:35

|

只看该作者

这个延时可能是为了确保I2C总线上的信号稳定,防止在连续操作之间产生冲突。即使在单步调试时没有这个延时也能正常通讯,但在实际应用中,特别是在高频率操作时,这个延时可能是必要的。

使用特权

评论回复

点赞共0人点赞

DreamWanderer

当前离线

关注TA

发消息

16

主题30

帖子584

积分

高级技术员

高级技术员, 积分 584, 距离下一级还需 416 积分

高级技术员, 积分 584, 距离下一级还需 416 积分

积分584

在线时间2 小时

精华0

注册时间2024-12-17

最后登录2025-8-4

地板

DreamWanderer|

|

2025-8-1 15:55

|

只看该作者

这个延时 是要的,可以根据自己的速率改,没有的话你可以试试,行不通的。

使用特权

评论回复

点赞共0人点赞

旧时光放映机

当前离线

关注TA

发消息

1

主题172

帖子1016

积分

助理工程师

助理工程师, 积分 1016, 距离下一级还需 984 积分

助理工程师, 积分 1016, 距离下一级还需 984 积分

积分1016

在线时间25 小时

精华0

注册时间2025-3-6

最后登录2025-8-6

5楼

旧时光放映机|

|

2025-8-3 09:28

|

只看该作者

这个延时可能是为了确保I2C总线在一次通信结束后稳定下来,防止立即开始下一次通信时发生冲突。即使在单步调试时没有这个延时也能正常通信,但在实际应用中,为了提高系统的稳定性和可靠性,这个延时是有必要的。

使用特权

评论回复

点赞共0人点赞

暗夜幽灵骑士

当前离线

关注TA

发消息

1

主题171

帖子1013

积分

助理工程师

助理工程师, 积分 1013, 距离下一级还需 987 积分

助理工程师, 积分 1013, 距离下一级还需 987 积分

积分1013

在线时间23 小时

精华0

注册时间2025-3-6

最后登录2025-8-6

6楼

暗夜幽灵骑士|

|

2025-8-3 16:55

|

只看该作者

这个延时可能是为了确保I2C总线在通信结束后稳定下来,避免立即开始下一次通信时产生冲突。虽然你发现没有这个延时也能正常通信,但加上延时可以提高系统的健壮性。

使用特权

评论回复

点赞共0人点赞

作业天敌在此

当前离线

关注TA

发消息

2

主题170

帖子1010

积分

助理工程师

助理工程师, 积分 1010, 距离下一级还需 990 积分

助理工程师, 积分 1010, 距离下一级还需 990 积分

积分1010

在线时间29 小时

精华0

注册时间2025-3-6

最后登录2025-8-7

7楼

作业天敌在此|

|

2025-8-6 08:37

|

只看该作者

这个延时可能是为了确保I2C总线上的信号稳定,防止因为过快的连续操作导致总线冲突。虽然你单步调试时发现没有这个延时也能正常通讯,但为了系统的稳定性和兼容性,还是建议保留这个延时。

使用特权

评论回复

点赞共0人点赞

Posted in 简易世界杯
Copyright © 2088 世界杯历年冠军_世界杯央视 - zhwnj.com All Rights Reserved.
友情链接