九层妖塔 起于垒土
蓝桥杯串行总线I2C
一、I2C总线概述
1、I2C总线介绍
●两根线:串行数据SDA(Serial Data)和串行时钟SCL(Serial Clock)。
●三种模式:标准模式(100Kbps),快速模式(400Kbps),高速模式(3.4Mbps)。
●寻址方式:7位和10位
●CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,即接通需要控制的电路;数据码是通信的内容。
2、I2C总线硬件结构图
●I2C总线只有两根双向信号线。
●总线上的各器件都采用漏极开路结构与总线相连,因此SDA和SCL均需上拉电阻,总线在空闲状态下保持高电平,连接到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线与关系。
●I2C总线支持多主和主从两种工作方式。
●在主从工作方式中,系统只有一个主机,一般由单片机或其微处理器充当,其他器件都是具有I2C总线的外围从器件。主机启动数据的发送(发出启动信号),产生时钟信号,发出停止信号。
3、数据位的有效性规定
●I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
4、I2C总线通信格式
●I2C总线上进行一次数据传输的通信格式,即I2C总线的完整时序。
●当主控器接收数据时,在最后一个数据字节,必须发送一个非应答信号,使受控器释放数据线,以便主控器产生一个停止信号来终止总线的数据传送。
5、I2C总线的写操作
●I2C总线的写操作就是主控器件向受控器件发送数据。
●主控器件会对总线发送起始信号;
●紧跟着第一个字节的8位数据,7位从地址(受控器件的地址)+1位受控器件约定的数据方向位,“0”为写;
●之后是一个受控器件的应答信号;
●之后是第二个字节的8位数据,(控制字节)多半是受控器件的寄存器地址;
●之后是要发送的数据,当数据发送完就是一个应答信号;
●每启动一次总线,传输的字节数没有限制;
●一个字节地址或一个字节数据过后的第九个脉冲是受控器件的应答信号;
●当数据传送完之后由主控器件发出停止信号来停止总线。
6、I2C总线的读操作
●I2C总线的读操作指受控器件向主控器件发送数据。
●由主控器件发出起始信号;
●前两个字节与写操作相同(地址细节&控制字节);
●之后,重新启动总线,改变传送数据的方向。 第二次启动总线后的数据方向为读,即为“1”;
●之后就是要接受的数据;
●前面三个字节的数据方向均指向受控器件,所以应答信号也由受控器件发出;
●后面要接受的N个数据则指向主控器件,所以应答信号应由主控器件发出,当N个数据接收完成之后,主控器件应发出一个非应答信号,告知受控器件数据接收完成,不用再发送;
●最后的停止信号同样由主控器件发出。
二、单片机模拟I2C总线通信
1、启动信号
2、应答信号
应答信号由接收设备产生。
主机应答_主机无应答_检查应答