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

相关推荐
Mr -老鬼21 小时前
Rust与Go:从学习到实战的全方位对比
学习·golang·rust
laplace012321 小时前
# 第四章|智能体经典范式构建 —— 学习笔记(详细版)
笔记·学习
程序猿零零漆21 小时前
Spring之旅 - 记录学习 Spring 框架的过程和经验(十四)SpringMVC的请求处理
学习·spring·pandas
别了,李亚普诺夫21 小时前
PCB设计大师篇笔记
笔记·嵌入式硬件·学习
西瓜堆21 小时前
提示词工程学习笔记: IT技术行业提示词推荐
笔记·学习
IT=>小脑虎1 天前
PHP零基础衔接进阶知识点【详解版】
开发语言·学习·php
大、男人1 天前
mcp包的BaseSettings学习
学习
好奇龙猫1 天前
【人工智能学习-AI-MIT公开课第 20・21 概率推理】
人工智能·学习
点灯小铭1 天前
双积分AD转换电路
单片机·毕业设计·课程设计·期末大作业
stars-he1 天前
FPGA学习笔记-图书馆存包柜,乒乓球游戏电路设计
笔记·学习·fpga开发