四、SMBus 和 I2C 的使用建议

栏目:汽车资讯  时间:2023-08-06
手机版

  文章参考教程:SMBus协议

  SMBus协议:官网

  ??SMBus 是 I2C 协议的一个子集。

  有关I2C协议可以看这篇:

  【STM32】标准库与HAL库对照学习教程特别篇–IIC通信原理讲解

  全称 System Management Bus,即系统管理总线。

  SMBus 是Intel与Duracell共同制订笔记本电脑所用的智能型电池(SmartBattery)时所研发的接口,首版于1995年发表。SMBus 也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM 通讯设备等等。SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系

  统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这

  样可以节省设备的管脚数。SMBus 是基于 I2C 协议的,SMBus 要求更严格,规定了更多细节与规范。 在这里插入图片描述

  。I2C 协议的范围很广,甚至讨论了高达 12V 的情况,而SMBus规定了在1.8V~5V。。I2C 没有时钟频率限制,一般最常见的是100k、400k,而SMBus规定时钟频率必须在10k~100k内。当设备需要处理内部事情时,可将时钟线拉低,I2C 没有规定拉低时长,而SMBus有规定时限。

  。一个 设备接收到它的设备地址后,I2C 协议没有强制要求必须发出回应信号,而SMBus:强制要求必须发出回应信号。。I2C 没有定义数据的格式,格式由设备来定义,而SMBus 协议明确了数据的传输格式。SMBus 有低功耗的版本 在这里插入图片描述

  只是用来发送一位数据:R/W#本意是用来表示读或写,但是在 SMBus 里可以用来表示其他含义。比如某些开关设备,可以根据这一位来决定是打开还是关闭。

  在这里插入图片描述

  读取一个字节,主设备 接收到一个字节后不需要发出应答信号(上图中 N 表示不回应)。

  在这里插入图片描述

  发送一个字节数据。

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再读数据,读取设备寄存器地址储存的1个字节的数据。

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再读数据,读取设备寄存器地址储存的2个字节的数据。

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再写数据,向设备寄存器地址写1个字节的数据。

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再写数据,向设备寄存器地址写2个字节的数据。

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再读数据,先读到一个字节(Block Count),表示后续要读的字节数,然后读取全部数据

  在这里插入图片描述

  先发数据,发出 芯片内部的寄存器地址,再写数据,先写一个字节(Block Count),表示后续要写的字节数,然后写全部的数据

  在这里插入图片描述

  I2C 协议的 连续读多个数据,与SMBus 的区别是不需要接收读取总的字节数

  I2C 协议的 连续写多个数据,与SMBus 的区别是不需要写入总的字节数

  在这里插入图片描述

  在这里插入图片描述

  先写一块数据,再读一块数据。

  在这里插入图片描述

  PEC 是一种错误校验码,如果使用 PEC,那么在 P 信号之前,数据发送方要发送一个字节的 PEC 码(它是 CRC-8 码)。

  因为很多设备都实现了 SMBus,而不是更宽泛的 I2C 协议,所以优先使用SMBus。即使 I2C 控制器没有实现 SMBus,软件方面也是可以使用 I2C 协议来模拟 SMBus。所以:Linux 建议优先使用 SMBus。

  在这里插入图片描述

上一篇:成年人的世界里,爱情,而已罢了
下一篇:未成年可不可以买车?