关于IIC

IIC通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,SPI和uart为双工。

IIC分为软件IIC(通过IO口来模拟IIC通讯所需要的通信波形,可以自定义IO口),硬件IIC(有对应的IIC电路,控制硬件寄存器实现,效率比较高)。

I2C总线上可挂接的设备数量受总线的最大电容400pF 限制,如果所挂接的是相同型号的器件,则还受器件地址位的限制。

传输速率标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。

SCL,SDA平时空闲状态都由上拉电阻拉高,当SCL高,SDA由高到低,则产生一个起始条件,SCL高,SDA由低到高,则产生一个停止条件(由主机产生)。

在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。

传输有效数据时SDA只能在SCL为低时发生变化,SCL为高时要保持不变,否则就成的开始结束信号。

IIC每次操作都是由主设备主动往从设备读或写,然后从设备回复,从设备的地址一般为7位。

数据格式如下

写:

0:主设备设置起始条件:SCL:1,SDA:1->0;

1:主设备向从设备发送:7位地址+0(写)

2:  从设备回复1位的应答位:低电平

3:主设备发送数据:8位

4:从设备回复1位的应答位:低电平

5:  主设备设置停止条件:SCL:1,SDA:0->1;

读:

0:主设备设置起始条件:SCL:1,SDA:1->0;

1:主设备向从设备发送:7位地址+1(读)

2:  从设备回复1位的应答位:低电平

3:从设备发送数据:8位

4:主设备回复1位的应答位:低电平

5:从设备发送数据:8位

6:主设备回复1位的非应答位:高电平

5:  主设备设置停止条件:SCL:1,SDA:0->1;

如果传向别的iic从设备的时候,不需要停止条件,主设备直接重新产生起始条件并向另一个从设备地址读写数据就可以了,如下:

0:主设备设置起始条件:SCL:1,SDA:1->0;

1:主设备向 从设备1 发送:7位地址+0(写)

2:  从设备1 回复1位的应答位:低电平

3:主设备发送数据:8位

4:从设备1 回复1位的应答位:低电平

5:主设备设置起始条件:SCL:1,SDA:1->0;

6:主设备向从设备2发送:7位地址+0(写)

7:  从设备2回复1位的应答位:低电平

8:主设备发送数据:8位

9:从设备2回复1位的应答位:低电平

10:  主设备设置停止条件:SCL:1,SDA:0->1;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值