第六章基于 s3c44b0x 嵌入式系统应用开发实例

Post on 17-Mar-2016

77 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

第六章基于 S3C44B0X 嵌入式系统应用开发实例. 6.1 S3C44B0X 处理器介绍. 6.1.1 Samsung S3C44B0X 简介 6.1.2 Samsung S3C44B0X 特点 6.1.3 S3C44B0X 功能结构框图 6.1.4 S3C44B0X 引脚信号描述. 6.1.1 Samsung S3C44B0X 简介. Samsung S3C44B0X 微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。 - PowerPoint PPT Presentation

TRANSCRIPT

第六章 基于 S3C44B0X 嵌入式系统应用开发实例

6.1 S3C44B0X 处理器介绍 6.1.1 Samsung S3C44B0X 简介 6.1.2 Samsung S3C44B0X 特点 6.1.3 S3C44B0X 功能结构框图 6.1.4 S3C44B0X 引脚信号描述

6.1.1 Samsung S3C44B0X 简介 Samsung S3C44B0X 微处理器是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。 片内集成 ARM7TDMI 核,工作在 66MHz ,采用 0.25μm CMOS 工艺制造,并在 ARM7

TDMI 核基本功能的基础集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统。

片上集成的主要功能如下:片上在 ARM7TDMI 基础上增加 8KB 的 Cache ;外部扩充存储器控制器;LCD 控制器(最大支持 256 色的 DSTN ),并带有 1个 LCD 专用 DMA 通道;2 个通用 DMA 通道 /2 个带外部请求管脚的 DMA 通道;2 个带有握手协议的 UART , 1 个 SIO ;1 个多主的 IIC 总线控制器;1 个 IIS 总线控制器;5 个 PWM 定时器及 1 个内部定时器;看门狗定时器;71 个通用可编程 I/O 口, 8 个外部中断源;功耗控制模式:正常、低速、休眠和停止;8 路 10 位 ADC ;具有日历功能的 RTC (实时时钟);片上集成 PLL 时钟发生器。

6.1.2 Samsung S3C44B0X 特点一、 S3C44B0X 体系结构

S3C44B0X 是基于 ARM7TDMI 的体系结构, ARM7TDMI 是 ARM 公司最早为业界普遍认可且赢得了最为广泛的应用的处理器核。

二、系统(存储)管理 支持大、小端模式(通过外部引脚来选择); 地址空间:包含 8 个存储体,每个存储体的大小为 32M 字节,总共有 256M 字节的地址空间; 对所有存储体的访问大小均可进行改变( 8 位 /

16 位 /32 位); 8 个存储体中, Bank0~Bank5 可以用于 ROM 、

SRAM 等存储器, Bank6 、 Bank7 可用于 ROM 、 SRAM 、 FP/EDO/SDRAM 等存储器;

7 个存储体起始地址固定, 1 个存储体的起始地址可变。

1 个起始地址及大小可变的地址空间; 所有存储器空间的访问周期都可以通过编程配置; 提供外部扩展总线的等待周期; 在低功耗的情况下支持 DRAM/SDARM 自动刷新; 支持地址对称或非地址对称的 DRAM 。

三、 Cache 和片内 SRAM

4 路组相联统一的 8KB 指令 / 数据 Cache ; 未作为 Cache 使用的 0/4/8 Kbytes Cache 存储空间可作为片内 SRAM 使用; Cache 伪 LRU (最近最少使用)的替换算法; 通过在主内存和缓冲区内容之间保持一致的方式写内存; 具有四级深度的写缓冲; 当缓冲区出错时,请求数据填充。

四、时钟和功耗管理 低功耗; 片上 PLL 使得 MCU 的工作时钟最高为 66

MHz ; 时钟可以通过软件选择性地反馈回每个功能块; 功耗管理模式为:

正常模式:正常运行模式;低速模式:不带 PLL 的低频时钟;休眠模式:只使 CPU 的时钟停止;停止模式:所有时钟都停止。

EINT[7:0] 或 RTC 警告中断可使功耗管理从停止模式中唤醒。

五、中断控制器 30 个中断源( 1 个看门狗定时器中断, 6 个定时器中断, 6 个 UART 中断, 8 个外部中断, 4 个 DMA 中断, 2 个 RTC 中断, 1 个

ADC 中断, 1 个 IIC 中断, 1 个 SIO 中断); 矢量 IRQ 中断模式减少中断响应周期; 外部中断源的电平/边沿模式; 可编程的电平/边沿极性; 支持紧急中断请求的 FIQ (快速中断请求)。

