0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机IIC通信协议详解

CHANBAEK 来源:落木青云 作者:一颗糯米 2023-03-20 15:20 次阅读

再话单片机通信

前面的文章中已经介绍了单片机的并口通信和UART串口通信,在实际开发过程中我们还可能用到很多其他通信协议,IIC协议就是其中常见的一种,它的用途很广,很多资料都讲得比较专业化,这篇文章我们一起通过简单的文字来熟悉它,以后应用时再讲专业点。

何为IIC

IIC总线全称是Inter Integrated Circuit总线,也写做I^2C总线,它是由飞利浦公司推出的一种同步通信协议,这种协议只用两根通信引脚,一根信号线SDA,另一根时钟线SCL,即它使用两根信号线就可实现全双工的同步数据传输。 总之,它具有接口线少、占用资源小、控制简单、通信速率较高等优点。 至于为什么,现在我们先不用管,等后面介绍完其他通信协议后再做对比了解。

所有与IIC兼容的器件都具有标准的接口,可以把多个IIC总线器件同时接到IIC总线上。 *当然,因为IIC协议比较简单,所以我们使用时通常也会直接通过软件模拟协议来实现,特别是对于没有IIC接口的单片机,比如普通51,52单片机。 * 在总线上通过地址来识别通信对象,使它们可以之间可以通过IIC总线直接通信,总线上的各设备具有唯一的识别地址,正是因为具备通信识别功能,并且简单容易实现,使得它在电子领域有非常广的应用,比如各种低速存储IC,各类传感器等等。

图片
通信线路

因为所有IIC通信引脚内部电路使用的是开漏结构,所以在实际应用中需要对其引脚添加上拉电阻,以保证正常通信。

图片
内部电路结构

通信协议总览

IIC总线协议上的设备分主设备和从设备,犹如常说的主机和从机,顾名思义,主设备是发送命令或数据的器件,从设备为接收命令或向主设备传送数据的器件。 并且主设备控制时钟信号,从设备根据主设备的时钟信号和地址信息进行响应。

主从设备之间还需要遵循一定的规则:

  1. IIC总线空闲状态下,SCL和SDA均为高电平,只有在总线空闲时才允许启动数据传送。
  2. 起始信号:钟线SCL为高电平时,数据线SDA从高电平到低电平的跳变被定义为起始信号。
  3. 停止信号:时钟线SCL为高电平时,数据线SDA从低电平到高电平的跳变被定义为停止信号。
  4. 除以上被定义的起始信号和停止信号外,数据传送过程,时钟线为高电平时,数据线必须保持稳定状态,即时钟线为高电平时,数据线的任何电平变化都将被看作总线的起始或停止信号。

图片
协议总览

通信一般步骤

发送命令:

  1. 发送起始(START)信号;
  2. 发送设备地址;
  3. 等待从设备响应(ACK);
  4. 发送数据,一般情况每发送一个字节数据后会等待接收来自从设备的响应(ACK)信号;
  5. 数据发送完毕,发送停止(STOP)信号,终止传输。

读取命令:

  1. 发送起始(START)信号;
  2. 发送设备地址;
  3. 等待从设备响应(ACK);
  4. 接收来自从设备的数据,一般情况下每接收一个字节数据后会向从设备发送一个响应(ACK)信号;
  5. 接收到最后一个数据,发送一个无效响应(NACK),然后发送停止(STOP)信号,终止传输。

通信程序举例

  1. 总线初始化
void init()
{
  SCL= 1;
  delay ();
  SDA= 1;
  delay ();
}
  1. 起始信号
void start()                     
{
  SDA= 1;
  delay ();
  SCL= 1;
  delay ();
  SDA= 0;
  delay ();
}
  1. 应答信号
void respons()
{
  uchar i= 0;
  SCL= 1;
  delay();
  while ((SDA== 1)&&(i< 255))
  {
    i++ ;
  }
  SCL= 0;
  delay();
}
  1. 停止信号
void stop() 
{
  SDA= 0;
  delay();
  SCL= 1;
  delay();
  SDA= 1;
  delay();
}
  1. 写数据
void writebyte(uchar date)
{
  uchar i,temp;
  temp= date;
  for(i= 0;i< 8;i++ )
  {
    temp= temp<< 1; 
    SCL= 0;
    delay();
    SDA= CY;
    delay();
    SCL= 1;
    delay();
  }
  SCL= 0;
  delay();
  SDA= 1;
  delay();
}
  1. 读数据
