串口I2C通信详解介绍(小白初学,浅显易懂,基本知识)

介绍:I2C通讯协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

特点:

1.只需要一根数据线SDA和一根时钟线SCL,SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线

SCL(Serial Clock):串行时钟线,传输CLK信号,一般是主设备向从设备提供

SDA(Serial Data) :串行数据线,传输通信数据

2.实现真正的多主机总线,任何器件既可以作为主机又可以作为从机,但是同一时刻只能有一个主机

3.可以通过外部连线检测,便于系统故障诊断和调试

4.连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s

5.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽

6.接口电路为开漏输出,需通过上拉电阻接电源VCC,当总线空闲时,两根线都是高电平,连接总线的外同器件都是CMOS器件输出级也是开漏电路

数据传输:
发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。

空闲时候:SDA数据线和SCL时钟线都是高电平

开始信号:SCL处于高电平,SDA由高到低

结束信号:SCL处于高电平,SDA由低到高

应答信号:当传输完8位数据以后,在第9个SCL时钟周期

主机释放SDA控制权交给从机,由于上拉电阻的作用,此时该电平为高,但是如果从机正确接受了数据,就会将SDA拉低

发送数据:SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期

非应答信号:如果第9个SCL时钟周期,SDA保持高电平,则代表非应该信号

非应答信号可能是主机发出的也可能是从机产生的

有几种可能:

  1. I2C总线上没有主机所指定地址的从机设备
  2. 从机正在执行一些操作,处于忙状态,还没有准备好与主机通讯
  3. 主机发送的一些控制命令,从机不支持
  4. 主机接收从机数据时,主机产生非应答信号,通知从机数据传输结束,不要再发数据了

通讯特征:

1)串行通信,所有的数据以位为单位在SDA线上串行传输

2)同步通信:通过时钟同步

3)非差分:I2C通信速率不高,且通信距离近,使用电平信号通信。

4)低速率:I2C一般是同一个板子上的两个IC芯片间通信,数据量不大,速率低。速率:几百KHz,速率可能不同,不能超过IC的最高速率。

模式:

标准模式(Standard):100kbps

快速模式(Fast):400kbps

快速模式+(Fast-Plus):1Mbps

高速模式(High-speed):3.4Mbps

超快模式(Ultra-Fast):5Mbps(单向传输)

猜你喜欢

转载自blog.csdn.net/qq_20017379/article/details/120635348

相关文章