打印
[APM32E0]

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

[复制链接]
263|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在应用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,但觉得硬件实现应该更好

使用特权

评论回复
5
神秘低语|  楼主 | 2025-7-10 10:14 | 只看该作者
阳光爆裂 发表于 2025-7-9 19:48
主要用于当出现问题的时候可以恢复总线状态

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

使用特权

评论回复
6
旧时光放映机| | 2025-7-10 12:45 | 只看该作者
SCL低超时和总线空间超时主要是为了确保在I2C总线上通信的可靠性。SCL低超时是指在一定时间内SCL保持低电平,而总线空间超时是指在一定时间内总线没有被任何设备占用。这些超时机制可以防止因总线冲突或设备响应延迟导致的通信错误。

使用特权

评论回复
7
Gfan| | 2025-7-10 18:16 | 只看该作者
虽然总线在空闲时是高电平,但在通信过程中,SCL线被拉低是正常操作。超时机制是为了防止这种“拉低”状态被异常地无限期保持,从而导致整个总线瘫痪。

使用特权

评论回复
8
不想起床喵星人| | 2025-7-12 09:38 | 只看该作者
SCL低超时和总线空间超时是SMBus协议中为了确保通信稳定性而设置的保护机制。SCL低超时是指在SCL线意外保持低电平状态超过规定时间时触发的超时,这可能是由于总线冲突或设备故障导致的。

使用特权

评论回复
9
星云避风港| | 2025-7-17 19:53 | 只看该作者
SMBus协议里面允许I2C从站在一定时间内转换为主站。
估计是怕这个转换会导致I2C总线占用异常吧!

使用特权

评论回复
10
风暴之眸| | 2025-7-24 10:58 | 只看该作者
SMBus的硬件特性是保护机制强一些
在应用里面仍是I2C的那套流程

使用特权

评论回复
11
阳光爆裂| | 2025-7-24 11:09 | 只看该作者
在总线异常的时候,从机可能会拉低总线。

使用特权

评论回复
12
神秘低语|  楼主 | 2025-7-29 17:46 | 只看该作者
Gfan 发表于 2025-7-10 18:16
虽然总线在空闲时是高电平,但在通信过程中,SCL线被拉低是正常操作。超时机制是为了防止这种“拉低”状态 ...

学习到了。
我自己造一下异常情况看看。
谢谢版主。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