void readbyte()             
{
  uchar i,k;
  SCL= 0;
  delay();
  SDA= 1;
  for(i= 0;i< 8;i++ )         
  {
    SCL= 1;
    delay();
    k= (k<< 1)|SDA;            
    SCL= 0;
    delay();
  }
  delay();
  return k;                   
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632701
  • 通信协议
    +关注

    关注

    28

    文章

    854

    浏览量

    40250
  • IIC
    IIC
    +关注

    关注

    11

    文章

    300

    浏览量

    38269
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101161
  • 串口通信
    +关注

    关注

    34

    文章

    1609

    浏览量

    55409
收藏 人收藏

    评论

    相关推荐

    单片机常用的通信协议有哪些

    单片机的应用中,通信协议是其中必不可少的一部分,上位与下位单片机单片机
    发表于 11-18 06:57

    单片机串口通信协议的实现实例分享

    单片机串口通信协议的实现JiaLiang_825 2017-12-13 13:27:02 3998 收藏 16分类专栏: 单片机 文章标签: 串口通信 人机交互
    发表于 01-20 07:35

    IIC通信协议的相关资料推荐

    IIC通信协议详解IIC的概述IIC分为软件IIC和硬件IICIIC
    发表于 01-20 07:06

    PC与单片机串口通信协议

    PC与单片机串口通信协议
    发表于 12-26 22:12 0次下载

    单片机C语言之串口通信协议

    本文首先介绍了串口的基本结构,其次介绍了串口通信方式,最后详细介绍了单片机C语言之串口通信协议
    发表于 05-22 12:37 4873次阅读
    <b class='flag-5'>单片机</b>C语言之串口<b class='flag-5'>通信协议</b>

    浅析六种常用的单片机通信协议

    单片机的应用中,通信协议是必不可少的一部分,上位与下位单片机单片机
    发表于 11-08 16:36 1.5w次阅读

    单片机通信协议的应用情况

    单片机的片上资源有多种通信方式,常用的如IIC、SPI、UART/USART、CAN,甚至高端一点的还具有以太网和USB通信。这么多的通信
    的头像 发表于 11-09 04:29 4155次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>通信协议</b>的应用情况

    单片机通信协议有哪一些常用的

    单片机的应用中,通信协议是必不可少的一部分,上位与下位单片机单片机
    发表于 12-10 16:53 4010次阅读

    单片机常用的几种通信协议

    单片机的应用中,通信协议是其中必不可少的一部分,上位与下位单片机单片机
    发表于 11-11 10:06 19次下载
    <b class='flag-5'>单片机</b>常用的几种<b class='flag-5'>通信协议</b>

    单片机:Modbus 通信协议介绍

    实用串口通信程序的时候,我们通过串口发给单片机三条指令,让单片机做了三件不同的事情,分别是“buzz on”、“buzz off”和“showstr”。随着系统复杂性的增加,我们希望可以实现更多的指令。而指令越来越多,带来的后果
    发表于 11-13 20:51 11次下载
    <b class='flag-5'>单片机</b>:Modbus <b class='flag-5'>通信协议</b>介绍

    51单片机IIC通信协议

    * @author Byron (from3900@gmail.com) * @version V1.0.0 * @date 05/12/2020 * @brief 51系列单片机I2C通信协议头文件 * --------------------------
    发表于 11-20 20:06 5次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>IIC</b><b class='flag-5'>通信协议</b>

    单片机常用的几种通信协议

    单片机的应用中,通信协议是其中必不可少的一部分,上位与下位单片机单片机
    发表于 11-23 17:21 16次下载
    <b class='flag-5'>单片机</b>常用的几种<b class='flag-5'>通信协议</b>

    制定通信协议,实现单片机与PC通信

    单片机与PC串口通信编程实验目的利用PROTUES仿真软件、串口调试助手、虚拟串口,搭建单片机与PC通信仿真平台,熟悉
    发表于 12-17 18:30 22次下载
    制定<b class='flag-5'>通信协议</b>,实现<b class='flag-5'>单片机</b>与PC<b class='flag-5'>机</b><b class='flag-5'>通信</b>

    如何利用MODBUS通信协议实现触摸屏与单片机通信和控制

    讲解如何利用MODBUS通信协议,实现触摸屏与单片机通信和控审I。详细介绍了触摸屏与单片机的硬件连接、软件 设置及编辑、MODBUS通信协议
    发表于 08-02 09:50 18次下载

    详解物联网常用协议IIC和RS485通信协议

    单片机开发中我们经常会听到协议二字,协议单片机相互通信中必须遵守的规则,只有遵守协议才能实现
    的头像 发表于 03-02 17:12 1414次阅读
    <b class='flag-5'>详解</b>物联网常用<b class='flag-5'>协议</b>:<b class='flag-5'>IIC</b>和RS485<b class='flag-5'>通信协议</b>