嵌入式硬件之IIC

IIC硬件连接

  • SCL : 时钟线
  • SDA : 数据线

IIC是一种半双工通信协议,输入输出数据都是在SDA上传输,具体是输入还是输出靠IIC开始第一次发送的地址字节的最后一个bit决定,
IIC是真正的多主机总线,IIC可以在通信中切换主机,如果有多个主机争抢总线,会由总线仲裁防止数据总线SDA的数据被破坏
IIC硬件上SCL、SDA必须上拉到高电平(因为协议中高电平意味着空闲状态),上拉电阻、负载电容(最大400pf)在一定范围内影响了最大传输速率,一般最大传输速率最大100kb/s,快速模式下400kb/s。

时钟靠SCL来同步,时钟高低电平时间不固定。

IIC协议

数据SDA只有在时钟SCL为低电平的时候可以改变,在高电平期间必须无条件保持稳定(否则会被识别为起始或者结束信号)。

  1. 起始位 :在SCl为高电平期间,SDA拉低,起始数据传输
  2. 数据位 :在SCL为低电平期间可以随意改变SDA的值,在SCL位高电平的时候,SDA必须保证稳定,将1bit发送出去
  3. 结束位 :在SCl为高电平期间,SDA拉高,结束数据传输
  4. 应答位 :当主机向从机发送完一个byte,主机总是需要等待从机回答一个应答信号,以确定从机收到了数据,时钟任由主机提供,如果,应答bit为0,表示应答,应答bit为1表示非应答。

由于IIC是半双工协议,需要在写入设备地址的时候就确定工作方向,如MPU6050设备地址为0x68的时候,需要读取的时候发送地址为 0x68 << 1 + 1 ,需要写的时候发送地址为 0x68 << 1 + 0 。

需要特别注意的是有些IIC设备(MCU的IO)内部集成了上拉电阻,有些则没有,或者很弱,所以为了保险起见,所有IIC设备的SCL、SDA必须外接上拉电阻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值