I2C协议介绍
你的电脑或者手机里面有很多小零件,比如传感器、存储芯片等,它们需要互相交流信息。I2C 就是一种让这些小零件互相“聊天”的方式。这种聊天是通过两根线来进行的,就像两个人用一根绳子来传递信息一样。
1. 接线
这两根线叫做:
SCL – 这就像是一个时钟,告诉零件们什么时候该说话。
SDA – 这是用来传递信息的线,就像两个人之间传递的绳子。
当没有人说话的时候,这两根线都会保持在一个高电平的状态,就像绳子被拉直了。这是通过一些小零件(上拉电阻)来实现的,它们确保线路在空闲时不会乱晃。
2. 信号
这些聊天可以有不同的速度,就像人们说话有快有慢一样。I2C 有几种不同的速度,从慢的 100 kbit/s 到快的 3.4 Mbit/s。I 2 C 总线速度范围为标准模式下的 100 kbit/s、快速模式下的 400 kbit/s、快速模式+ 1 Mbit/s 以及高速模式下的 3.4 Mbit/s。
每个零件都有一个独特的地址(每个设备都通过唯一的 7 位或 10 位地址进行识别),就像每个人都有一个名字一样,这样它们就知道什么时候轮到自己说话。
数据传输
信息是打包传递的,就像快递包裹一样。每个包裹里都有收件人的地址、一个读/写命令(告诉对方是要看信还是写信)、一个确认信号(表示信收到了)和信的内容。
该图显示了单个 I 2 C 数据包的结构。
数据包的开始
当主设备(就像聊天的发起者)想要开始聊天时,它会在保持时钟线(SCL)高电平时将数据线(SDA)拉低,这就像说“大家注意,我要开始说话了”。
然后,它会发送一个地址和读/写命令(传输7(或 10)位地址,后跟R/W 位以指示它是读(1)还是写(0)指令)。比如,它可能会对一个传感器说:“嘿,传感器,我是微控制器,我想要读你的温度数据。”
被寻址的从设备(传感器)会通过拉低数据线来回应一个确认信号(拉低 ACK 位),就像说“好的,我知道了,我会给你数据的。”
数据传输
一旦地址被确认,主设备就会继续控制时钟,然后根据读/写命令,主设备或从设备就会开始在总线上发送数据。每发送完一个字节,接收的设备都会发送一个确认信号,就像说“收到”。
数据包的结束
当所有的数据都发送完毕后,数据包就结束了。这可以通过时钟线(SCL)已经高电平,数据线(SDA)在从低变高来识别,就像聊天结束时的一个信号。
3. 引用
https://www.picotech.com/library/knowledge-bases/oscilloscopes/serial-protocol-decoding-i2c