嵌入式开发学习日志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通信数据的传输都有什么标准和限制。

相关推荐
wdfk_prog11 小时前
[Linux]学习笔记系列 -- [drivers][i2c]i2c-dev
linux·笔记·学习
越努力越幸运50812 小时前
CSS3学习之网格布局grid
前端·学习·css3
chillxiaohan13 小时前
GO学习记录——多文件调用
开发语言·学习·golang
dump linux14 小时前
内核驱动调试接口与使用方法入门
linux·驱动开发·嵌入式硬件
Funny_AI_LAB15 小时前
AI Agent最新重磅综述:迈向高效智能体,记忆、工具学习和规划综述
人工智能·学习·算法·语言模型·agi
项目題供诗15 小时前
51单片机入门(六)
单片机·嵌入式硬件·51单片机
代码游侠16 小时前
学习笔记——Linux内核与嵌入式开发1
linux·运维·前端·arm开发·单片机·嵌入式硬件·学习
宇钶宇夕16 小时前
CoDeSys入门实战一起学习(二十八):(LD)三台电机顺起逆停程序详解—上升、下降沿使用上
单片机·嵌入式硬件·学习
科技林总16 小时前
【系统分析师】6.5 电子商务
学习
代码游侠16 小时前
C语言核心概念复习(一)
c语言·开发语言·c++·笔记·学习