stm32中常见的通信协议之IIC

1.IIC总线

IIC总线是飞利浦公司推出的一种串行、半双工的总线协议,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步,IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。
在这里插入图片描述
IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,从而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7位),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的期间增加和删除不影响其他器件的正常工作;IIC总线在通信时总线上发送数据的器件作为发送器,接收数据的器件作为接收器。

2.IIC通信总线通信过程

  1. 主机发送起始信号启用总线。
  2. 主机发送一个字节数据指明从机地址和后续字节的传递方向,发送的一个字节,前7位是指明从机的地址,最后1位是指明数据传输的方向(最后一位写0是主机给从机发,最后一位写1是从机给主机发)。
  3. 被寻址的从机发送应答信号回应主机。
  4. 发送器发送一个字节数据。
  5. 接收器发送应答信号回应发送器。
    …(循环4、5步)
  6. 通信完成后主机发送停止信号释放总线。

3.IIC总线寻址方式

主机在发送起始信号后必须先发送一个字节的数据,该数据前7位时从机的地址信息,后1位表示后续字节的传送方向。
在这里插入图片描述

4.IIC的起始信号和停止信号

SCL为高电平,SDA由高变低表示起始信号。
SCL为高电平,SDA由低变高表示停止信号。
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后,总线处于空闲状态。

5.字节的传送与应答

IIC总线通信时,每次必须发送一个字节即8位,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后,接收器必须发送1位应答来回应发送器,即一帧有9位。
如果接收器接收到信号回应应答,那么接收器向发送器发送低电平数据,如果没有接收到信号,那么就回应高电平。
在这里插入图片描述

6.IIC的同步信号

IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间,接收器从数据线上读取一位数据,在此期间数据线上的信号不允许变化,必须保持稳定。这样就可以通过SCL信号来一位一位在发送器和接收器之间传输数据,这样就能很好地区分发送器向接收器发送的是01信号还是0011信号。
当发送器将一个字节的数据发送完成后,SCL会再次变低,当SCL变低后,接收器此时可以将信号进行变化,来应答发送器,如果SCL稳定高电平以后,接收器想要应答,那么接收器就可以变为低电平,如果不想应答,就变为高电平。

7.典型的IIC时序

图片备注:
阴影部分表示数据由主机向从机传送,无阴影部分表示从机向主机传送;A表示应答,A非表示非应答,S表示起始信号,P表示停止信号。

1.主机向从机发送数据
在这里插入图片描述
主机发送起始信号,后发送7位从机地址和传送方向0,后从机向主机发送应答信号,后主机向从机发送数据。当发送到最后一个字节的时候,有两种情况:

  • 主机不再向从机发送信号,当主机向从机发送完最后一个字节数据后,从机应答,主机随后发送停止信号,此次通信结束。
  • 从机不再向接收信号,此时,主机向从机接收完最后一个信号以后,从机不再发送应答信号,随后主机发送停止信号,通信结束。

2.从机向主机发送数据
在这里插入图片描述
主机发送起始信号,后发送7位从机地址和传送方向1,后从机向主机发送应答信号,后从机向主机发送数据,主机发送应答信号。当从机发送到最后一个字节后,若主机不行再接收数据,那么主机就不会发送应答信号,主机随机发送停止信号。

3.主机先向从机发送数据,然后从机再向主机发送数据
在这里插入图片描述
这样数据传输方向不同的时候,第一次主机向从机发送信号后,不用发送停止信号,(不发送停止信号的话,IIC总线就不会被释放,这样就可以保持数据传递方向变化后的传送。)直接发送起始信号,开启下一次的数据传输。

8.stm32中IIC的实现方式

在stm32中的固件库函数中,其实没有多少IIC的库函数,就三个库函数,还是用来获取标志位或者清除标志位的,所以,这些库函数并不能帮助我们实现IIC起始信号、停止信号以及数据的传输的内容,所以对于起始信号、停止信号和数据传输需要我们自己写函数来实现。
具体的实现方式我会在后期专门写一篇博客来进行实现。

总结:
以上内容就是我对IIC知识的一些理解,如果有不妥的地方,请各位大佬批评指正,不胜感激!!!!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值