星辰大海不退缩 发表于 2023-3-22 19:00

中颖SH32F9B00的TWI 中断和超时的处理注意事项


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 高电平超时。
页: [1]
查看完整版本: 中颖SH32F9B00的TWI 中断和超时的处理注意事项