[其它应用] 中颖SH32F9B00的TWI 中断和超时的处理注意事项

[复制链接]
4036|11
 楼主| 星辰大海不退缩 发表于 2023-3-22 19:00 | 显示全部楼层 |阅读模式

SH32F9B00 的 TWI 有 3 个中断源:通讯中断、总线超时、SCL 高电平超时。对应的三个中断标志分别
是 TWINT、TOUT、TFREE。

SH32F9B00 的总线超时(TOUT)功能和 SCL 高电平超时(TFREE)功能是恒开的,无法关闭。


TOUT 是 SCL 低电平超过一定时间后发生,表示某个主机或从机能够把总线时钟拉低的时间上限,超过
此时间将产生总线超时事件,硬件自动释放总线,并送出相应标志(ETOT 使能时)。

【注意】TOUT 超时功能是固定开启的,如果长时间拉低 SCL,必然会发生 TOUT 事件。TOUT 的
默认超时时间是 25000 个 TWI 时钟。
TFREE 是 SCL 高电平超过一定时间后发生,表示总线处于“空闲”状态,发生 TFREE 事件后,硬件自动
释放总线,并送出相应标志(EFREE 使能时)。

【注意】TFREE 超时功能是固定开启的,如果长时间拉高 SCL(因为 SCL 默认上拉,此状态表示
SCL 空闲),必然会发生 TFREE 事件。TFREE 的默认超时时间是 HOC×256 个 TWI 时钟(HOC 默认
值 255)。

【注意】ETOT 和 EFREE 是控制 TOUT 和 TFREE 事件发生时是否产生超时标志的使能位,不是模块功
能使能位(再次强调:模块功能是固定开启的)。只有产生了超时标志才能产生 TWI 中断,如果 ETOT 和
EFREE 关闭,标志不会产生,中断自然也不会发生。

【注意】TWINT 是通讯中断标志,TWI 的状态改变时会引起置位,但从其他状态进入 F8 状态不会引起
置位。

【注意】TWINTE 是总中断使能位。
Candic12e 发表于 2023-5-19 15:20 | 显示全部楼层
在这个芯片中,总线超时、SCL高电平超时和SCL低电平超时是硬件中断,无法通过软件关闭
Allison8859 发表于 2023-5-19 16:31 | 显示全部楼层
模块功能是固定开启的
Emily999 发表于 2023-5-19 17:46 | 显示全部楼层
只有产生了超时标志才能产生 TWI 中断
Charlene沙 发表于 2023-5-20 07:22 | 显示全部楼层
如果ETOT和EFREE关闭,标志不会产生,中断自然也不会发生
Belle1257 发表于 2023-5-20 12:00 | 显示全部楼层
TWINTE标志是总中断使能位。当该标志被置位时,所有的总线中断都会被使能
OKAKAKO 发表于 2023-11-12 18:58 | 显示全部楼层
TWINTE 是总中断使能位
szt1993 发表于 2023-11-12 20:32 | 显示全部楼层
SH32F9B00 的 TWI 有 3 个中断源:通讯中断、总线超时、SCL 高电平超时。
绒兔星球 发表于 2025-8-30 14:59 | 显示全部楼层
处理中颖 SH32F9B00 的 TWI 中断和超时需注意:使能 TWI 中断后,在服务程序中及时处理状态码,清除中断标志;超时需配置合适超时值,超时中断触发后复位 TWI 模块,避免死锁;通信前初始化引脚和时序,确保从机响应,处理异常时恢复总线状态,防止影响后续通信。
樱花树维纳斯 发表于 2025-9-8 18:12 | 显示全部楼层
中颖 SH32F9B00 的 TWI 中断中断和超时处理需注意:中断服务函数需快速响应,优先清除中断标志;区分多种中断源(如接收完成、发送完成);超时需配置定时器,超时后复位 TWI 模块;处理时避免死锁,可加状态机管理;确保通信时序,防止总线竞争导致的异常。
暖茶轻语 发表于 2025-9-12 12:35 | 显示全部楼层
了解TOUT和TFREE的超时时间设置对于优化通信效率很有帮助
灰色与青 发表于 2025-10-13 10:55 | 显示全部楼层
除 51 编译器外,MSP430 编译器、PIC 编译器也区分位地址和字节地址,通过专用指令或关键字操作位变量,适配其架构的位操作需求,优化资源利用。
中颖 SH32F9B00 的 TWI 中断需及时清除标志,避免重复触发;超时处理要设合理阈值,超时后复位 TWI 模块,恢复通信,需防止中断嵌套导致状态混乱。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

302

主题

2838

帖子

6

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