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。

相关推荐
森焱森29 分钟前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白33 分钟前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D1 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术4 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt5 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘5 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang5 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c
几个几个n7 小时前
STM32-第二节-GPIO输入(按键,传感器)
单片机·嵌入式硬件
Despacito0o10 小时前
ESP32-s3摄像头驱动开发实战:从零搭建实时图像显示系统
人工智能·驱动开发·嵌入式硬件·音视频·嵌入式实时数据库
门思科技11 小时前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网