[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人点赞