六、带 PWM 的定时器(脉宽可调制)5 个 16 位带 PWM 的定时器, 1 个 16位基于 DMA 或基于中断的内部定时器;可编程的工作周期、频率和极性;死区( Dead-zone )产生器;支持外部时钟源。

七、实时时钟 RTC全时钟特点:毫秒、秒、分、时、天、星期、月、年;运行于 32.768KHz ;CPU 唤醒的警告中断;时间滴答( Time tick )中断。 八、通用输入/输出端口8 个外部中断端口;71 个(多功能)复用输入/输出口。

九、 UART2 个基于 DMA 或基于中断的 UART ;支持 5 位、 6 位、 7 位、 8 位串行数据传送 /接收;在传送 /接收时支持硬件握手;波特率可编程;支持 IrDA 1.0 ( 115.2kbps );用于回环测试模式;每个通道有 2 个用于接收和发送的内部 3

2 字节 FIFO 。

十、 DMA 控制器2 路通用的无 CPU干涉的 DMA 控制器;2 路桥式 DMA (外设 DMA )控制器;支持 I/O到内存、内存到 IO 、 IO到 IO的桥式 DMA传送,有 6种 DMA 请求方式:软件、 4 个内部功能块( UART 、 S

IO 、实时器、 IIS )和外部管脚;DMA 之间优先级次序可编程;突发传送模式提高了 FPDRAM 、 EDOD

RAM 和 SDRAM 的传送率;支持内存到外围设备的 fly-by 模式和外围设备到内存的传送模式。

十一、 A/D 转换8 通道多路 ADC ;最大转换速率 100KSPS/10 位。

十二、 LCD 控制器支持彩色/单色/灰度 LCD ;支持单扫描和双扫描显示;支持虚拟显示功能;系统内存可作为显示内存;专用 DMA 用于从系统内存中提取图像数据;可编程屏幕大小;灰度: 16 级;彩色模式: 256 色。

十三、看门狗定时器16 位看门狗定时器;定时中断请求或系统超时复位。 十四、 IIC 总线接口1 个基于中断操作的多主的 IIC 总线;8 位双向串行数据传送器能够工作于 100Kbps的标准模式和 400Kbps 的快速模式。 十五、 IIS 总线接口1 路基于 DMA操作的音频 IIS 总线接口;每通道 8/16 位串行数据传送;支持 MSB 可调整的数据格式。

十六、 SIO (同步串行 I/0 )1 路基于 DMA 或基于中断的 SIO ;波特率可编程;支持 8 位 SIO 的串行数据传送 /接收操作。 十七、操作电压范围内核: 2.5V ; I/O : 3.0V~ 3.6V 。 十八、运行频率最高达 66MHz 。 十九、封装160LQFP/160FBGA 。

6.1.3 S3C44B0X 功能结构框图 S3C44B0X 的体系结构的功能框图:

基于 S3C44B0X 的嵌入式系统体系结构LCD显示

线性 Flash( BIOS )SDRAM(系统内存)

非线性 Flash(硬盘) 键盘输入 TCP/IP 协议

CAN BUS

JTAG调试接口 串行通信接口

USB接口 基于 ARM7TDMI 的 32 位微处理器 S3C44B

0X

6.1.4 S3C44B0X 引脚信号描述

S3C44B0X 引脚按以下几种功能详细列表描述信号功能。

一、总线控制信号 S3C44B0 的 X 总线控制信号的引脚

二、 DRAM/SDRAM/SRAM

三、 LCD 控制信号

四、 TIMER/PWM 控制信号

五、中断控制信号

六、 DMA 控制信号的引脚

6.2 S3C44B0X 存储控制器功能及应用开发 6.2.1 S3C44B0X 存储控制器概述 6.2.2 S3C44B0X 存储器空间划分简述 6.2.3 S3C44B0X 存储控制器功能描述 6.2.4 S3C44B0X 存储控制器的特殊功能寄存器 6.2.5 S3C44B0X 存储器应用编程

