一、总线
串口
UART
UART是异步串行通信,用TTL电平来表示,使用高低电平通讯,经典的RS-232与RS-485都由UART经过芯片转换来实现。
RS-232
硬件Pin针脚定义(*为核心针脚): RS-232为±9V以上的电压通讯,靠GND做参考
| 引脚编号 | 英文简称 | 中文名称 | 核心功能 | |
|---|---|---|---|---|
| 1 | DCD | 载波检测 | 告知终端远程设备已连接(如调制解调器检测到载波) | |
| 2* | RXD* | 接收数据 | 接收来自外部设备的数据 | |
| 3* | TXD* | 发送数据 | 向外部设备发送数据 | |
| 4 | DTR | 数据终端就绪 | 通知外部设备自身已准备好通信 | |
| 5* | GND* | 信号地 | 所有信号的参考地线,是通信必需的关键引脚 | |
| 6 | DSR | 数据设备就绪 | 外部设备通知终端自身已准备就绪 | |
| 7 | RTS | 请求发送 | 请求向外部设备发送数据,属于硬件流控信号 | |
| 8 | CTS | 清除发送 | 响应 RTS 信号,告知终端可发送数据 | |
| 9 | RI | 振铃指示 | 通知终端有来电振铃(常用于调制解调器) |
接口属性:
RS-232 是单端电平的异步串口,用 ±3~±15V 表示逻辑,需 3 根核心线(TXD 发、RXD 收、GND 地)就能通信,支持全双工,传输距离≤15 米、速率≤20kbps,抗干扰一般,适合近距离点对点连接(如调试、老设备通信),需和对方波特率、数据格式一致才能用。
时序:
异步通信没有时钟线,全靠「约定好的时序参数」同步,单次传输的数据包格式如下(从左到右):
空闲状态 → 起始位 → 数据位 → 校验位(可选) → 停止位 → 空闲状态
用法:
| 接线类型 | 适用场景 | 所需引脚(DB9) | 接线逻辑 |
|---|---|---|---|
| 最简通信(推荐) | 短距离、低速率(如调试) | TXD(3)、RXD(2)、GND(5) | 设备 A TXD → 设备 B RXD;设备 A RXD → 设备 B TXD;GND 直接相连 |
| 硬件流控通信 | 高速 / 大数据量(如工业设备) | 加 RTS (7)、CTS (8) | 设备 A RTS → 设备 B CTS;设备 A CTS → 设备 B RTS(避免缓冲区溢出) |
| 全功能通信 | 需状态检测(如 Modem 拨号) | 加 DTR (4)、DSR (6)、DCD (1)、RI (9) | 按引脚定义对应连接,用于设备就绪检测、载波检测等 |
RS-485
RS-285为差分信号A线与B线相差2V~6V,2条线为1组为半双工、全双工则由2组组成,GND是必须的
modubus-RTU
接口Pin:
| 引脚编号 | 英文简称 | 中文名称 | 核心功能 |
|---|---|---|---|
| 1 | GND | 信号地 | 参考地,增强抗干扰性(建议必接) |
| 2 | A/D+ | 差分信号正端 | 与 B 端组成差分传输,高电平表示逻辑 1(部分手册标为 Data+) |
| 3 | B/D- | 差分信号负端 | 与 A 端组成差分传输,低电平表示逻辑 0(部分手册标为 Data-) |
| 4-9 | 预留 | 备用 / 扩展 | 可用于电源、硬件流控(实际极少用) |
接口属性:
- 信号类型:差分传输(A/B 双端),抗干扰极强;
- 通信模式:半双工(需 DE/RE 引脚控制收发方向);
- 传输能力:9600bps 时最远 1200 米,支持最多 32 个节点组网;
- 核心参数:异步通信,波特率 / 数据格式与 RS-232 兼容(8N1 常用);
- 硬件要求:需 120Ω 终端电阻(远距离),推荐屏蔽双绞线;
- 协议特性:仅物理层规范,常用 Modbus RTU 上层协议,工业场景首选。
时序:
与RS-232一致,参考上面RS-232
用法:
| 接线类型 | 适用场景 | 所需引脚(DB9) | 接线逻辑 |
|---|---|---|---|
| 最简组网(推荐) | 短距离、少节点(≤10个)、低速率(如传感器组网) | A(2)、B(3)、GND(1) | 所有设备的 A 引脚互连、B 引脚互连、GND 引脚互连;总线两端设备的 A/B 间各接120Ω终端电阻 |
| 工业稳定组网 | 长距离(>10米)、多节点(≤32个)、高速(如Modbus RTU) | A(2)、B(3)、GND(1)、DE(4)、RE(5) | 1. A/B/GND 总线互连+两端120Ω终端电阻;2. 主/从设备 DE 与 RE 短接,通过GPIO控制(高电平发送、低电平接收) |
| 全功能冗余组网 | 工业关键场景(需抗干扰+状态监测) | A(2)、B(3)、GND(1)、DE(4)、RE(5)、备用(6-9) | 1. 基础组网+终端电阻+DE/RE方向控制;2. 备用引脚可接电源(给从设备供电)或额外差分线(冗余备份) |
modubus-TCP
基于网络的TCP协议,使用了RTU逻辑,可以理解为把把RTU封装进TCP
包括如下内容: 1、硬件接口的pin 定义。 2、接口属性。 3、时序,或者是协议。 4、用法。。
SPI
SPI
SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信协议(全双工)
传统SPI针脚定义 片选由主机产生,降低电压,触发从机工作,一个芯片可能有多个CS引脚,每个引脚对应一个从机。 时钟信号,由主机产生,同步数据传输时序。 时钟信号、MOSI、MISO可以复用
| 针脚名称 | 功能描述 |
|---|---|
| SCLK(Serial Clock) | 时钟信号,由主机产生,同步数据传输时序 |
| MOSI(Master Out Slave In) | 主机输出→从机输入(数据发送线)接SDI |
| MISO(Master In Slave Out) | 从机输出→主机输入(数据接收线)接SDO |
| CS/SS(Chip Select) | 片选信号,低电平有效(选中指定从机) |
QSPI
QSPI(Quad SPI,四线串行外设接口)是SPI的扩展,使用4条数据线进行传输,提高数据传输速率。
| 针脚名称 | 功能描述 |
|---|---|
| SCLK(Serial Clock) | 时钟信号,由主机产生,同步数据传输时序 |
| CS/SS(Chip Select) | 片选信号,低电平有效(选中指定从机) |
| IO0/D0 | 双向数据线 0(兼容传统 SPI 的 MOSI) 双向 |
| IO1/D1 | 双向数据线 1(兼容传统 SPI 的 MISO) 双向 |
| IO2/D2 | 双向数据线 2(部分芯片复用为写保护功能 / WP#) 双向 |
| IO3/D3 | 双向数据线 3(部分芯片复用为保持功能 / HOLD#) 双向 |
LPSPI
可以理解为低功耗的QSPI,主要用于一些电池设备,有对功耗的深度优化,支持休眠模式下工作
| 引脚名称 | 功能描述 | 方向 |
|---|---|---|
| SCK | 串行时钟信号(主模式输出,从模式输入) | 主→从 |
| PCS[0-3] | 片选信号(低电平有效),选择目标从设备 | 主→从 |
| SOUT/DATA[0] | 串行数据输出(可配置为输入),四线模式下为数据位 0 | 双向 |
| SIN/DATA[1] | 串行数据输入(可配置为输出),四线模式下为数据位 1 | 双向 |
| DATA[2] | 四线模式下为数据位 2(部分芯片复用为其他功能) | 双向 |
| DATA[3] | 四线模式下为数据位 3(部分芯片复用为其他功能) | 双向 |
FlexSPI
性能最强的SPI
| 引脚名称 | 功能描述 | 方向 |
|---|---|---|
| SCK | 串行时钟(主模式输出,从模式输入) | 主→从 |
| CS[0-3] | 片选信号(低电平有效),选择目标设备 | 主→从 |
| IO[0-7] | 双向数据线(模式不同,使用数量不同) | 双向 |
| DQS | 数据选通(仅 DDR 模式需要,部分设备可省略) | 双向 |
I2C
接线/硬件设计
i2C是总线,也是IIC,通用高速通讯接口 由飞利浦发明,解决串口一对多以及速度慢的问题而研发,原理是给接收端赋予编号,实现一对多通讯,并增加SCL时钟线,可以根据接收设备发送不同的时钟信号决定不同的传输速度,原来的串口线成为单根SDA线,以高低电压指示0跟1。 一主多从,7位地址可以连接111个设备,接收端元器件一般不接内置电阻 电路设计一般都是开漏模式
| 针脚 | 名称 | 功能描述 |
|---|---|---|
| 1 | VCC/3V3/5V | 电源正极(通常 3.3V 或 5V) |
| 2 | SCL | 时钟线 |
| 3 | SDA | 数据线 |
| 4 | GND | 接地 |
![]() |
速率/时钟
可变速,标准模式100kbps,快速模式400kbps,高速模式3.4Mbps
收发协议
起始位跟结束时在一个周期内进行突变来表示
SCL高电平为传输数据模式,从主机会接收SDA的电平
下面是示例图
每个周期最后一位表示是否继续传输数据,以进行下一轮数据的发送
怎么确定是读还是写,从第一组数据用来作为指针使用,包括是读模式还是写模式,以及设备编号(器件地址,根据芯片数据手册)

linux下怎么去访问i2C
1、查看系统总线
|
|
如果没有的话,还需要加载访问驱动
|
|
2、安装i2c-tools
|
|
3、扫描总线上的设备地址
|
|
输出示例(UU表示已被内核驱动占用,20/21等为可用设备地址):
|
|
4、读取设备寄存器数据
|
|
5、写入数据到寄存器
|
|
GPIO
通用IO接口,可通过软件配置通用引脚功能的工作模式,工作模式有8种
| 序号 | 模式名称 | 大类归属 | 配置要点 & 核心特点 |
|---|---|---|---|
| 1 | 浮空输入(Input Floating) | 输入模式 | MODER=00(输入)+PUPDR=00(无上下拉);电平由外部电路决定,未接外部电路时电平漂移 |
| 2 | 上拉输入(Input Pull-Up) | 输入模式 | MODER=00+PUPDR=01(上拉);默认高电平,外部拉低时读低电平(如按键检测) |
| 3 | 下拉输入(Input Pull-Down) | 输入模式 | MODER=00+PUPDR=10(下拉);默认低电平,外部拉高时读高电平 |
| 4 | 模拟输入(Analog Input) | 模拟模式 | MODER=11(模拟);GPIO 数字电路关闭,引脚直通 ADC/DAC,用于读取 / 输出模拟信号 |
| 5 | 推挽输出(Output Push-Pull) | 输出模式 | MODER=01(输出)+OTYPER=0(推挽);可主动输出高低电平,驱动能力强 |
| 6 | 开漏输出(Output Open-Drain) | 输出模式 | MODER=01+OTYPER=1(开漏);仅能拉低电平,需外部上拉才能输出高电平 |
| 7 | 复用推挽输出(AF Push-Pull) | 复用功能模式 | MODER=10(复用)+OTYPER=0;引脚作为外设(如 UART_TX)输出端,电平由外设控制 |
| 8 | 复用开漏输出(AF Open-Drain) | 复用功能模式 | MODER=10+OTYPER=1;引脚作为外设(如 I2C_SDA)输出端,开漏特性适配总线协议 |
CPU原生
CPU总线支持的GPIO
I2C扩展
通过IIC扩展的GPIO,可以满足CPU原生数量不足的问题,可通过I2C拓展芯片扩展GPIO接口 以 PCA9555(16 路 I2C 转 GPIO)为例“
|
|
linux怎么访问GPIO
- 安装 libgpiod
|
|
- 查看系统 GPIO 控制器:
|
|
- 读取 GPIO 电平:
|
|
- 设置 GPIO 输出电平:
|
|
- 监听 GPIO 中断:
|
|
操作 I2C 转 GPIO(如 PCA9555)
I2C 转 GPIO 芯片驱动加载后会被识别为gpiochipX,操作方式与原生 GPIO 完全一致:
|
|
GPIO中断
GPIO 中断(GPIO Interrupt)是指当 GPIO 引脚的电平状态发生预设变化时(如从低到高、从高到低或保持某电平),GPIO 控制器主动向 CPU 发送的硬件中断请求。它是嵌入式系统中实现 “事件驱动” 的核心机制,替代低效的 “轮询检测”(CPU 持续查询 GPIO 状态),大幅降低系统功耗、提升响应效率。
I2S
用来做什么
专门用于声音传输的硬件接口,传输的数据格式为PCM 输出:通过 I2S 把声音数据传给音箱的 “解码芯片”,音箱再出声 输入:麦克风把声音变成数字数据,通过 I2S 传给录音笔的存储芯片,保存成音频文件
针脚定义
| 针脚名称 | 常用别名 | 方向 | 功能 |
|---|---|---|---|
| BCLK | SCK (串行时钟) 位时钟 |
主设备输出 从设备输入 |
像 “节拍器” 一样,每滴答一次传 1 位数据 |
| LRCLK | WS (字选择) FS (帧同步) |
主设备输出 从设备输入 |
告诉接收方: 0 = 左声道数据 1 = 右声道数据 |
| SD | SDO (输出) SDI (输入) |
单向 (取决于角色) |
传输实际的PCM 音频数据(0 和 1 的串) |
| MCLK(可选) | 主时钟 / 系统时钟(可选) | 主设备输出,从设备接收 | 通常是采样率的 256/384 倍,- 帮助多设备间精确同步,提高音质稳定性 |
PCIE
Gen几、x几
PCIE在arm设备上通常接什么设备或什么通讯
4G、5G模块 数据采集卡 FPGA、专用加速卡 WIFI模块、蓝牙模块
pcie跟sata复用关系(rkCPU上)
mipi
mipi是移动设备专用高速接口
CSI-2
mipi csi-2是摄像头数据接口
DSI
mipi dsi是屏幕数据接口
HSI
mipi hsi是射频数据高速接口,如5G射频
DSI转lvds
通过芯片转换,分离DSI特有的初始化跟亮度调节等控制信号 串行数据包转为 LVDS 所需的并行像素流 + 同步信号 从 MIPI 的 200mV 差分提升到 LVDS 的 350mV 标准 重新生成 LVDS 时钟和同步信号,匹配显示面板要求
DSI转HDMI
通过芯片转换,差分信后转TMDS信号
