IIC通信协议——硬件IIC

目录

一、IIC简介

二、时序及通信

IIC写数据:

IIC读数据:

IIC读具体寄存器数据:

三、波形分析

四、实验 


一、IIC简介

  IIC(Inter-Integrated Circuit)总线是一种由飞利浦(PHILIPS)公司开发的两线式串行通信总线结构,通常用于连接微控制器及其外围设备。IIC有着传输距离短,传输速率慢,适合在小数据量场合使用,支持多主多从等特性。IIC总线上可以连接多个主机和多个从机,任何一个能够进行发送和接收的设备都可以成为主机,能够控制信号传输和时钟频率。但任意时刻只能有一个主机和一个从机进行通信。

  IIC通信的典型速率在100kbps,高速模式下可达400kbps,超高速模式下可达1mbps。

二、时序及通信

   IIC每帧数据由9bit组成,包括8bit有用数据和1bit应答位。总线空闲时,SCL线和SDA线均被上拉电阻拉高,主机需要发送起始信号才可开始通信。起始信号即在SCL线为高电平的情况下拉低SDA线。在起始信号后通常需要发送7位从机地址加1位读写标志位用于寻找对应的从机和告知读写模式,称为方向位,“0”表示主机发送数据(写),“1”表示主机接收数据(读)。

数据帧结构示例

  从机的IIC通讯地址在生产时便已确定好,需查阅数据手册或询问制造商。如无需指定通信寄存器位置,在收到从机的应答信号后就可以开始传输数据了。在结束信号到来之前,都可以一直进行数据的传输,但是只能单向收发。如果想要转换数据传输的方向,则需要进行重启,重新设置读写标志位。

注:下文中,从机地址+读标志位称为读指令,从机地址+写标志位称为写指令

IIC写数据:

   写数据时,需要先写入具体的寄存器地址,由于没有数据方向的转换所以不需要进行重启操作,写入寄存器地址后接需要写入的数据即可。写数据步骤:

起始位 + 写指令 + 寄存器地址 + 数据 + 结束位

IIC读数据:

  不指定具体寄存器时,会读出从机当前指向的寄存器地址的数据,读出数据后地址位会自动增加,方便连续读数据的操作。此处的ACK信号由主机发送给从机,从机需要识别到应答位后才会继续发送数据进程。如果不需要继续读数据,只需在最后一个ACK位不拉低电平,再发送结束信号即可。读数据步骤:

起始位 + 读指令 + 数据 + 结束位

IIC读具体寄存器数据:

  其中DUMMY WRITE操作称为哑写,这一步骤的目的是告诉从机要读取哪个寄存器的地址。读写方向转换时需要重启总线,从机才会被重新寻址和确定数据方向。因此读具体寄存器数据的步骤是:

起始位 + 写指令 + 寄存器地址 +  重启 + 读指令 + 数据 + 结束位

  在通信过程中,起始位是必须的,用于启动寻址,告诉总线上的从机接下来的八位数据是在寻址,让从机与自身的地址对比,对应地址的从机发送应答位告诉主机已经准备好通信。

IIC总线挂载设备示例

三、波形分析

  下图中,主机发送的数据为0110_0111,从机在应答位时钟的下降沿后的低电平产生一个窄脉冲,表示成功接收该字节数据。应答位的波形可能根据设备的不同而不同。由于从机的IIC线存在上拉电阻,因此电平上升时间会根据电阻大小而不同,下拉则是直接到地,变化时间快。因此波形会呈现上升慢,下降快的特点。

主机数据信号及从机应答信号

四、实验 

对寄存器地址4000_66A8进行读—写—读的操作。

  I2C通讯可以成功读写寄存器。

参考

Z小旋,《IIC原理超详细讲解——值得一看》,CSDN

岂有此李呀,《有线通信--一文弄懂IIC--(基础篇)》,CSDN

  • 30
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值