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

[复制链接]
 楼主| 神秘低语 发表于 2025-7-9 11:52 | 显示全部楼层 |阅读模式
在应用APM32E030时,看到I2C章SMBus超时管理章节中有Ttimeout, Tlow.sext和Tlow.mext三个超时时间标记。以Ttimeout为例,其为检测时钟低超时,则对TTE**寄存器中的IDLECLKTO位进行赋值操作。
极海_SMBus超时.jpg

我的问题是:这里面怎么有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线被拉低是正常操作。超时机制是为了防止这种“拉低”状态 ...

学习到了。
我自己造一下异常情况看看。
谢谢版主。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

15

帖子

0

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