标准:bus:i2c:start
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
标准:bus:i2c:start [2025/10/19 16:35] – [硬件设计注意事项] hwwiki | 标准:bus:i2c:start [2025/10/20 09:15] (当前版本) – [信号和连接] hwwiki | ||
---|---|---|---|
行 23: | 行 23: | ||
===== 信号和连接 ===== | ===== 信号和连接 ===== | ||
- | I2C有两个信号,单向的时钟SCL(主 > 从)和双向的数据SDA。连接拓扑如下图[([[https:// | + | I2C有两个信号,单向的时钟SCL(主 > 从)和双向的数据SDA。时钟信号虽由主机提供,但从机有时可以拉低SCL,以便减慢通讯的速度,如等待从机处理完数据后再回复,此功能为时钟扩展,详见[([[https:// |
- | I2C总线允许多主机,但同一时刻只能有一个主机,通过SCL时钟同步和SDA线仲裁来决定谁是主机,其他设备则均为从机。 | + | 连接拓扑如下图[([[https:// |
{{: | {{: | ||
行 32: | 行 32: | ||
{{: | {{: | ||
+ | |||
+ | SCL/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
===== 硬件设计注意事项 ===== | ===== 硬件设计注意事项 ===== | ||
行 37: | 行 43: | ||
==== 上下拉电阻 ==== | ==== 上下拉电阻 ==== | ||
- | 除Ultra-fast mode (UFm)外,均是开漏输出,外部需要加上下拉电阻,阻值范围一般为1~10kΩ,常用为4.7kΩ[([[https:// | + | 除Ultra-fast mode (UFm)外,均是开漏输出,外部需要加上下拉电阻,阻值范围一般为1~10kΩ,常用为4.7kΩ[([[https:// |
==== 地址 ==== | ==== 地址 ==== | ||
行 45: | 行 51: | ||
==== 电平转换 ==== | ==== 电平转换 ==== | ||
- | 主从器件之间是否需要电平转换? | + | 主从器件之间是否需要电平转换[([[https:// |
1.8/ | 1.8/ | ||
+ | |||
+ | ==== 死锁 ==== | ||
+ | |||
+ | 在通讯过程中,当从设备把SDA拉低,而此时主设备异常重启,主设备检测到SDA拉低,认为SDA被占用,同时主设备初始化SCL被拉高,从设备则一直等待SCL被拉低,从而陷入主从设备互锁的状态。 | ||
+ | |||
+ | 解决方案: | ||
+ | * **硬件**:复位主设备的同时,硬件复位从设备 | ||
+ | * **软件**:主设备复位后,控制主设备的SDA和SCL,模拟正常的通讯,使得从设备释放SDA。具体步骤见[[https:// | ||
===== 协议 ===== | ===== 协议 ===== | ||
行 69: | 行 83: | ||
{{: | {{: | ||
+ | |||
+ | ==== I2C、SMBus和PMBus的区别 ==== | ||
+ | |||
+ | **SMBus**:最初开发用于协助电池管理系统,使用I2C硬件,但增加了第二级软件,最终允许器件热插拔,而无需重新启动系统。 | ||
+ | |||
+ | **PMBus**:扩展了SMBus,定义了一组专门用于管理功率转换器的器件命令,暴露了器件的测量电压、电流、温度等属性。 | ||
+ | |||
+ | 一般而言,I2C Primer、SMBus和PMBus器件可以共享总线而不会发生什么大问题。 | ||
+ | |||
+ | 三者之间的具体区别如下[([[https:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
标准/bus/i2c/start.1760862958.txt.gz · 最后更改: 2025/10/19 16:35 由 hwwiki