6.2.1 S3C44B0X 存储控制器概述 在基于 ARM 核的嵌入式应用系统中一般包含多种类型的存储器件,如 Flash 、 ROM 、 SRAM和 SDRAM 等。不同类型的存储器对速度、数据宽度等的要求也不同。为了实现对这些不同类型的存储器进行管理,就需要有一个存储器管理控制器。 S3C44B0X 的存储器管理控制器提供支持片外存储器访问需要的控制信号,实现对片外存储器的管理。

6.2.2 S3C44B0X 存储器空间划分 地址空间:

包含 8 个地址空间,每个地址空间的大小为 32M 字节,总共有 256M 字节的地址空间;

8 个地址空间中 :6 个地址空间可以用于 ROM 、 SRAM 等存储器 ;2 个地址空间用于 ROM 、 SRAM 、 FP/EDO/SDR

AM 等存储器;7 个起始地址固定的地址空间;1 个起始地址可变的地址空间;

S3C44B0X复位后的存储器地址分配如下图:

从 S3C44B0X复位后的存储器地址分配图可以看出: 特殊功能寄存器位于 0x01C00000到 0x02000000 的 4

M 空间内; Bank0-Bank5 的起始地址和空间大小都是固定的; Bank6 的起始地址是固定的,空间可以配置为 2/4/8/16/

32M 。 Bank7 的空间大小和 Bank6 一样是可变的,也可以配置为 2/4/8/16/32M 。 Bank7 的起始地址是可变的。 如果同时使用 Bank6/Bank7 ,则要求连接相同容量的存储器,而且地址空间在物理上是连续的。

地址 2 MB 4 MB 8 MB 16 MB 32 MB

Bank6

起始地址 0xc00,0000 0xc00,0000 0xc00,0000 0xc00,0000 0xc00,0000

结束地址 0xc1F,FFFF 0xc3F,FFFF 0xc7F,FFFF 0xcFF,FFFF 0xDFF,FFFF

Bank7

起始地址 0xc20,0000 0xc40,0000 0xc80,0000 0xD00,0000 0xE00,0000

结束地址 0xc3F,FFFF 0xc7F,FFFF 0xcFF,FFFF 0xDFF,FFFF 0xFFF,FFFF

Bank6 和 Bank7 的详细的地址和空间大小的关系可以参考下表:

典型系统中存储体的分配情况存储体 与存储体的接口Bank0 NOR Flash ( BIOS )Bank1 NAND Flash (硬盘)Bank2 USB接口Bank3 LCD显示模块Bank4 保留Bank5 保留Bank6 系统内存 SDRAMBank7 保留

只要将 CPU 上的相应 Bank连线接到外设芯片的片选引脚上, 便可以根据相应的地址进行存储器或外设操作。。

通常,使用 Bank0 上的 NOR Flash放置系统 BIOS ,系统上电后, PC 指针自动指向 Bank0 的第一个单元,开始进行系统自举。系统自举完成后,便从硬盘中将系统文件和用户应用程序复制到 SDRAM 内存中执行。

6.2.3 S3C44B0X 存储控制器功能描述和存储器相关的引脚的配置: Bank0---NGCS0 用来选通启动 ROM 。启动 ROM在开机复位后,就应正常工作,因此由片脚设置。

关于存储器引脚的配置

例:S3C44B0X SST39VF160

ADDR20~1 A19~0DATA15~0 DQ15~0

nGCS0 nCE

nOE nOE

nWE nWE

OM0

OM1

6.2.4 S3C44B0X 存储控制器的特殊功能寄存器( 13 个) 总线宽度 / 等待控制寄存器( BWSCON ) (1个 ) 用来决定存储器总线宽度、等待允许、高低字节使能。见 P.302

