嵌入式stm32 复习(工作用)---IIC通讯协议 原理部分 2020.2.16

看完下面这篇文章,你应该就能懂IIC的原理了!!!

为什么要复习IIC通讯协议?

1.在单片机普遍使用的当下,我们大部分人用这些协议(iic,spi,can等)时,刚开始只是只知其表不知其里,只是达到会使用这个的程度,用完之后如果没有整理则过段时间就会忘掉,所以写这篇文章达到回顾知识,巩固基础的作用。
2.也是为了即将到来的嵌入式相关方向的面试提前做准备。

废话不多说,接下来开始系统的认识这个并不太复杂的IIC协议!!!

IIC主要特点

其中我觉得比较重要的并且需要我们掌握的,我都在下边列了出来,可能还有几点我没有列出来,主要还是我用IIC协议这一段时间内还没有用到。同时也须注意不是所有产品中都包含所有特性。请参考相关的数据手册,确认该产品支持的I2C功能
● 多主机功能:该模块既可做主设备也可做从设备
● I2C主设备功能
─ 产生时钟
─ 产生起始和停止信号
● 产生和检测7位/10位地址和广播呼叫
● 支持不同的通讯速度
─ 标准速度(高达100 kHz)
─ 快速(高达400 kHz)
● 状态标志:
─ 发送器/接收器模式标志
─ 字节发送结束标志
─ I2C总线忙标志
● 错误标志
─ 主模式时的仲裁丢失
─ 地址/数据传输后的应答(ACK)错误
─ 检测到错位的起始或停止条件
─ 禁止拉长时钟功能时的上溢或下溢
● 2个中断向量
─ 1个中断用于地址/数据通讯成功
─ 1个中断用于错误
● 可选的拉长时钟功能
● 具单字节缓冲器的DMA

IIC通讯流程

先给大家看一张自己画的图片:
在这里插入图片描述接下来较详细的描述下IIC的主机和从机的通讯流程:

1.相信大家在用IIC协议的时候,一般都需要了解从机的寄存器地址,这个地址一般都是16位的,但是我们需要知道IIC传输数据时一般是8位传输的,所以如果主机传输1个字节的数据,需要传送8次,那么16位的话就需要传送2次了。同理,如果主机一直传送数据,那么从机就得一直接收数据。

2.刚开始主机得根据这个从机的地址寄存器(注意:这个寄存器地址一般出厂后就已经设置好了!!!)判断与哪一个从机通信,如果在这个IIC总线上有从机的话,则从机会发出应答信号。

3.然后主机接收到应答信号后开始发送数据到从设备。

4.当从设备接收完数据后,再次发出应答信号。

5.经过n次上述的循环,最终主设备的数据能够全部发往从设备。

6.完成数据传输后,主设备会发送ok指令到从设备,至此从设备与主设备传输数据的过程结束。如果主设备再想传输数据到从设备,那么重复上述操作即可。

IIC通信流

在这里插入图片描述看清这张图需掌握以下几个要点:

1.IIC主模式,IIC接口启动数据传输并产生时钟信号,串行数据传输总是以起始条件开始并以停止条件结束。

2.当通过START位在总线上产生了起始条件,设备就进入了主模式。

3.下降沿:信号从高电平到低电平的跃变动作

4.上升沿:信号从低电平到高电平的跃变动作

5.传输数据时,数据线是将每一位的数据(高电平或者低电平)挂载在IIC总线上的,如果传输的数据是高电平,则数据线(SDA)为高电平,如果传输的数据是低电平,则数据线(SDA)为低电平。

6.当时钟线(SCL)为下降沿时,才会将数据线(SDA)上挂载的高电平或低电平传输到从机,如果传输的是1个字节(8位)的话,以此类推,循环发8次。

7.当数据传输完之后,数据线(SDA)的电平为低电平,则表示从机已经接收完主机发送过来的信号,同时也表示从机接收成功。(注意:这里有的同学可能会想这样一种情况,如果数据线(SDA)在传输第8位时恰好是低电平时,数据线(SDA)的应答信号也是低电平,那最后怎么区别是否这个信号是应答传输完成信号呢? 答案是:大家如果有这种顾虑的话,恰好说明了大家真正理解了上述图中的IIC传输原理,其实并不用考虑这种问题,因为这种信号在每次数据线传输完一位时,芯片内部会强行将该数据线(SDA)电平拉到芯片不能识别的状态,这样这中问题就得到了解决,同时主机也能识别到从机的应答信号了!!!

8.传输起始条件:数据线(SDA)从高电平到低电平,时钟线(SCL)处于高电平

9.传输结束条件:数据线(SDA)从低电平到高电平,时钟线(SCL)处于高电平

下一篇直接上代码,教你如何手写关于IIC协议的代码,敬请期待!!!

看到这里,大家是不是对IIC有了更加深刻的理解,如果感觉这个文章对你有帮助的话,麻烦点个赞呗,哈哈!!!
好了,以上就是我对IIC的理解,可能会有理解不对的地方,如果有,希望大家批评指正,谢谢!!!

发布了10 篇原创文章 · 获赞 20 · 访问量 924

猜你喜欢

转载自blog.csdn.net/qq_40544107/article/details/104339491