常见外设
这一章介绍嵌入式开发中最常碰到的外设,及其工作原理。
一、GPIO(General Purpose Input/Output)
1. 用途
- 点灯、读按键、模拟时序
2. 关键概念
- 输入/输出模式:input / output / alternate function (复用)
- 上下拉:pull-up / pull-down / floating
- 驱动强度:2mA / 4mA / 8mA
- 速率:slow / medium / fast(影响边沿斜率)
- 开漏输出:用于 I2C 总线
- 中断能力:可触发 IRQ
3. Linux 操作
# 导出引脚
echo 17 > /sys/class/gpio/export
# 设置方向
echo out > /sys/class/gpio/gpio17/direction
# 设置值
echo 1 > /sys/class/gpio/gpio17/value
# 读值
cat /sys/class/gpio/gpio17/value
# 取消导出
echo 17 > /sys/class/gpio/unexport
现代内核推荐 libgpiod 或 device tree + gpio-keys 驱动。
二、UART(Universal Asynchronous Receiver/Transmitter)
1. 协议
- 无时钟线,靠波特率约定
- 帧格式:起始位 + 数据位(5-9) + 校验位(可选) + 停止位
- 常见:115200 8N1(8 位数据、无校验、1 位停止)
2. 应用场景
- 调试串口(console)
- 模块通信(GPS、蓝牙)
3. 关键参数
- 波特率误差 < 2%
- 流控:RTS/CTS(硬件)、XON/XOFF(软件)
三、I2C(Inter-Integrated Circuit)
1. 特点
- 两线制:SCL(时钟)+ SDA(数据)
- 开漏 + 上拉(必须)
- 主从结构,7-bit / 10-bit 地址
- 标准 100kHz、快速 400kHz、快速+ 1MHz、高速 3.4MHz
2. 时序
- 起始条件:SCL 高时 SDA 下降
- 停止条件:SCL 高时 SDA 上升
- ACK:每字节后第 9 个时钟拉低表示应答
3. 常见设备
- EEPROM、RTC、传感器、温湿度、音频 codec
四、SPI(Serial Peripheral Interface)
1. 特点
- 四线:SCLK、MOSI、MISO、CS(片选)
- 全双工,速度可达数十 MHz
- 主从结构,多从机通过多个 CS 选择
2. 模式(CPOL/CPHA)
| Mode | CPOL | CPHA | 空闲 SCL | 采样边沿 |
|---|---|---|---|---|
| 0 | 0 | 0 | 低 | 上升沿(第一边沿) |
| 1 | 0 | 1 | 低 | 下降沿(第二边沿) |
| 2 | 1 | 0 | 高 | 下降沿(第一边沿) |
| 3 | 1 | 1 | 高 | 上升沿(第二边沿) |
3. 常见设备
- Flash、LCD、ADC、SD 卡、RF 芯片
五、ADC / DAC
1. ADC 关键参数
- 分辨率:8/10/12/16/24 bit
- 采样率:S/s
- 输入范围:0-Vref(单端)或 ±Vref(差分)
- SNR / ENOB:信噪比 / 有效位数
2. DAC
- PWM 模拟 DAC(RC 滤波)
- 专用音频 DAC
六、PWM(Pulse Width Modulation)
1. 用途
- LED 调光
- 电机调速
- 蜂鸣器、D 类功放
- 简单 DAC
2. 参数
- 频率、占空比、极性、对齐方式(center-aligned / edge-aligned)
七、Timer / Counter
1. 类型
- 系统 Timer:内核 tick(jiffies)
- 通用定时器:用户态延时、捕获输入、PWM
- 看门狗(WDT):超时未喂狗则复位
- RTC:独立供电、秒级精度
八、其他常见外设(简述)
| 外设 | 用途 | 备注 |
|---|---|---|
| CAN | 汽车 / 工业总线 | 差分、可靠、多主 |
| USB | Host / Device / OTG | 复杂协议栈 |
| Ethernet MAC | 网络 | 需外接 PHY |
| HDMI / LVDS / MIPI-DSI | 显示 | |
| CSI / ISP | 摄像头 | |
| I2S / PCM / SPDIF | 音频 | |
| SD/MMC | 存储卡 | 单线 / 4 线 / 8 线 |
| NAND / eMMC 控制器 | 大容量存储 |