【通信协议篇】IIC协议(串行同步半双工 高---->低)学习记录

1.概念:串行的、半双工的总线,主要应用于近距离,低速的芯片之间的通信,IIC有两根线,

        SDA------->数据收发

        SCL------->通信双方的时钟的同步

想这样两个芯片都挂到对应的总线上就可以实现通信

        IIC总线上可以挂很多的器件,这些器件即可以作为主机也可以作为从机,那么总线是如何区分这些器件?通过器件的地址

2.通信的过程:

由主机发起启用总线,这个时候其他器件就会知道总线被占用就不会去启动总线

  1. 主机发送一个字节:字节里面指明要和谁通信和通信的方向是读还是写,这个时候其他器件就回去比较自己的器件地址,看看是不是自己,这个时候确定通信方向之后后面就不能改变通信方向知道通信结束

  2. 从机对比自己是在叫自己之后就会回应主机

  3. 发送器发送数据

  4. 接收器发送回应信号

  5. 不断循环4、5

  6. 主机发起停止信号,释放总线

3.信号

1)起始信号

2)停止信号

3)应答信号

4)发送数据信号:寻址或者数据

4.总线在空闲的时候SDA和SCL都处在高电平

起始:在SCL为高电平时,SDA由高变低

停止:在SCL为高电平时,SDA由低变高

字节发送和应答

        数据为是8位,先发高为再发低位(1表示高,0表示低),之后接收器会发一位应答位(SCL为低的时候发),0表示应答

4.解决同步问题

        比如发送方发送数据1111 0000 接收方怎么知道连续发了几个1几个0,这里解决的方法不同于串口,串口主要是依靠波特率,和每次只能发送一个字节来解决时差问题但是IIC是使用同步解决。

        在SCL为低的时候发送方修改自己的电信号为自己想要发送的信号,在SCL为高的时候接收方就会去总线上读取SDA的数据,这个时候发送方的电信号不能变,不然接收方就不知道你是1还是0,这样就发一个数据位就接收方就收一个bit,不会存在时间误差。

5.典型的IIC时序

1)主机发从机收

2)主机收从机发

3)先主机发几个数从机接收后,想让从机发主机收

        这里重新启动之前之所以没有P是因为,发起停止信号后总线使用权可能被抢走

一般的通信流程是:

        主机发起起始信号---->主机发送目标器件的地址+读写方向--->器件应答------主机发送从机的寄存器地址----->器件应答。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值