IIC

1、概述

        IIC总线是飞利浦公司发明的串行同步半双工通信总线。共有两根线,串行时钟线(SCL)和串行数据线(SDA),数据线可以实现数据的双向传输,IIC总线上的设备由主器件和从器件的区别,可以实现“一主多从”。每个从器件都有其唯一的器件地址,主器件与从器件之间的通信就是依赖唯一器件地址实现的。

2、通信协议

2.1 时序信号

空闲信号:时钟线与数据线都保持高电平。

起始信号:起始信号代表一个完整时序的开始,SCL时钟线保持高电平,SDA数据线经历了一个下降沿由高变低的跳变,生成一个起始信号。

结束信号:结束信号代表一个完整时序的结束,SCL时钟线保持高电平,SDA数据线经历了一个上升沿由低变高的跳变,生成一个结束信号。

应答信号:应答信号在8位数据后产生,表示数据接收情况,应答信号分为两种,分别是“应答信号”和“非应答信号”。

2.2 数据传输

        SCL时钟线上的每一个脉冲信号,都会同时在SDA数据线上传输一个位的数据,IIC每次发送数据的字长为1个字节(8位),数据位由高(MSB)到低(LSB)传输。SDA数据线的状态表示需要传输的数据,高电平表示数字“1”,低电平表示数字“0”。SCL时钟线为高电平时,SDA数据线必须保持数据稳定(不允许数据更改),SCL时钟线为低电平时,SDA数据线可以进行电平改变(数据变化)。上升沿采集数据,下降沿准备数据。

 2.3 控制字节

        在起始信号之后,必须是器件的控制字节(也称为4+3+1)。控制器字节的作用是主器件找到需要通信的从器件,并且告诉从器件接下来需要执行的动作。控制字节是由7位地址+1位读写控制位组成。读写控制位如果为“0”,表示写操作,如果为“1”表示读操作。

 3、软件模拟IIC时序

/*空闲信号*/
SCL_H;       // 拉高SCL时钟线
SDA_H;       // 拉高SDA数据线

/*起始信号*/
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况
SDA_H;       // 拉高SDA数据线
SCL_H;       // 拉高SCL时钟线
IIC_Dealy    // 4.7us延时,SCL时钟线拉高后至少维持4.7us才能拉低SDA
SDA_L;       // 拉低SDA数据线,出现下降沿表示起始信号
IIC_Dealy    // 4.0us延时,SDA数据线产生起始信号后,需要维持4.0us
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况

/*结束信号*/
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况
SDA_L;       // 拉低SDA数据线
SCL_H;       // 拉高SCL时钟线
IIC_Dealy    // 4.0us延时,SCL时钟线拉高后至少维持4.0us才能拉高SDA
SDA_H;       // 拉高SDA数据线,出现上升沿表示结束信号
IIC_Dealy    // 4.7us延时,结束信号和下一个起始信号之间至少间隔4.7u

/*发送应答信号*/
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况
IIC_Dealy    // 4.7us延时,SCL时钟线的低电平必须保持4.7us宽度
SDA_L/H;     // 拉低SDA数据线,产一个应答信号, 拉高SDA数据线,产一个非应答信号
SCL_H;       // 拉高SCL时钟线,传输应答信号
IIC_Dealy    // 4.0us延时,SCL时钟线的高电平必须保持4.0us宽度 
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况

/*检测应答信号*/
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况 
IIC_Dealy    // 4.7us延时,SCL时钟线的低电平必须保持4.7us宽度
SCL_H;       // 拉高SCL时钟线,传输应答信号
IIC_Dealy    // 4.0us延时,SCL时钟线的高电平必须保持4.0us宽度 
Read_SDA     // 读取SDA数据线电平状态,高电平表示非应答,低电平表示应答
SCL_L;       // 拉低SCL,防止改变数据线发送以外情况

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值