[牛人杂谈] 新唐51内核单片机的I2C是如何处理超时的

[复制链接]
3536|25
burgessmaggie 发表于 2024-2-6 21:56 | 显示全部楼层
可以通过设置I2C_CTL寄存器中的超时控制位来开启或关闭超时中断,以及设置超时时间。当I2C总线通信发生超时后,可以通过查询I2C_STAT寄存器中的超时状态位来确定是否产生了超时中断,从而进行相应的处理。
sdlls 发表于 2024-2-6 22:27 | 显示全部楼层
程序可以进行相应的错误处理,如重发数据、更改通信参数等。
mnynt121 发表于 2024-2-6 23:01 | 显示全部楼层
如果出现超时情况,I2C控制器会产生一个超时中断。
tifmill 发表于 2024-2-6 23:30 | 显示全部楼层
可以通过读取I2C控制器的状态寄存器来判断具体的错误原因
海边浪漫幻象 发表于 2025-9-8 15:27 | 显示全部楼层
新唐 51 内核单片机 I2C 超时处理通常通过定时器实现。使能 I2C 操作前启动定时器,设置超时阈值;若 I2C 传输未在规定时间完成,定时器溢出触发中断,在中断服务程序中复位 I2C 模块,清除状态位,避免死锁。部分型号支持硬件超时检测,可直接配置相关寄存器使能。
我趴在云边 发表于 2025-9-14 13:19 | 显示全部楼层
新唐 51 内核单片机 I2C 无硬件超时机制,需软件实现。可在 I2C 操作(如等待 ACK、数据传输)时,启动定时器计时;若操作未在设定时间内完成(如未收到 ACK、SDA/SCL 线异常),定时器触发中断,中断服务函数中停止 I2C 操作、重置 I2C 模块,避免程序卡死,保障系统稳定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部