[[ENDIAN]ENDIAN]::只读,指示系统选定的大只读,指示系统选定的大//小端模式,小端模式,00表示小端模式,表示小端模式,11表示大端模式。表示大端模式。 [[DWiDWi]]::i=0i=0~~77,,其中其中DW 0DW 0为只读,因为为只读,因为bank0bank0数据总线宽度在复位后已经由数据总线宽度在复位后已经由 OM[1OM[1::0]0]的电平决定。的电平决定。 DW1DW1~~DW7DW7可写,用于可写,用于配置配置bank1bank1~~bank7bank7的数据总线宽度,的数据总线宽度,0000表示表示88位数位数据总线宽度,据总线宽度,0101表示表示1616位数据总线宽度,位数据总线宽度,1010表示表示3232位数据总线宽度。位数据总线宽度。 [[SWi]]::i=1i=1~~77,,写入写入 00则对应的则对应的bank ibank i等待状态等待状态不使用,写入不使用,写入11则对应的则对应的bankibanki等待状态使能。等待状态使能。 [[STiSTi]]::i=1i=1~~77,,决定决定 SRA MSRA M是否使用是否使用UB/LBUB/LB。。00表表示不使用示不使用UB/L BUB/L B,,引脚引脚 [14[14::11]11]定义为定义为nW BEnW BE[3[3::0]0];;11表示使用表示使用UB/L BUB/L B,,引脚引脚 [14[14::11]11]定义为定义为nBEnBE[3[3::0]0]。。

S3C44B0X 存储控制器的特殊功能寄存器 Bank 控制寄存器 ( BANKCONn )( 8个) 用来确定存储器读写时序。 P.304

⑴ (BANKCONn: nGCS0-nGCS5)

存储器读写时序 总线操作过程举例: 1 、系统地址总线上给出需访问的存储空间地址 ( 或 I/O空间地址 ),标志一个总线操作开始。 2 、经 Tacs 时间后 , 片选信号 nGCSn 给出,被片选信号选中的器件应锁存住当前地址线上地址信息。 3 、 经 Tcos 时间后, CPU给出当前操作类型是读操作

(nOE 为低电平 )/ 写操作 (nWE 为低电平 ) 。以读为例。 4 、 Tacc 时间内将数据准备好,放到数据总线。 5 、 Tacc 时间后, CPU将 nOE 信号提高,同是锁存数据线上的数据。 另外: 6 、 Toch 为 nOE 上芯片选择保持时间。 7 、 Tcah 为 nGCSn 有效之前地址保持时间。

⑵(BANKCONn: nGCS6-nGCS7)

S3C44B0X 存储控制器的特殊功能寄存器 DRAM/SDRAM 刷新控制寄存器( REFRESH )

(1 个 ) 用来决定 DRAM/SDRAM 刷新允许、刷新模式、 RAS 预充电时间、 RAS 和 CAS 最短时间、 CAS 保持时间、刷新计数值。见 P.305 表 6-23

S3C44B0X 存储控制器的特殊功能寄存器 Bank 大小寄存器( BANKSIZE ) (1 个 ) 用来设置 Bank6/Bank7 的存储区大小。见 P.305 表 6-24

S3C44B0X 存储控制器的特殊功能寄存器 Bank6—Bank7 模式设置寄存器( MRSR ) (2个 ) 用来决定 Bank6 、 Bank7 的存储模式。 见 P.306 表 6-25

6.2.5 S3C44B0X 存储器应用编程 存储器编程实例 ( 包括存储控制寄存器的配置、存储器的读写,通过一个简单例子,了解存储器的应用编程。 ) :

13 个存储控制寄存器的配置示例 ldr r0, =SMRDATA ldmia r0, {r1-r13} ldr r0, =0x01c80000 ; BWSCON Address stmia r0, {r1-r13}SMRDATA: .long 0x22221210 ; BWSCON .long 0x00000600 ; BANKCON0 .long 0x00000700 ; BANKCON1 .long 0x00000700 ; BANKCON2 .long 0x00000700 ; BANKCON3 .long 0x00000700 ; BANKCON4 .long 0x00000700 ; BANKCON5 .long 0x00018000 ; BANKCON6, SDRAM (Trcd = 2clocks) .long 0x00018008 ; BANKCON7, no use .long 0x00860459 ; Refresh (REFEN=1, TREFMD=0, Trp=1.5clocks, Trc

=5, Tchr=3) .long 0x0 ; BANKSIZE, 32MB/32MB .long 0x20 ; MRSR 6 (CL=2) .long 0x20 ; MRSR 7 (CL=2)作业: 将 13 个存储器控制寄存器配置位按定义展开加注释。

S3C44B0X 存储器应用编程 观察上面寄存器介绍中的寄存器地址可以发现,

13 个寄存器分布在从 0x01c80000开始的连续地址空间,所以上面的程序先将各个寄存器需要配置的值从起始地址为 SMRDATA 的区域取出来,然后可以利用指令“ stmia r0, {r1-r13}” 实现将配置好的寄存器的值依次写入到相应的寄存器中,这就完成了存储器 13 个控制寄存器的配置。

