跳转至

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端口控制寄存器)

GPCCON 位分配:
bit[1:0]  → GPC0 配置
bit[3:2]  → GPC1 配置
bit[5:4]  → GPC2 配置
...以此类推

四、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(输出):

目标:将GPCCON的 bit[3:0] 设为 0101(GPC1=01输出,GPC0=01输出)
即:GPCCON bit[3:2] = 01,bit[1:0] = 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;

更标准的写法(推荐)

// 先清零 bit[3:0],再或入 0101
rGPCCON = (rGPCCON & 0xFFFFFFF0) | 0x00000005;
// 0xFFFFFFF0 = ...1111 0000 → 清零低4位
// 0x00000005 = ...0000 0101 → GPC1=01(输出), GPC0=01(输出)

步骤2:控制LED亮灭

点亮绿色LED(GPC1输出低电平0):

rGPCDAT = rGPCDAT & 0xFFFFFFFD;
// 0xFFFFFFFD = ...1111 1101,将 bit1(GPC1)清0,其余不变

熄灭绿色LED(GPC1输出高电平1):

rGPCDAT = rGPCDAT | 0x0002;
// 0x0002 = ...0000 0010,将 bit1(GPC1)置1

点亮红色LED(GPC0输出低电平0):

rGPCDAT = rGPCDAT & 0xFFFFFFFE;
// 0xFFFFFFFE = ...1111 1110,将 bit0(GPC0)清0

熄灭红色LED(GPC0输出高电平1):

rGPCDAT = rGPCDAT | 0x0001;
// 0x0001 = ...0000 0001,将 bit0(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: 以下代码的作用是什么?

rGPCDAT = rGPCDAT & 0xFFFFFFFE;

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接口与设备 | 下一节:第三章测验