I2C通讯协议介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
它是同步通信的一種特殊形式,具有接口 線少,控制方式簡單,器件封裝形式小, 通訊效率高等有點。同時,系統的更改和 擴充及其容易。
I2C总线特点
1.只要求两条总线线路 一条串行数据线SDA和一条串行时钟线SCL 2.每个连接到总线的器件都可以通过唯一的地址和一直存在的 简单的主机 /从机关系软件设定地址:主机可以作为主机发 送器或主机接收器 3.它是一个真正的多主机总线 如果两个或更多主机同时初始化 数据传输可以通过冲突检测和仲裁防止数据被破坏 4.串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s 5. 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制
常见波形分析
Βιβλιοθήκη Baidu
1.起始信号 2.主从设备竞争I2C总线 主设备传送完数据释 放总线电压拉高,从设 备发送应答信号出现半 个波形。 3.主设备读入ACK信号 释放总线电平拉高。
5.主机发送信号1后从机 出现应答信号所以出现第 一个下降沿,然后由于主 机传输数据结束后释放总 线输出高电平因而产生尖 峰。 6.应答信号ACK结束,由 于之前主机释放总线SDA 信号线再次被拉高同(3)
•启动信号START后紧接着发送一个地址字节,其中 7位为被控器件的地址码,一位为读/写控制位 R/W,R. /W位为0表示由主控向被控器件写数据, R/W为1表示由主控向被控器件读数据; •当被控器件检测到收到的地址与自己的地址相同 时,在第9个时钟期间反馈应答信号; •每个数据字节在传送时都是高位(MSB)在前;
I2C总线空闲的时候,两条信号线应该维持高电平。否则,上拉电阻上就 会耗电。
• 连接两个电压不同部分的双向电平转换器电路
I2C总线协议 STOP & STAR
SCL是高电平,SDA从高电平向低电平切换表示 起始条件 SCL是高电平,SDA从低电平向高电平切换表示 停止条件
• 起始和终止信号都是由主机发送的,在起 始信号产生后总线就被处于占用的状态; 在终止信号产生后总线就处于空闲的状态。
I2C串行總線的原理
1、总线的概述 2、总线结构 3、总线传输协议 4、常见波形分析
I2C串行總線概述
• I2C(Inter-Integrated Circuit)總線是由 PHILIPS公司開發的兩線式串行總線,用于 连接微控制器及其外圍設備。是微電子通 信控制領域廣泛采用的一種總線標準。
I2C串行總線優點
• 当被控器件检测到主控发送的地址与自己的地址 相同时发送一个应答信号(ACK); • 主控收到ACK后开始发送第一个数据字节; • 被控器收到数据字节后发送一个ACK表示继续传 送数据,发送NACK表示传送数据结束; • 主控发送完全部数据后,发送一个停止位STOP, 结束整个通讯并且释放总线;
• I2C上拉电阻的范围很宽,主要是根据功耗, 上升时间等确定。I2C的上拉电阻可以是 1.5K,2.2K,4.7K,电阻的大小对时序有 一定的影响,对信号的上升时间和下降时 间也有影响,一般接1.5K或2.2K。
• 总的来说:电源电压控制了上拉电阻的最 小值;负载电容(总线电容)控制了上拉 电阻的最大值。
I2C数据传送
•SCL线呈现高电平期间,SDA线上的电平必 须保持稳定,低电平表示0(此时的线电压 为地电压),高电平表示1(此时的电压由元 器件的VDD决定)。只有在SCL线为低电平期 间,SDA上的电平允许变化。
读通讯过程
• 1. 主控在检测到总线空闲的状况下,首先发送一个 START信号掌管总线; • 2. 发送一个地址字节(包括7位地址码和一位R/W 1); • 3. 当被控器件检测到主控发送的地址与自己的地址相同 时发送一个应答信号(ACK); • 4. 主控收到ACK后释放数据总线,开始接收第一个数据 字节; • 5. 主控收到数据后发送ACK表示继续传送数据,发送 NACK表示传送数据结束; • 6. 主控发送完全部数据后,发送一个停止位STOP,结 束整个通讯并且释放总线
• 每个接到I2C总线上的器件(可以是微处理 器——MCU,LED驱动器,存储器或键盘接 口。)都是有唯一的地址,而且都可以作 为一个发送器或接收器(由器件的功能决 定)。主机与其它器件间的数据传输可以 是由主机发送数据到其它器件,这时主机 即为发送器,接受数据的器件则为接受器。 • 在多主机系统中,可能同时有几个主机企 图启动总线传输数据。为了避免混乱,I2C 总线要通过总线仲裁决定由哪一台主机控 制总线——支持多主控模块,但同一时刻 只允许有一个主控
SCL&SDA结构
• 连接到总线的输出级是漏极开路或者集电极开路
I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉电阻。
因为 ROFF 109 , RON 1K 只要RON RD ROFF , 则: 当VI VIL VGS (th) T截止 VO VOH VDD 当VI VIH VGS (th) T导通 VO VOL 0 所以 MOS管D S间相当于一个受 VI 控制的开关。
I2C数据的中断 • 接收器收到一个完整的数据字节后,有可 能需要完成一些其它工作,如处理内部中 断服务等,可能无法接受下一个字节,这 时候接收器可以将SCL线拉成低电平,从而 使主机处于等待状态,直到接收器准备好 接受下一个字节时,再释放SCL线使为高电 平,使数据传输继续。
总线的仲裁
• 假设在某一瞬间两个主器件1和2同时发送 启动信号线DATA1和DATA2,由于I2C总 线的“线与”特性,使得SDA数据波形是 DATA1和DATA2的结合。主机在发送数据 的同事还要对自己的输出端的信号电平进 行抽检,只要检测的结果和自己的预期相 符则继续占用总线。实际系统采用低电平 优先的仲裁原则将总线判给最先出现低电 平的主机。
I2C总线特点
1.只要求两条总线线路 一条串行数据线SDA和一条串行时钟线SCL 2.每个连接到总线的器件都可以通过唯一的地址和一直存在的 简单的主机 /从机关系软件设定地址:主机可以作为主机发 送器或主机接收器 3.它是一个真正的多主机总线 如果两个或更多主机同时初始化 数据传输可以通过冲突检测和仲裁防止数据被破坏 4.串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s 5. 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制
常见波形分析
Βιβλιοθήκη Baidu
1.起始信号 2.主从设备竞争I2C总线 主设备传送完数据释 放总线电压拉高,从设 备发送应答信号出现半 个波形。 3.主设备读入ACK信号 释放总线电平拉高。
5.主机发送信号1后从机 出现应答信号所以出现第 一个下降沿,然后由于主 机传输数据结束后释放总 线输出高电平因而产生尖 峰。 6.应答信号ACK结束,由 于之前主机释放总线SDA 信号线再次被拉高同(3)
•启动信号START后紧接着发送一个地址字节,其中 7位为被控器件的地址码,一位为读/写控制位 R/W,R. /W位为0表示由主控向被控器件写数据, R/W为1表示由主控向被控器件读数据; •当被控器件检测到收到的地址与自己的地址相同 时,在第9个时钟期间反馈应答信号; •每个数据字节在传送时都是高位(MSB)在前;
I2C总线空闲的时候,两条信号线应该维持高电平。否则,上拉电阻上就 会耗电。
• 连接两个电压不同部分的双向电平转换器电路
I2C总线协议 STOP & STAR
SCL是高电平,SDA从高电平向低电平切换表示 起始条件 SCL是高电平,SDA从低电平向高电平切换表示 停止条件
• 起始和终止信号都是由主机发送的,在起 始信号产生后总线就被处于占用的状态; 在终止信号产生后总线就处于空闲的状态。
I2C串行總線的原理
1、总线的概述 2、总线结构 3、总线传输协议 4、常见波形分析
I2C串行總線概述
• I2C(Inter-Integrated Circuit)總線是由 PHILIPS公司開發的兩線式串行總線,用于 连接微控制器及其外圍設備。是微電子通 信控制領域廣泛采用的一種總線標準。
I2C串行總線優點
• 当被控器件检测到主控发送的地址与自己的地址 相同时发送一个应答信号(ACK); • 主控收到ACK后开始发送第一个数据字节; • 被控器收到数据字节后发送一个ACK表示继续传 送数据,发送NACK表示传送数据结束; • 主控发送完全部数据后,发送一个停止位STOP, 结束整个通讯并且释放总线;
• I2C上拉电阻的范围很宽,主要是根据功耗, 上升时间等确定。I2C的上拉电阻可以是 1.5K,2.2K,4.7K,电阻的大小对时序有 一定的影响,对信号的上升时间和下降时 间也有影响,一般接1.5K或2.2K。
• 总的来说:电源电压控制了上拉电阻的最 小值;负载电容(总线电容)控制了上拉 电阻的最大值。
I2C数据传送
•SCL线呈现高电平期间,SDA线上的电平必 须保持稳定,低电平表示0(此时的线电压 为地电压),高电平表示1(此时的电压由元 器件的VDD决定)。只有在SCL线为低电平期 间,SDA上的电平允许变化。
读通讯过程
• 1. 主控在检测到总线空闲的状况下,首先发送一个 START信号掌管总线; • 2. 发送一个地址字节(包括7位地址码和一位R/W 1); • 3. 当被控器件检测到主控发送的地址与自己的地址相同 时发送一个应答信号(ACK); • 4. 主控收到ACK后释放数据总线,开始接收第一个数据 字节; • 5. 主控收到数据后发送ACK表示继续传送数据,发送 NACK表示传送数据结束; • 6. 主控发送完全部数据后,发送一个停止位STOP,结 束整个通讯并且释放总线
• 每个接到I2C总线上的器件(可以是微处理 器——MCU,LED驱动器,存储器或键盘接 口。)都是有唯一的地址,而且都可以作 为一个发送器或接收器(由器件的功能决 定)。主机与其它器件间的数据传输可以 是由主机发送数据到其它器件,这时主机 即为发送器,接受数据的器件则为接受器。 • 在多主机系统中,可能同时有几个主机企 图启动总线传输数据。为了避免混乱,I2C 总线要通过总线仲裁决定由哪一台主机控 制总线——支持多主控模块,但同一时刻 只允许有一个主控
SCL&SDA结构
• 连接到总线的输出级是漏极开路或者集电极开路
I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉电阻。
因为 ROFF 109 , RON 1K 只要RON RD ROFF , 则: 当VI VIL VGS (th) T截止 VO VOH VDD 当VI VIH VGS (th) T导通 VO VOL 0 所以 MOS管D S间相当于一个受 VI 控制的开关。
I2C数据的中断 • 接收器收到一个完整的数据字节后,有可 能需要完成一些其它工作,如处理内部中 断服务等,可能无法接受下一个字节,这 时候接收器可以将SCL线拉成低电平,从而 使主机处于等待状态,直到接收器准备好 接受下一个字节时,再释放SCL线使为高电 平,使数据传输继续。
总线的仲裁
• 假设在某一瞬间两个主器件1和2同时发送 启动信号线DATA1和DATA2,由于I2C总 线的“线与”特性,使得SDA数据波形是 DATA1和DATA2的结合。主机在发送数据 的同事还要对自己的输出端的信号电平进 行抽检,只要检测的结果和自己的预期相 符则继续占用总线。实际系统采用低电平 优先的仲裁原则将总线判给最先出现低电 平的主机。