3.4 S3C2410/S3C2440 芯片详解
本节考试权重:4~6分 本节主要考GPIO配置的位操作(综合题常见),以及存储地址映射。需要会算寄存器操作。
一、S3C2410基本特性
S3C2410是三星(Samsung)公司生产的一款通用嵌入式SoC(System on Chip)芯片,在嵌入式教学中被广泛使用。
| 特性 | 参数 |
|---|---|
| CPU内核 | ARM920T(ARMv4T架构) |
| 主频 | 最高203MHz |
| 工作电压 | 1.8V内核,3.3V I/O |
| 片上总线 | AHB(系统总线)+ APB(外围总线) |
| GPIO端口 | A~H共8个端口 |
| 存储bank | 8个(nGCS0~nGCS7),每个32MB |
| 片上外设 | UART×3、SPI×2、I²C、USB、LCD、SD卡 |
ARM920T内核简介
ARM920T是经典的32位RISC处理器核,支持ARM和Thumb两套指令集,内含独立的16KB指令Cache和16KB数据Cache,以及MMU(内存管理单元),能运行Linux等操作系统。
二、片上总线结构
S3C2410采用AMBA总线架构,分两层:
┌──────────────────────────────────────┐
│ AHB 系统总线(高速) │
│ ARM920T核 DMA控制器 内存控制器 │
│ LCD控制器 USB主机控制器 NAND控制器 │
└──────────────────┬───────────────────┘
│ APB总线桥
┌──────────────────┴───────────────────┐
│ APB 外围总线(低速) │
│ UART0/1/2 SPI I²C I²S GPIO │
│ 定时器 RTC WDT ADC PWM │
└──────────────────────────────────────┘
关键点: DMA控制器挂在AHB,所有慢速外设(UART/GPIO/ADC等)挂在APB。
三、GPIO端口详解
端口概览
S3C2410有A~H共8组GPIO端口,每个端口包含多个引脚。
| 端口 | 引脚数 | 主要用途 |
|---|---|---|
| GPIOA(GPA) | 23 | 地址总线复用 |
| GPIOB(GPB) | 11 | 通用I/O |
| GPIOC(GPC) | 16 | 通用I/O、LCD信号 |
| GPIOD(GPD) | 16 | 通用I/O、LCD信号 |
| GPIOE(GPE) | 16 | I²C(GPE14/GPE15)、I²S、SD |
| GPIOF(GPF) | 8 | 中断、通用I/O |
| GPIOG(GPG) | 16 | 中断、SPI、SD |
| GPIOH(GPH) | 11 | UART信号 |
每个端口的寄存器
| 寄存器 | 命名规律 | 功能 |
|---|---|---|
| GPXCON | X=A/B/C/D/E/F/G/H | 控制寄存器:配置每个引脚功能 |
| GPXDAT | X=A/B/C/D/E/F/G/H | 数据寄存器:读取输入/控制输出 |
| GPXUP | X=B/C/D/E/F/G/H | 上拉寄存器(A端口无上拉) |
引脚配置编码
每个引脚用2个bit来配置:
| 2位编码 | 含义 |
|---|---|
| 00 | 输入(Input) |
| 01 | 输出(Output) |
| 10 | 复用功能1(Alternate Function 1) |
| 11 | 复用功能2(Alternate Function 2)或保留 |
考点:00=输入,01=输出,10=复用功能
举例: GPCCON寄存器(GPC端口控制寄存器)
四、GPIO综合操作示例(官方样题重点)
这是课程中最典型的GPIO编程题,要求理解位操作逻辑。
题目场景
硬件连接: - GPC0 → 红色LED(低电平点亮) - GPC1 → 绿色LED(低电平点亮)
注意: 这里LED用低电平驱动(LED一端接GPC引脚,另一端接VCC),所以: - GPC引脚输出低(0)→ LED亮 - GPC引脚输出高(1)→ LED灭
步骤1:初始化GPIO为输出模式
GPC0在位[1:0],GPC1在位[3:2],都要设为 01(输出):
操作过程:
// 第1步:用OR将 bit[3:0] 置为 xxxx|0101 = 打开相关位
rGPCCON = rGPCCON | 0x0000000F;
// 等效:先把低4位全部置1(OR 0x0000000F)
// 但这样低4位变成全1(1111),我们想要的是0101
// 第2步:用AND去掉多余的1(把 bit[3] 和 bit[1] 清0)
// 0xFFFFFF5 = ...1111 0101,AND之后只保留 bit[2] 和 bit[0]
rGPCCON = rGPCCON & 0xFFFFFFF5;
更标准的写法(推荐)
步骤2:控制LED亮灭
点亮绿色LED(GPC1输出低电平0):
熄灭绿色LED(GPC1输出高电平1):
点亮红色LED(GPC0输出低电平0):
熄灭红色LED(GPC0输出高电平1):
汇总表
| 操作 | 代码 | 说明 |
|---|---|---|
| 点亮绿色LED(GPC1) | rGPCDAT = rGPCDAT & 0xFFFFFFFD |
bit1清0(低电平亮) |
| 熄灭绿色LED(GPC1) | rGPCDAT = rGPCDAT \| 0x0002 |
bit1置1(高电平灭) |
| 点亮红色LED(GPC0) | rGPCDAT = rGPCDAT & 0xFFFFFFFE |
bit0清0(低电平亮) |
| 熄灭红色LED(GPC0) | rGPCDAT = rGPCDAT \| 0x0001 |
bit0置1(高电平灭) |
注意亮/灭与高/低的关系
本例LED是低电平驱动(低亮高灭),不同硬件可能相反。考试题目会说明连接方式,要仔细看。
五、GPE端口与I²C功能
考点:GPE15=IICSDA,GPE14=IICSCL,配置为10时启用I²C
I²C引脚配置
| 引脚 | GPECON配置值 | 功能 |
|---|---|---|
| GPE15 | 10 | IICSDA(I²C数据线) |
| GPE14 | 10 | IICSCL(I²C时钟线) |
GPE15对应 GPECON bit[31:30],GPE14对应 GPECON bit[29:28]:
初始化I²C功能(设GPECON bit[31:28] = 1010):
// 目标:bit[31:30] = 10(GPE15=IICSDA),bit[29:28] = 10(GPE14=IICSCL)
// 合并:bit[31:28] = 1010 = 0xA,即 0xA0000000
// 第1步:OR设置这4位
rGPECON = rGPECON | 0xA0000000;
// bit[31:30] 和 bit[29:28] 变为 11 和 11(可能被过度置位)
// 第2步:AND清除多余的1
// 0xAFFFFFFF = 1010 1111 1111 ... 保留10xx格式
rGPECON = rGPECON & 0xAFFFFFFF;
理解0xAFFFFFFF
0xA = 1010,所以 0xAFFFFFFF = 1010 1111 1111 1111 1111 1111 1111 1111
- bit31 = 1,bit30 = 0 → GPE15的bit[31:30]结果为 ?0
- bit29 = 1,bit28 = 0 → GPE14的bit[29:28]结果为 ?0
与0xA0000000做OR后再AND 0xAFFFFFFF,最终 bit[31:28] = 1010,即I²C模式。
六、S3C2410存储器地址映射(复习)
| 片选信号 | 地址范围 | 每段大小 | 典型用途 |
|---|---|---|---|
| nGCS0 | 0x00000000 ~ 0x07FFFFFF | 32MB | NOR Flash,启动ROM |
| nGCS1 | 0x08000000 ~ 0x0FFFFFFF | 32MB | 扩展存储 |
| nGCS2 | 0x10000000 ~ 0x17FFFFFF | 32MB | AX88796以太网 |
| nGCS3 | 0x18000000 ~ 0x1FFFFFFF | 32MB | 扩展存储 |
| nGCS4 | 0x20000000 ~ 0x27FFFFFF | 32MB | 扩展存储 |
| nGCS5 | 0x28000000 ~ 0x2FFFFFFF | 32MB | 扩展存储 |
| nGCS6 | 0x30000000 ~ 0x37FFFFFF | 32MB | SDRAM |
| nGCS7 | 0x38000000 ~ 0x3FFFFFFF | 32MB | SDRAM |
七、本节考题练习
选择题
题1: S3C2410中,GPIO端口的每个引脚由GPXCON中的几位控制?
A. 1位 B. 2位 ✓ C. 4位 D. 8位
解析: 每个GPIO引脚由2位控制:00=输入,01=输出,10=复用功能1,11=复用功能2/保留。
题2: 以下代码的作用是什么?
A. 点亮所有LED B. 熄灭GPC0对应的LED C. 点亮GPC0对应的LED(输出低电平) ✓ D. 将GPC0配置为输出
解析:
& 0xFFFFFFFE将bit0清零,即GPC0输出低电平(0)。如果LED是低电平驱动,则点亮。这是数据寄存器操作,不改变控制寄存器(方向)。
题3: S3C2410的GPE14和GPE15引脚,当GPECON相应位配置为10时,实现的功能是:
A. 通用GPIO输出 B. SPI通信 C. I²C通信(IICSCL和IICSDA) ✓ D. UART通信
解析: GPE14=IICSCL(I²C时钟),GPE15=IICSDA(I²C数据),配置为10时启用I²C功能。
题4: 在S3C2410开发板中,以太网芯片AX88796连接在nGCS2片选上,其起始地址是:
A. 0x00000000 B. 0x08000000 C. 0x10000000 ✓ D. 0x20000000
解析: nGCS2是第3个bank(0-indexed),起始地址 = 2 × 0x08000000 = 0x10000000。
填空题
填空1: S3C2410的CPU内核是____,片上总线使用____(高速系统总线)和____(低速外围总线)。
答案: ARM920T;AHB;APB
填空2: S3C2410 GPIO引脚配置中,GPXCON的2位编码含义:00表示____,01表示____,10表示____。
答案: 输入;输出;复用功能
填空3: 将GPC1配置为输出,点亮连接在GPC1上的LED(低电平有效),数据寄存器应执行:
rGPCDAT = rGPCDAT \_\_\_\_ \_\_\_\_
答案:
&0xFFFFFFFD(将bit1清0,输出低电平)
真题演练
以下是NCRE三级嵌入式真题中与本节相关的典型考题:
1. 下面关于三星公司基于ARM9内核的S3C2410嵌入式微处理器芯片的叙述中,错误的是( )。
- A)S3C2410包含32位嵌入式微处理器
- B)内部具有分离的指令Cache和数据Cache
- C)高速组件和低速外设接口均采用AHB总线
- D)内部集成了存储器控制器
答案解析
答:C S3C2410使用ARM公司特有的AMBA总线,对于高速组件采用AHB总线,而对于低速外设接口则采用APB总线,AHB通过桥接器连接APB。C项说"均采用AHB总线"是错误的。
2. 下面关于S3C2410存储器控制的叙述中,错误的是( )。
- A)存储器控制器和NAND Flash控制器等属于存储器控制组件
- B)系统的I/O与存储器采用统一编址方式
- C)地址空间共1GB
- D)所有BANK的总线宽度只能选择16位或32位
答案解析
答:D S3C2410存储器控制器提供8个BANK(每个BANK大小为128MB),地址空间共1GB,支持大/小端模式。其中BANK0只能是16位和32位总线宽度的访问,但其他所有BANK可访问8位、16位和32位。D项说"只能选择16位或32位"是错误的。
3. 【填空题】三星公司基于ARM9内核的S3C2410嵌入式微处理器芯片使用由AHB总线和APB总线组成的AMBA总线。对于高速组件采用_总线连接,而对于低速外设接口则采用_总线连接。
答案
答:AHB;APB AHB(Advanced High-performance Bus,先进高性能总线)用于连接高性能系统组件或高带宽组件。APB(Advanced Peripheral Bus,先进外围总线)用于连接所有通用外设组件。
4. 【填空题】S3C2410采用AHB总线和APB总线构建片上系统。芯片内部的USB设备接口与_总线相连,芯片内部的USB主控制器接口与_总线相连。
答案
答:APB;AHB USB设备接口属于低速外设,与APB总线相连;USB主控制器是高速设备,与AHB总线相连。注意两者连接的总线不同,这是常考的易混淆知识点。
上一节:3.3 I/O接口与设备 | 下一节:第三章测验