资讯专栏INFORMATION COLUMN

串口I2C通信详解介绍(小白初学,浅显易懂,基本知识)

wua_wua2012 / 3735人阅读

摘要:每个字节后必须跟一个响应位。低速率一般是同一个板子上的两个芯片间通信,数据量不大,速率低。速率几百,速率可能不同,不能超过的最高速率。

介绍:I2C通讯协议(Inter-Integrated Circuit)引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

特点:

1.只需要一根数据线SDA和一根时钟线SCL,SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线

SCL(Serial Clock):串行时钟线,传输CLK信号,一般是主设备向从设备提供

SDA(Serial Data) :串行数据线,传输通信数据

2.实现真正的多主机总线,任何器件既可以作为主机又可以作为从机,但是同一时刻只能有一个主机

3.可以通过外部连线检测,便于系统故障诊断和调试

4.连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s

5.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽

6.接口电路为开漏输出,需通过上拉电阻接电源VCC,当总线空闲时,两根线都是高电平,连接总线的外同器件都是CMOS器件输出级也是开漏电路

数据传输:
发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。

空闲时候:SDA数据线和SCL时钟线都是高电平

开始信号:SCL处于高电平,SDA由高到低

结束信号:SCL处于高电平,SDA由低到高

应答信号:当传输完8位数据以后,在第9个SCL时钟周期

主机释放SDA控制权交给从机,由于上拉电阻的作用,此时该电平为高,但是如果从机正确接受了数据,就会将SDA拉低

发送数据:SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期

非应答信号:如果第9个SCL时钟周期,SDA保持高电平,则代表非应该信号

非应答信号可能是主机发出的也可能是从机产生的

有几种可能:

  1. I2C总线上没有主机所指定地址的从机设备
  2. 从机正在执行一些操作,处于忙状态,还没有准备好与主机通讯
  3. 主机发送的一些控制命令,从机不支持
  4. 主机接收从机数据时,主机产生非应答信号,通知从机数据传输结束,不要再发数据了

通讯特征:

1)串行通信,所有的数据以位为单位在SDA线上串行传输

2)同步通信:通过时钟同步

3)非差分:I2C通信速率不高,且通信距离近,使用电平信号通信。

4)低速率:I2C一般是同一个板子上的两个IC芯片间通信,数据量不大,速率低。速率:几百KHz,速率可能不同,不能超过IC的最高速率。

模式:

标准模式(Standard):100kbps

快速模式(Fast):400kbps

快速模式+(Fast-Plus):1Mbps

高速模式(High-speed):3.4Mbps

超快模式(Ultra-Fast):5Mbps(单向传输)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121781.html

相关文章

  • STM32CubeMX学习教程之硬件I2C读取光照度

    摘要:使用库读写环境光照度传感器本文将教大家如何快速使用库读取光照度数据。五实验样机测试展示通过之前配置好的面板,通过涂鸦智能进行配网实时采集光照度传感器的数据。 使用STM32 HAL库读写环境光照度传感器(BH1750) 本文将教大家如何快速使用STM32HAL库读取光照度数据。 实现功能:通...

    tinylcy 评论0 收藏0
  • 【STM32+cubemx】0011 HAL库开发:I2C总线访问加速度传感器ADXL345

    摘要:本节我们介绍总线,并使用的总线来访问加速度传感器。主循环内添加循环读取的代码编译下载运行,可以看到数据输出变换传感器方向,可以看到测出的重力加速度的数值变化。 本节我们介绍I2C总线,并使用stm32的I2C总线来访问加速度传感器ADXL345。 1)I2C基础知识 I2C总线通信比较适合...

    paulli3 评论0 收藏0
  • Arduino--数字电位器AD5252/1的使用

    摘要:目录简介使用说明编程说明实验说明完整的参考程序致谢感谢宫同学为本次实验提供器件和意见。简介是公司出品的数字电位器,同时带有非易失性存储器,其使用通信。 目录 1....

    HelKyle 评论0 收藏0
  • 实战技能分享,各种数据类型的SPI, UART, I2C,FDCAN等方式的通信传输以及存储到EEP

    摘要:编程手册和编程手册和编程手册各种数据类型编程,等存储器的简易方法一般这些存储器都是字节编程,写入浮点等数据类型时不太方便。 目录 背景知识 F1编程手册: F3和F4编程手册: F7和H7编程手册: 各种数据类型编程EEPROM,SPI Flash等存储器的简易方法 各种数据类型的SPI,U...

    cgspine 评论0 收藏0
  • 自己画一块ESP32-C3 的开发板(第一次使用立创EDA)(更新中...)

    摘要:复位系列芯片的复位可使用管脚。这个和保存代码的是不一样的,计划使用。 记录一下第一次使用立创EDA第一次设计ESP-C3的开发板(这几天工作有点忙,稍等) 目录 ...

    MrZONT 评论0 收藏0

发表评论

0条评论

wua_wua2012

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<