4.2 通信协议(二)

一、I2C 协议:两线制,同步通信,半双工,多主多从

特点:

1)两线制总线:I2C仅使用两条线——串行数据线(SDA)串行时钟线(SCL)进行通信,有效降低了连接复杂性。

2)多主多从设备支持:I2C支持多个主设备和多个从设备连接到同一总线上。每个设备都有唯一的地址。

3)可变的时钟速率:I2C总线支持不同的速率模式,如标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。

4)同步通信:I2C是一种同步通信协议,数据传输由时钟信号(SCL)来控制。

5)简单的连接:I2C通信对硬件的要求比较低,很容易在微控制器和外围设备间实现连接。

6)地址分配:每个I2C设备都通过一个7位(实际可用的有 112 个设备)或10位的地址来识别,这使得总线上可连接多个设备。

7)阻塞传输:I2C支持阻塞传输机制,即主设备可以在传输过程中控制总线,防止其他设备发送数据。

8)应用广泛:由于其简单和灵活性,I2C被广泛应用于各种电子产品中,如传感器、LCD显示器。

9)总线仲裁和冲突检测:在多主模式下,I2C能够处理多个主设备同时尝试控制总线的情况。

10)低功耗:I2C总线的设计使其成为低功耗的通信方式,适用于电池供电的设备。

通信协议:

1)起始位:SCL 为高电平时,SDA 由高变低表示起始信号。永远是主机发送。

2)停止位:SCL 为高电平时,SDA 由低变高表示停止信号。永远是主机发送。(主机不想发时,在接收到从机 ACK后,发出停止位;从机不想接受时,主机不再发送应答,主机然后发送停止位)当主机想变更数据方向的时候,会在ACK后,直接略过停止位发送起始位。(原因:防止总线被别的设备抢走。)

起始位停止位均由主机发出。

3)字节传送方向位:每个字节必须 8 位,先发高位,再发低位(与 UART 相反)。(0是写,1是读,针对于主机来说)

4)应答位(是一个低电平):发送器每发送完一个字节数据,接收器必须发送 1 位应答位(ACK),即一帧共有 9 位

信号发送时机:在 SCL 为低电平期间,发送器向数据总线上发送一位数据,再此期间数据线上的信号允许发生变化,SCL 为高电平时,接收器从数据线上读取一位数据。并且在 SCL 为高电平期间,SDA 上的信号不允许发生变化。(低电平发送、高电平读取)

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++/嵌入式开发 秋招面经 文章被收录于专栏

一名985硕,在25年秋招中斩获多个C++/嵌入式开发Offer。本专栏将分享我的面经,涵盖C/C++、操作系统、计算机网络、ARM体系与架构、Linux应用/驱动开发、Qt、通信协议及开发工具链等核心内容。

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务