跳转至

3.3 I/O接口与设备

本节考试权重:6~8分 本节考点最多,陷阱也最多!SPI/I²C/USB都有常见的错误说法,选择题要特别留心。


一、GPIO(通用输入输出接口)

GPIO(General Purpose Input/Output)是最基础的接口,可以通过软件设置每个引脚是输入还是输出。

GPIO工作原理

        控制寄存器(GPXCON)
              ↓ 配置方向(输入/输出)
GPIO引脚 ←→ 数据寄存器(GPXDAT)
              ↑ 读取或写入数据

GPIO寄存器

寄存器 作用 典型操作
GPxCON 控制寄存器,设置引脚方向 00=输入,01=输出,10=复用功能
GPxDAT 数据寄存器,读取/写入引脚电平 读=获取输入,写=控制输出
GPxUP 上拉电阻寄存器 0=使能上拉,1=禁用上拉

GPIO位操作公式

设置输出为高电平(置1):

rGPXDAT = rGPXDAT | (1 << n);   // 将第n位设为1,其余不变

设置输出为低电平(清0):

rGPXDAT = rGPXDAT & ~(1 << n);  // 将第n位清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个组成部分(可能填空考)

  1. 发送器(Transmitter):将并行数据转换为串行数据,按位发出
  2. 接收器(Receiver):将接收到的串行位流还原为并行数据
  3. 控制单元(Control Unit):管理发送/接收逻辑,处理数据帧格式
  4. 波特率发生器(Baud Rate Generator):产生精确的通信时钟频率

UART数据帧格式

空闲  起始位  数据位(5~9位)  奇偶位  停止位  空闲
  ‾‾ | 0 | D0 D1 D2 D3 D4 D5 D6 D7 | P | 1 | ‾‾

串行通信标准对比

标准 距离 速率 连接方式 特点
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数码管:

     ┌─ a ─┐
     f     b
     ├─ g ─┤
     e     c
     └─ d ─┘  · dp

段定义(从MSB到LSB):

bit7  bit6  bit5  bit4  bit3  bit2  bit1  bit0
 dp    g     f     e     d     c     b     a

共阴极数码管

  • 共阴极:所有LED的阴极(负极)连在一起接地
  • 某段亮:对应位写1(高电平)
  • 某段灭:对应位写0

数字"5"的段码计算

考点:8段共阴极数码管显示数字5的段码 = 0x6D

数字"5"需要点亮的段:a, c, d, f, g(不亮b, e, dp)

显示"5"需要的段:
  ┌─ a ─┐   ← a 亮
  f     .   ← f 亮,b 不亮
  ├─ g ─┤   ← g 亮
  .     c   ← e 不亮,c 亮
  └─ d ─┘   ← d 亮
dp = 0(小数点不亮)

段码计算(共阴极,亮=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芯片详解