i2c总线的通信过程

i2c总线的通信过程,第1张

  I2C总线简介

  I2C是两线式串行总线,用于连接微控制器及其外围设备。

  I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(mulTImastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

  单片机的通讯模块常用的有UART、SPI、I2C、CAN等等,当然还有无线模块这里不讨论。UART大多用于单片机与PC的通信,CAN总线常用于单片机与单片机通信,而SPI和I2C则用于单片机和外围设备、外围设备和其它外围设备的通信,根据自己的需要来设计通讯方式。

  相比较SPI而言,I2C需要更少的接线,仅由数据线SDA和时钟SCL构成 。而SPI则需要四根引线,它们是SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选)。但是常常因为I2C的通讯协议较为复杂,不容易在程序中实现而导致数据丢失、无应答、“死等”等问题。

  I2C通信、读写数据过程

  在通信之初,主从机必须根据自己的要求约定好通信规则:command的定义和位置、address的位数和位置。

  以读写从机寄存器数据为例:

  假设从机寄存器地址为8位、从机寄存器也位8位(被读取数据为8位);

  约定读command为0x01,写command位0x02;

  约定主机发起通信后,第一个slave address字节收到ack后,紧跟的一个字节为command,再下面一个字节为address。

  1. 读寄存器数据步骤:

  1.1 主机先发起一次通信,将读command(0x01)和需要读取的寄存器地址address写入从机;(主机发出写 *** 作)

  1.2 从机firmware的处理:

  1.2.1 将command和address分别提取出来;

  1.2.2 判断command的含义(本例中,是读指令还是写指令);

  1.2.3 根据收到的的address,将对应寄存器的的数据放入从机I2C输出buffer;(这个步骤可以使用指针)

  1.3 主机再次发起一次通信,读取从机的数据;(主机发出读 *** 作)

  i2c总线的通信过程,i2c总线的通信过程,第2张

  i2c总线的通信过程,i2c总线的通信过程,第3张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2495322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存