神秘低语 发表于 2025-7-9 11:52

SMBus中的超时规范如何理解?

在应用APM32E030时,看到I2C章SMBus超时管理章节中有Ttimeout, Tlow.sext和Tlow.mext三个超时时间标记。以Ttimeout为例,其为检测时钟低超时,则对TTE**寄存器中的IDLECLKTO位进行赋值操作。


我的问题是:这里面怎么有SCL低超时和总线空间超时呢?什么情况下会出现类似的情况?

I2C默认空闲状态不就是高电平嘛!其硬件结构是开漏上拉,也不存在SCL低的情况呀?

风暴之眸 发表于 2025-7-9 18:00

就是一个I2C。
当I2C使用即可

阳光爆裂 发表于 2025-7-9 19:48

主要用于当出现问题的时候可以恢复总线状态

神秘低语 发表于 2025-7-10 10:14

风暴之眸 发表于 2025-7-9 18:00
就是一个I2C。
当I2C使用即可

这个和I2C区别还是挺大的。
我们现在是通过在I2C上面通过软件实现SMBus,但觉得硬件实现应该更好

神秘低语 发表于 2025-7-10 10:14

阳光爆裂 发表于 2025-7-9 19:48
主要用于当出现问题的时候可以恢复总线状态

这个恢复指得什么意思?
总线不是处于空闲态嘛

旧时光放映机 发表于 2025-7-10 12:45

SCL低超时和总线空间超时主要是为了确保在I2C总线上通信的可靠性。SCL低超时是指在一定时间内SCL保持低电平,而总线空间超时是指在一定时间内总线没有被任何设备占用。这些超时机制可以防止因总线冲突或设备响应延迟导致的通信错误。

Gfan 发表于 2025-7-10 18:16

虽然总线在空闲时是高电平,但在通信过程中,SCL线被拉低是正常操作。超时机制是为了防止这种“拉低”状态被异常地无限期保持,从而导致整个总线瘫痪。

不想起床喵星人 发表于 2025-7-12 09:38

SCL低超时和总线空间超时是SMBus协议中为了确保通信稳定性而设置的保护机制。SCL低超时是指在SCL线意外保持低电平状态超过规定时间时触发的超时,这可能是由于总线冲突或设备故障导致的。

星云避风港 发表于 2025-7-17 19:53

SMBus协议里面允许I2C从站在一定时间内转换为主站。
估计是怕这个转换会导致I2C总线占用异常吧!

风暴之眸 发表于 2025-7-24 10:58

SMBus的硬件特性是保护机制强一些
在应用里面仍是I2C的那套流程

阳光爆裂 发表于 2025-7-24 11:09

在总线异常的时候,从机可能会拉低总线。

神秘低语 发表于 2025-7-29 17:46

Gfan 发表于 2025-7-10 18:16
虽然总线在空闲时是高电平,但在通信过程中,SCL线被拉低是正常操作。超时机制是为了防止这种“拉低”状态 ...

学习到了。
我自己造一下异常情况看看。
谢谢版主。
页: [1]
查看完整版本: SMBus中的超时规范如何理解?