6.3 S3C44B0X I/O 端口功能及应用开发 6.3.1 S3C444B0X I/O 功能概述 6.3.2 S3C444B0X 端口功能配置 6.3.3 S3C444B0X I/O 端口特殊功能控制描述 6.3.5 S3C444B0X I/O 端口应用编程

6.3.1 S3C444B0X I/O 端口功能概述 I/O 端口是微处理器最基本的接口,通过这个端口可以以数字的方式和外部的电路连接,进而进行电路的控制和信号的检测。 以数字的方式来说,一个引脚代表一个位,可以表示 0 或 1两种值。 如果一个引脚的状态是由处理器来决定,称之为输出引脚。 如果引脚的状态是由外部的电路或器件决定,那么就是输入引脚。

S3C44B0X 有 71 个通用可编程多功能输入输出引脚,可分为以下 7类端口: 两个 9 位输入输出端口( PortE 和 PortF ); 两个 8 位输入输出端口( PortD 和 PortG ); 一个 16 位输入输出端口( PortC ); 一个 10 位输出端口( PortA ); 一个 11 位的输出端口( PortB )。

6.3.2 S3C444B0X 端口功能配置 每个端口都可以通过软件设置来满足各种各样的系统设置和设计要求。每个端口的功能通常都要在主程序开始前被定义。 如果一个引脚的多功能没有使用,那么这个引脚将被设置为 I/O 端口 (PortA 、 PortB 、

PortC除外 ) 。 在引脚配置以前,需要对引脚的初始化状态进行设定来避免一些问题的出现。 见 P.307表 6-26 S3C444B0X 端口设置

6.3.3 I/O 端口特殊功能控制描述 I/O 端口的各种功能主要是通过对端口各个特殊功能寄存器进行设置实现的。下面通过对各个寄存器的说明来分别介绍 I/O 端口所能完成的功能。 1. 端口配置寄存器( PCONn n=A-G )( 7个) ——用来定义端口各引脚功能。 S3C44B0X的大多数引脚都是多功能引脚。 ( 每个引脚最多有

4种功能 ) 。 见P.310-314 表 6-27—6-33 ( 如果 PG0-PG7 在掉电模式下被用做唤醒信号,则在中断模式里这些端口必须被设定。 )

2. 端口数据寄存器( PDATn n=A-G )( 7 个): ——如果这些端口被设定为输出端口,输出数据可以被写入到 PDATn 的相应的位;如果被设定为输入端口,输入数据可以被读到 PDATn 的相应位。 P.310 表 6-29 3. 端口上拉寄存器( PUPn n=C-G )( 5 个): ——用于设定端口相应位是否接上拉电阻。端口

上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为 0 时,引脚接上拉电阻;当相应的位为 1 时,引脚不接上拉电阻。 P.311表 6-29

4. 特殊的上拉电阻控制寄存器( SPUCR ) P.314 表 6-34在 STOP/SL-IDLE 模式里,数据线( D[31 : 0] 或D[15 : 0] )处于高阻状态( Hi-z state )。由于 I/O端口的特征,在 STOP/SL-IDLE 模式里,数据线上拉电阻可以降低功耗。 D[31:16] 引脚的上拉电阻能够通过 PUPC寄存器来控制; D[15: 0] 引脚上拉电阻能够通过 SPUCR寄存器来控制。

5. 外部中断控制寄存器 (EXTINT): P.315 表 6-35 该寄存器是为 PG 的第 3 功能——外部中断输入口功能设置的,该寄存器可用来设置 EXINT (外部中断)请求输入的模式:

低电平触发高电平触发下降沿触发上升沿触发双沿触发。

6. 外部中断挂起寄存器 (EXTINTPND): P.315 表 6-36 外部中断请求( 4/5/6/7 )共用一个中断请求队列。占用中断请求寄存器 INTPND 的位 [21] 。 当 EINT4/EINT5/

EINT6/EINT7 有中断请求时, INTPND [21]=1 ,相应的 EXTINPNDn 位将会被设置为 1 。外部挂起条件清除以后,中断服务程序必须清除中断挂起状态。通过向 EXTINPND 对应位写 1 来清除外部中断 4/5/6/7的相应挂起位。

top related