嵌入式开发学习日志39——stm32之I2C总线物理层与常用术语

在简单的了解完前面讲述的stm32的串口通信之后,让我们把目光转向串行总线I2C,其用于连接微控制器以及外围设备,同时也是一种被广泛采用的总线标准。

I2C通信设备的物理层具有诸多特点,不过在讲述这些特点前,我们先要对一些术语有些了解。

主机:启动数据传送以及产生时钟信号的设备。

从机:被主机寻址的器件。

多主机:同时多个主机尝试控制总线但不破坏传输的情形。

主模式:用I2CNDAT支持自动字节计数的模式。

从模式:发送和接收操作都由I2C自动控制。

仲裁:当多个主机在同一时间想要控制总线但只允许其中一个控制并进行传输并不破坏传输的过程。

当了解完这些术语之后,下面正式介绍物理层的一些特点。

首先I2C是一个支持多设备接入的总线,这些设备共用这一根线,而接入总线的通讯设备就是上面提到的主机以及从机。

一个I2C总线只有两条线路,一条被称为双向串行数据线,顾名思义,就是用来发送数据(半双工,并非全双工),另一条是串行时钟线,用于数据收发的同步。

当主机或者从机接入到I2C总线之后,都会被分配到一个独立地址,这个地址有什么用呢?在主机顺着总线想要找对应的从机时,就要通过寻址的方式找到从机的独立地址,进而对从机进行访问。就像课堂里老师用学号点名,每个人都有各自的学号,那么老师要知道你去没去上课,只需要看点学号之后有没有人回应即可。

I2C总线一般通过上拉电阻连接到电源,在空闲时,会输出高阻态,如果所有接入总线的设备全部空闲,此时I2C就会通过上拉电阻自动将电平拉到高电平。注意,这里使用I2C进行输出时,设置的是开漏输出模式,而非我们常用的推挽输出。

既然I2C接入了这么多设备,那当多个主机同时要使用总线,岂不是分不清谁是谁了么?欸,这里就用到了上面提到的仲裁的方式来避免这样的情况发生。

I2C总共有三种传输模式,按照传输速率划分,可以分为标准模式(100kbit/s),快速模式(400kbit/s),常用的也是这个,还有高速模式(3.4Mbit/s),但是绝大多数的I2C设备不支持高速,所以这里也不推荐。

既然提及了通信,光有物理层肯定是不够的,下一章会详细讲述有关I2C的协议层部分,看看I2C通信数据的传输都有什么标准和限制。

相关推荐
无垠的广袤11 分钟前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
车载测试工程师19 分钟前
CAPL学习-IP API函数-1
网络·学习·tcp/ip·capl·canoe·doip
YJlio2 小时前
ShareEnum 学习笔记(9.5):内网共享体检——开放共享、匿名访问与权限风险
大数据·笔记·学习
雲烟2 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞2 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
brave and determined3 小时前
接口通讯学习(day05):智能手机的内部高速公路:揭秘MIPI CSI与DSI技术
学习·智能手机·软件工程·制造·csi·mipi·dsi
田甲3 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up3 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
Tonya436 小时前
测开学习DAY37
学习