分享

嵌入式基础1: I2C

 TangMouXiong 2021-05-20

1.简介

I2C(Inter-IntegratedCircuit),是一种串行通信总线,用于连接微控制器及其外围设备,实现主控制器和从器件间的主从双向通信,是一种同步半双工通信(两端时钟频率一致,双向通信,但不能同时进行数据收发)。

2.原理

I2C通信属于串行通信,具有两根串行信号线:数据线(SDA),时钟线(SCL)。如下图所示,主控制器与从器件(一个或多个)都通过两根信号线连接,信号线上主机和从机都可以扮演发送器和接收器的角色。为确保传输过程的指向准确性,每个接到I2C总线上的器件都有唯一的地址(7位从器件专用地址码),可实现制定从机的定向传输与群发传输。


2.1信号类型

同时,为确保传输稳定,所有连接在同一I2C总线上的设备共用一个时钟。I2C总线在传送数据过程中共有以下几种类型信号:

(1)开始信号/结束信号

SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。



(2)应答信号/非应答信号

IIC总线协议规定,每传送一个字节数据后(8bit),都要有一个应答信号以确定数据传送是否被对方收到。即一个字节传输的8个时钟过后的第9个时钟期间,接收器必须回一个ACK应答信号给发送器,这样才能进行数据传输。

应答信号由接受设备产生,在SCL为高电平期间,接受设备将SDA拉低为低电平,表示数据传输正确,产生应答(ACK),SDA拉高则表示数据传输失败,产生非应答位(NACK)。


(3)闲置状态/被占用状态

在主机发送起始信号后,且未发送终止信号期间,总线处于被占用状态。

发送终止信号后,总线处于闲置状态,SCL与SDA同时为高电平。


2.2总线读写流程

I2C总线进行数据传送时,SCL时钟信号为高电平期间,SDA数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。当一个字节按数据位从高位到低位的顺序传输完后,紧接着从机将拉低SDA线,回传给主设备一个应答位ACK,此时才认为一个字节真正的被传输完成,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

I2C总线写通信过程:

主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

发送一个地址字节(8bit),其中bit0-6位为从机地址,存放从机唯一地址;bit7位为读写位(R/W),0表示write主机->从机,1表示read从机->主机;

主机发送地址时,总线上每个从机都会将7位地址与自己的地址进行比较,若相同,则将匹配成功,发送应答信号(ACK),确定发送器和接收器;

主机收到ACK后开始发送第一个字节(Command),对应从机中要写入的寄存器;

从机接收到Command后,从机发送ACK;

主机收到ACK后开始发送第一个数据字节:bit0-7(8bit数据,高到低),从机收到数据后,发送应答ACK;

继续发送数据,n帧;

主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;


I2C总线读通信过程:

主机产生START信号,随后发送从机地址(7bit)+0(Write);

*方向仍然是写,待接收到从机发送的ACK应答后,配对成功。

主机接收到ACK后,发送8bit内存地址(Command对应从机相应寄存器地址),从机接收到后,内部寻址并提取数据,返回ACK;

主机接收到ACK后,重新产生START信号,再一次发送从机内存地址,(7bit)+1(Read),从机接收到后返回ACK;

*方向设置为读,主机设置为接收模式

主机接收到ACK后,做好接收从机信息的准备,现在即可接收1bit的数据。

*主机不向从机发送应答信号,接收完毕后直接发起终止信号。

主机接收全部数据后,产生STOP信号,终止通信,总线变为闲置状态。


3.应用实例:I2C控制温感IC

以温度传感器MAX1617A为例,对照手册可查找到以下数据:

Command寄存器对照表如下,可根据Command表查找从机对应寄存器地址。


温度数据返回格式如下所示:


通过以上数据,我们即可有思路,对照写入读写过程:

写入时,输入Command使用:0x0B,0x0C写入温度上限与下限值;

读取时,输入Command使用:通过Command0x0B,0x0C写入温度上限与下限值;

逻辑分析仪数据采样如下所示:

写入过程:


0x30为从机地址0x18<<1+读写位(0);

0x0B为Command,对应从机寄存器存放地址;

0x00位将写入的数据;

波形如下所示:




读取过程:

读当前温度


读过程中,方向先为写入,后为读取



读温度上限:




3.读温度下限:




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多