IIC协议详解

Posted 若你遇见她

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIC协议详解相关的知识,希望对你有一定的参考价值。

1、什么是iic

        IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了主板、嵌入式系统或手机用以连接低速周边设备而发展。I²C的正确读法为“I平方C”("I-squared-C"),而“I二C”("I-two-C")则是另一种错误但被广泛使用的读法。自2006年10月1日起,使用I²C协议已经不需要支付专利费(摘抄自百度)

2、主要知识

      1、  iic分为两条总线:SDA(数据线) 和SCL(时钟线)。只有一条数据线也决定了它只能进行“半双工”通信。需要通讯的设备挂载在这两条总线上。线上设备都有自己的iic地址。一般地址位有8位(7位是地址位,1位是方向位。 0:主机发,1:主机收)

        2、在起始信号后(调用iic开始函数)  必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。

        3、iic本身不带检验码

        4、启动条件:SCl 高   ,SDA 由高到低

              结束条件:SCl 高   ,SDA 由低到高

        5、传送一字节的数据(一字节为8位),加上应答帧就是9帧。

        6、在传送过程中,当需要改变传递方向时,起始信号和从机地址都被重复一次产生一次,但两次读/写方向位正好相反

        7、空闲状态,两线都是处于高电平状态。

3、通讯过程

主设备产生“Start”条件
“Start”条件由主设备产生,在SCL为高时,将SDA从高电平拉到低电平。

主设备发送地址和数据方向位
主设备发出所要操作的从设备的地址(7位地址)和R/W数据方向位(1位)。

从设备发出ACK信号
如果从设备确认地址正确,那么从设备发送ACK信号到SDA总线。

主设备发送控制寄存器地址
主设备向从设备发送所要写入数据的控制寄存器的地址(8位)。

从设备发送ACK信号

主设备写入数据到寄存器
主设备向被寻址的寄存器发送16位数据的高8位(最重要的位放最前面)。

从设备发送ACK信号

主设备写入数据到寄存器
主设备向被寻址的寄存器发送16位数据的低8位。

从设备发送ACK信号

主设备继续发送更多数据
如果主设备将发送更多的16位数据字节,那么在得到第7步的ACK信号后,控制寄存器地址将自动加1,再重复6~9步骤。

主设备产生“Stop”信号
主设备产生停止信号,终止Write Cycle。

上文数据在下面这两位大佬文章里都有。我只是把我需要、我认为重要的东西列出来了而已。方便自己后期复习和巩固。

IIC通讯的若干问题_peiweixjtu1的博客-CSDN博客https://blog.csdn.net/peiweixjtu1/article/details/88658466
IIC通信协议总结_zhc的博客-CSDN博客_iic通信协议https://blog.csdn.net/zhanghuaichao/article/details/48266309

以上是关于IIC协议详解的主要内容,如果未能解决你的问题,请参考以下文章

IIC协议详解

IIC协议详解

IIC协议详解,附单片机软件模拟源码

Arduino IIC协议笔记

通信协议:IIC协议的原理和模拟IIC的实现

IIC协议