关于IIC的使用记录

iic是什么?

I2C(Inter-Integrated Circuit)是一种串行通信协议,用于微控制器和设备之间的通信。它由Philips Semiconductor(现在的NXP Semiconductors)在1980年代初期开发,旨在简化电子系统中多个集成电路之间的通信。

iic的主要特点包括:

  1. 多主模式:允许多个设备(主设备和从设备)共享同一通信总线,其中任何一个主设备都可以控制总线。

  2. 低速通信:I2C设计用于低速数据传输,通常在标准模式下运行速度为100kbps,快速模式下为400kbps,快速模式加(FM+)为1Mbps,高速模式(HS)为3.4Mbps。

  3. 双线接口:I2C通信只需要两根线,一根是串行数据线(SDA),另一根是串行时钟线(SCL)。SDA用于传输数据,SCL用于同步数据传输。

  4. 地址空间:每个I2C设备都有一个唯一的地址,用于识别和选择特定的设备进行通信。

  5. 数据传输:数据以8位字节的形式传输,可以是读操作或写操作。

  6. 支持仲裁和冲突检测:在多主模式下,如果两个主设备同时尝试控制总线,I2C协议通过仲裁机制确保只有一个主设备控制总线。

  7. 支持时钟同步:I2C协议允许设备根据需要调整时钟速率,以适应不同的数据传输速度。

  8. 灵活的拓扑结构:I2C总线可以是线性的,也可以是树形的,支持多种连接方式。

I2C广泛应用于各种电子系统中,如传感器、显示器、存储器和微控制器之间的通信。由于其简单性和灵活性,I2C成为了嵌入式系统中非常流行的通信协议之一。

iiC通信步骤和相关的帧命令概念

在I2C通信中,"帧"通常指的是数据包,它包含一个或多个字节,这些字节通过I2C总线从一个设备传输到另一个设备。帧命令是指用于控制I2C通信过程中数据帧的发送和接收的指令。

  1. 开始条件(Start Condition)

    • 通过将SDA从高电平拉低到低电平,同时SCL保持高电平,来生成开始条件。这标志着一次I2C通信的开始。
  2. 地址和读/写位(Address and Read/Write Bit)

    • 在开始条件之后,主设备发送从设备的7位地址,后面跟着一个读/写位(R/W bit)。这个位指示是读操作还是写操作。
    • 例如,如果地址是0x48(二进制为01001000),并且想要进行写操作,那么发送的数据将是01001001。
  3. 应答位(Acknowledge Bit, ACK)

    • 从设备在接收到地址后,会发送一个应答位。如果从设备准备好接收数据(或发送数据),它会发送一个低电平的应答位(ACK)。
  4. 数据传输(Data Transfer)

    • 在地址和应答位之后,主设备和从设备之间可以开始数据传输。数据以8位字节的形式传输。
    • 主设备发送数据帧给从设备,或者请求从设备发送数据帧。
  5. 数据帧的确认(Data Frame Acknowledgment)

    • 每次数据帧传输后,接收方都需要发送一个应答位。如果接收方准备好接收下一个数据帧,它会发送ACK;如果通信结束或出现错误,它会发送非应答位(NACK)。
  6. 停止条件(Stop Condition)

    • 通过将SDA从低电平拉高到高电平,同时SCL保持高电平,来生成停止条件。这标志着一次I2C通信的结束。
  7. 帧命令(Frame Commands)

    • 在编程中,帧命令通常是指用于控制I2C通信的函数或方法,例如:
      • i2c_write_byte(address, data):向指定地址的设备写入一个字节的数据。
      • i2c_read_byte(address):从指定地址的设备读取一个字节的数据。
      • i2c_start():生成开始条件。
      • i2c_stop():生成停止条件。

iic波形

1. SDA的翻转必须要在SCL为低电平期间发生,所以先拉低SCL再操作SDA;SDA的采样必须要在SCL为高电平期间发生,所以先拉高SCL再读取SDA;

2. I2C的写数流程:S  设备地址  W  A  字地址 A    DATA1 A   DATA2 A    DATAn A   P; 往设备地址是0x56的字(寄存器)地址0xDB中 写入数据0xEF

3. I2C的读数流程:S  设备地址  W  A  字地址 A   Sr  设备地址  R  A   DATA1 A   DATA2 A   DATAn  NA   P; 从设备地址是0x56的字(寄存器)地址0x10中 读出数据 0x10 0x00;

   最后一字节有的芯片回ACK,有的回NACK。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值