STM32 I2C串行总线

目录

[TM32 I2C串行总线的通信原理](#TM32 I2C串行总线的通信原理)

[STM32 I2C串行总线概述​编辑](#STM32 I2C串行总线概述编辑)

I2C总线的数据传送


TM32 I2C串行总线的通信原理

I2C(Inter-Integrated Circuit,集成电路总线)总线是原 Philips公司推出的一种用于IC器件之间连接的2线制串行扩展总线,它通过2条信号线(SDA,串行数据线;SCL,串行时钟线)在连接到总线上的器件之间传送数据,所有连接在总线的I2C器件都可以工作于发送方式或接收方式。 I2C总线最早用于解决电视中CPU与外设之间的通信问题。 由于其引脚少,硬件简单,易于建立,可扩展性强,因此I2C的应用范围早已远远超出家电范畴,目前已经成为事实上的工业标准,被广泛地应用于微控制器、存储器和外设模块中。

STM32 I2C串行总线概述

I2C总线上允许连接多个器件,支持多主机通信。 与SPI相比,I2C接口最主要的优点是简单性和有效性。

(1)I2C仅用两根信号线(SDA和SCL)就实现了完善的半双工同步数据通信,且能够方便地构成多机系统和外围器件扩展系统。I2C总线上的器件地址采用硬件设置方法,寻址则由软件完成,避免了从机选择线寻址时造成的片选线众多的弊端,使系统具有更

(2)I2C支持多主控系统,I2C总线上任何能够进行发送和接收的设备都可以成为主机,所有主控都能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

(3)I2C 接口被设计成漏极开路的形式。在这种结构中,高电平水平只由电阻上拉电平+VDD电压决定。

上拉电阻Rp1和Rp2的阻值决定了I2C的通信速率,理论上阻值越小,波特率越高。一般而言,当通信速度为100Kb/s时,上拉电阻取4.7kΩ;而当通信速度为400Kb/s时,上拉电阻取1kΩ。 1. I2C接口 I2C是半双工同步串行通信,相比UART和SPI,它所需的信号最少,只需SCL和SCK两根线。

(1)SCL(Serial Clock,串行时钟线):I2C通信中用于传输时钟的信号线,通常由主机发出。SCL采用集电极开路或漏极开路的输出方式。这样,I2C器件只能使SCL下拉到逻辑0,而不能强制SCL上拉到逻辑1。

(2)SDA(Serial Data,串行数据线):I2C通信中用于传输数据的信号线。与SCL类似,SDA也采用集电极开路或漏极开路的输出方式。这样,I2C器件同样也只能使SDA下拉到逻辑0,而不能强制SDA上拉到逻辑1。

  1. I2C互连 I2C总线(即SCL和SDA)上可以方便地连接多个I2C器件。 与SPI互连相比,I2C互连主要具有以下特点:

(1)必须在I2C总线上外接上拉电阻。 由于I2C总线(SCL和SDA)采用集电极开路或漏极开路的输出方式,连接到I2C总线上的任何器件都只能使SCL或SDA置0,因此必须在SCL和SDA上外加上拉电阻,使两根信号线进行置1,才能正确进行数据通信。

(2)通过地址区分挂载在I2C总线上不同的器件。 多个I2C器件可以并联在I2C总线上。SPI使用不同的片选线区分挂载在总线上的各个器件,这样,增加了连线数量,给器件扩展带来诸多不便。而I2C使用地址识别总线上的器件,更易于器件的扩展。在I2C互连系统中,每个I2C器件都有一个唯一而独立的身份标识(ID)------器件地址(Address)。

(3)支持多主机互连。 I2C带有竞争检测和仲裁电路,实现了真正的多主机互连。当多主机同时使用总线发送数据时,根据仲裁方式决定由哪个设备占用总线,以防止数据冲突和数据丢失。当然,尽管I2C支持多主机互连,但同一时刻只能有一个主机。 目前I2C接口已经获得了广大开发者和设备生产商的认同,市场上存在众多集成了I2C接口的器件。意法半导体(ST)、微芯(Microchip)、德州仪器(TI)和恩智浦(NXP)等嵌入式处理器的主流厂商产品中几乎都集成有I2C接口。外围器件也有越来越多的低速、低成本器件使用I2C接口作为数据或控制信息的接口标准。

I2C总线的数据传送

  1. 数据位的有效性规定 ,I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
  1. 起始和终止信号

I2C总线规定,当SCL为高电平时,SDA的电平必须保持稳定不变的状态,只有当SCL处于低电平时,才可以改变SDA的电平值,但起始信号和停止信号是特例。因此,当SCL处于高电平时,SDA的任何跳变都会被识别成为一个起始信号或停止信号

  1. 数据传送格式

(1)字节传送与应答 在I2C总线的数据传输过程中,发送到SDA信号线上的数据以字节为单位,每个字节必须为8位,而且是高位(MSB)在前,低位(LSB)在后,每次发送数据的字节数量不受限制。但在这个数据传输过程中需要着重强调的是,当发送方发送完每一字节后,都必须等待接收方返回一个应答响应信号

(2)总线的寻址 挂在I2C总线上的器件可以很多,但相互间只有两根线连接(数据线和时钟线),如何进行识别寻址呢?具有I2C总线结构的器件在其出厂时已经给定了器件的地址编码。I2C总线器件地址SLA(以7位为例)

(3)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

  1. 传输速率

I2C的标准传输速率为100Kb/s,快速传输可达400Kb/s。目前还增加了高速模式,最高传输速率可达3.4Mb/s。

相关推荐
温柔的男孩像海洋丶3 分钟前
vscode的keil assistant 中搜索不到全局变量
ide·vscode·单片机
沐欣工作室_lvyiyi18 分钟前
基于单片机的多功能智能小车(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·单片机毕业设计
鸿喵小仙女1 小时前
C# WPF读写STM32/GD32单片机Flash数据
stm32·单片机·c#·wpf
lucy153027510791 小时前
MCU 功耗基准测试
科技·单片机·嵌入式硬件·智能家居·信号处理·工控主板
m0_748240912 小时前
OpenMV与STM32通信全面指南
stm32·单片机·嵌入式硬件
Cchengzu4 小时前
阿里巴巴2017实习生笔试题(二)
stm32·单片机·嵌入式硬件
重生之我是数学王子8 小时前
单片机 STM32入门
stm32·单片机·嵌入式硬件
qq_4597300311 小时前
4-3 MCU中ARM存储器的作用
arm开发·单片机·嵌入式硬件
嵌入式科普14 小时前
嵌入式科普(24)从SPI和CAN通信重新理解“全双工”
c语言·stm32·can·spi·全双工·ra6m5
重生之我是数学王子14 小时前
点亮核心板小灯 STM32U575
stm32·单片机·嵌入式硬件