3.3 I/O接口与设备
本节考试权重:6~8分 本节考点最多,陷阱也最多!SPI/I²C/USB都有常见的错误说法,选择题要特别留心。
一、GPIO(通用输入输出接口)
GPIO(General Purpose Input/Output)是最基础的接口,可以通过软件设置每个引脚是输入还是输出。
GPIO工作原理
GPIO寄存器
| 寄存器 | 作用 | 典型操作 |
|---|---|---|
| GPxCON | 控制寄存器,设置引脚方向 | 00=输入,01=输出,10=复用功能 |
| GPxDAT | 数据寄存器,读取/写入引脚电平 | 读=获取输入,写=控制输出 |
| GPxUP | 上拉电阻寄存器 | 0=使能上拉,1=禁用上拉 |
GPIO位操作公式
设置输出为高电平(置1):
设置输出为低电平(清0):
为什么要用 | 和 &?
直接赋值 rGPCDAT = 0x01 会影响其他引脚!使用 |(或)只改变目标位,用 &(与非)只清除目标位,其他引脚状态保持不变。
二、I²C总线
I²C(Inter-Integrated Circuit,IIC,"I方C")是一种两线制串行总线,由飞利浦公司发明,广泛用于低速外设通信。
I²C线路组成
I²C是4线还是2线?
I²C物理连接需要4根线:SCL、SDA、VCC、GND,但真正的信号线只有2根:SCL(时钟)和SDA(数据)。VCC和GND是电源线,不算通信信号线。
| 信号线 | 全称 | 作用 |
|---|---|---|
| SCL | Serial Clock | 时钟线,由主机控制 |
| SDA | Serial Data | 数据线,双向 |
| VCC | - | 电源(通常3.3V或5V) |
| GND | - | 地 |
I²C通信特点
| 特性 | 说明 |
|---|---|
| 拓扑结构 | 多主多从(支持多个主机) |
| 传输速率 | 标准100kbps,快速400kbps,高速3.4Mbps |
| 地址机制 | 7位或10位设备地址 |
| 通信方式 | 半双工(同一时刻只能单向传输) |
| 总线上拉 | SCL和SDA都需要上拉电阻 |
I²C总线仲裁规则
考点:I²C仲裁 = 谁先发低电平谁控制总线
当多个主机同时想占用总线时: 1. 每个主机在发送数据的同时,读取SDA线上的电平 2. 如果自己发送的是高电平,但读到的是低电平,说明别人在拉低总线 3. 读到的电平与自己发的相同则继续,不同则退出仲裁 4. 最终发低电平(0)的主机赢得仲裁,因为低电平会"覆盖"高电平
本质原因:I²C使用线与(Wired-AND)逻辑,任何一个设备拉低总线,总线就变为低电平。
I²C通信流程
主机发起:START信号(SCL高时,SDA从高变低)
↓
发送7位从机地址 + 1位读写方向
↓
等待从机ACK(应答)
↓
传输数据字节(每字节后跟ACK)
↓
主机发送:STOP信号(SCL高时,SDA从低变高)
三、SPI接口
SPI(Serial Peripheral Interface,串行外设接口)是一种高速的同步串行通信总线,由摩托罗拉公司发明。
SPI线路组成
SPI是4线制(不含电源地,信号线有4根):
| 信号线 | 全称 | 方向 | 说明 |
|---|---|---|---|
| SCK | Serial Clock | 主→从 | 时钟线,由主机控制 |
| MOSI | Master Out Slave In | 主→从 | 主机发送,从机接收 |
| MISO | Master In Slave Out | 从→主 | 从机发送,主机接收 |
| SSEL/CS | Slave Select / Chip Select | 主→从 | 片选,低电平有效 |
记忆MOSI/MISO
- MOSI = Master Out, Slave In → 主机发出去的
- MISO = Master In, Slave Out → 主机收进来的
SPI拓扑结构
重要考点:SPI支持多主多从!
SPI支持以下拓扑: - 一主一从(最常见) - 一主多从(通过多个SSEL/CS区分不同从机) - 多主多从(SPI支持!)
考试陷阱: 题目会说"SPI不能构成多主多从系统"——这是错误的!SPI支持多主多从配置,通过仲裁机制实现。
SPI vs I²C 对比
| 对比项 | SPI | I²C |
|---|---|---|
| 信号线数 | 4根(SCK/MOSI/MISO/SS) | 2根信号线(SCL/SDA) |
| 速度 | 快(几十MHz) | 较慢(最高3.4MHz) |
| 通信方式 | 全双工 | 半双工 |
| 多主支持 | 支持多主多从 | 支持多主(地址区分从机) |
| 从机区分 | 通过独立的SS/CS线 | 通过7位地址 |
| 适用场景 | 高速外设(Flash、LCD、ADC) | 低速配置(传感器、EEPROM) |
四、UART(通用异步收发器)
UART(Universal Asynchronous Receiver/Transmitter)是最经典的串行通信接口。
UART组成
UART的4个组成部分(可能填空考)
- 发送器(Transmitter):将并行数据转换为串行数据,按位发出
- 接收器(Receiver):将接收到的串行位流还原为并行数据
- 控制单元(Control Unit):管理发送/接收逻辑,处理数据帧格式
- 波特率发生器(Baud Rate Generator):产生精确的通信时钟频率
UART数据帧格式
串行通信标准对比
| 标准 | 距离 | 速率 | 连接方式 | 特点 |
|---|---|---|---|---|
| RS-232 | ~15m | 低(几十kbps) | 点对点 | 电脑串口,±12V电平 |
| RS-485 | ~1200m | 较高(10Mbps) | 总线,最多32节点 | 差分信号,抗干扰强 |
| CAN | ~1km | 1Mbps | 总线,多节点 | 工业标准,汽车常用 |
五、USB接口
USB主要特性
考点:USB 2.0不是速率最高的版本
USB 3.0及以上版本传输速率更高: - USB 1.1:12Mbps - USB 2.0:480Mbps(High Speed) - USB 3.0:5Gbps(SuperSpeed) - USB 3.1:10Gbps - USB 3.2:20Gbps
题目若说"USB 2.0是传输速率最高的USB标准"——这是错误的!
| 特性 | 说明 |
|---|---|
| 热插拔 | 支持(USB最大亮点之一) |
| 内置电源 | 支持(5V,最大500mA或更高) |
| USB 2.0传输方式 | 半双工差分信号(D+/D-差分对) |
| 设备识别 | 支持即插即用,自动枚举 |
| 连接拓扑 | 星型(Hub扩展),最多127个设备 |
USB 2.0是半双工差分传输
USB 2.0使用差分信号(D+和D-),通信方式是半双工(同一时刻只能单向传数据)。USB 3.0引入了SuperSpeed通道,支持全双工。
六、LED数码管
8段LED数码管结构
常见的7段(实为8段,含小数点dp)LED数码管:
段定义(从MSB到LSB):
共阴极数码管
- 共阴极:所有LED的阴极(负极)连在一起接地
- 某段亮:对应位写1(高电平)
- 某段灭:对应位写0
数字"5"的段码计算
考点:8段共阴极数码管显示数字5的段码 = 0x6D
数字"5"需要点亮的段:a, c, d, f, g(不亮b, e, dp)
段码计算(共阴极,亮=1,灭=0):
| dp | g | f | e | d | c | b | a |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
转换为16进制:0110 1101 = 0x6D
七、定时/计数组件
嵌入式系统中常见的定时/计数类组件:
| 组件 | 全称 | 功能 |
|---|---|---|
| Timer | 定时器 | 产生定时中断,PWM输出 |
| RTC | Real-Time Clock(实时时钟) | 记录日期时间,低功耗 |
| WDT | Watchdog Timer(看门狗定时器) | 程序跑飞时自动复位 |
考点:ADC不属于定时/计数组件!
ADC(模数转换器)是模拟量采集组件,属于前向通道,不是定时/计数组件。 定时/计数组件只有:Timer(定时器)、RTC(实时时钟)、WDT(看门狗)。
八、互连通信组件
嵌入式系统中用于芯片间通信的组件(互连通道):
| 组件 | 特点 | 典型用途 |
|---|---|---|
| SPI | 高速,4线,全双工 | Flash读写、LCD、ADC |
| I²C | 低速,2线,地址寻址 | 传感器、EEPROM、RTC |
| CAN | 差分,多主,工业级 | 汽车总线、工业控制 |
| UART/RS-232 | 异步,点对点 | 调试接口、模块通信 |
考点:DAC不属于互连通信组件!
DAC(数模转换器)是模拟量输出组件,属于后向通道,不是互连通信组件。 互连通信组件包括:SPI、I²C、CAN、UART等通信总线。
九、本节考题练习
选择题
题1: 以下哪个设备不属于定时/计数组件?
A. 定时器(Timer) B. 实时时钟(RTC) C. 看门狗定时器(WDT) D. 模数转换器(ADC) ✓
解析: ADC是模数转换器,负责将模拟信号转为数字信号,属于前向通道的采集组件,不是定时/计数组件。定时/计数组件只有Timer、RTC、WDT。
题2: 以下关于SPI接口的说法,错误的是:
A. SPI有4根信号线(SCK/MOSI/MISO/SS) B. SPI支持全双工通信 C. SPI传输速度比I²C快 D. SPI不能构成多主多从系统 ✓(此项是错的)
解析: SPI支持多主多从系统。选项D的说法是错误的,SPI通过总线仲裁机制可以实现多主多从配置。
题3: USB 2.0的传输速率是480Mbps,以下说法正确的是:
A. USB 2.0是目前速率最高的USB标准 B. USB 2.0是全双工传输 C. USB 3.0的传输速率高于USB 2.0 ✓ D. USB不支持热插拔
解析: USB 3.0速率5Gbps,远高于USB 2.0的480Mbps。USB 2.0是半双工差分传输。USB最大特点之一就是支持热插拔。
题4: 8段共阴极LED数码管显示数字"5"的段码是:
A. 0x5B B. 0x4F C. 0x6D ✓ D. 0x7D
解析: 数字5点亮段a,c,d,f,g,对应二进制 dp=0,g=1,f=1,e=0,d=1,c=1,b=0,a=1 = 0110 1101 = 0x6D。
题5: 以下哪个不属于互连通信组件?
A. SPI B. I²C C. CAN D. DAC ✓
解析: DAC(数模转换器)是模拟量输出组件(后向通道),不是通信组件。SPI、I²C、CAN都是芯片间通信总线,属于互连通信组件。
填空题
填空1: I²C总线有____根物理线(含电源),其中信号线为____(时钟)和____(数据)两根。
答案: 4根;SCL;SDA
填空2: SPI总线的4根信号线分别是:____(时钟)、____(主出从入)、____(主入从出)、____(片选)。
答案: SCK;MOSI;MISO;SSEL(SS/CS)
填空3: UART由____、____、____、____四部分组成。
答案: 发送器;接收器;控制单元;波特率发生器
真题演练
以下是NCRE三级嵌入式真题中与本节相关的典型考题:
1. 下面是基于ARM内核的嵌入式芯片中有关GPIO的叙述,其中错误的是( )。
- A)GPIO作为输入接口时具有缓冲功能
- B)GPIO作为输出接口时具有锁存功能
- C)GPIO的引脚一般是多功能复用的
- D)GPIO一般只具有0态和1态,不具有高阻状态
答案解析
答:D GPIO的引脚一般是多功能复用的,具有0态、1态和高阻状态三种状态;作为输入接口时具有缓冲功能,作为输出接口时具有锁存功能。D项说"不具有高阻状态"是错误的。
2. 下面关于UART、RS-232、RS-485的叙述中,错误的是( )。
- A)基于UART可以构成RS-232接口和RS-485接口
- B)RS-485接口标准的最长通信距离与RS-232接口标准的最长通信距离相当
- C)RS-485标准采用差分信号传输方式,因此具有很强的抗共模干扰能力
- D)通过RS-485可构成主从式多机通信系统,主机可采用轮询方式与各从机建立通信连接
答案解析
答:B RS-232无法消除共模干扰,通信距离只有15m左右;而RS-485采用差分信号传输方式,具有很强的抗共模干扰能力,传输距离可达1200m。两者的最长通信距离相差极大,B项说"相当"是错误的。
3. 下面关于嵌入式系统中使用的触摸屏的叙述中,错误的是( )。
- A)目前嵌入式系统中使用的触摸屏除电阻式触摸屏外,还有电容式触摸屏
- B)电阻式触摸屏是一种电阻传感器,它将矩形区域中触摸点(X,Y)的物理位置转换为代表X坐标和Y坐标的电压
- C)电阻式触摸屏通过多点触摸或滑动进行操作
- D)相对于电容式触摸屏,电阻式触摸屏结构简单、价格低
答案解析
答:C 电阻式触摸屏(俗称软屏)基本原理是利用压力感应进行控制,结构简单、价格低;而电容式触摸屏(俗称硬屏)结构复杂、价格高。带多点触摸或滑动操作的触摸屏属于电容式,而非电阻式。
4. 【填空题】ARM处理器芯片内部的_组件包括ADC和DAC,有的还带有比较器等。这对于既需要处理_信号又需要处理模拟信号的混合系统的设计提供了较好的解决方案。
答案
答:模拟;数字 ARM处理器芯片内部的模拟组件包括ADC(模数转换器)和DAC(数模转换器),有的还带有比较器等。这对于既需要处理数字信号又需要处理模拟信号的混合系统的设计提供了较好的解决方案。
上一节:3.2 嵌入式系统存储器 | 下一节:3.4 S3C2410芯片详解