第四章 基于 s3c44b0x 嵌入式系统 应用开发

121
第 4 第第第 S3C44B0X 第第第第 第第第第 第第第 第第 S3C44B0X 第第第第第第第第 • 4.1 第第 S3C44B0X 第 S3CEV40 第 • 4.2 S3C44B0X 第第第第第 • 4.3 第第第第第第第第第第第第 • 4.4 I/O 第第第第第第第第第 • 4.5 第第第第第第第第第第第第 • 4.6 UART 第第第第第第第第第 • 4.7 第第第第第第第第第第第第 • 4.8 RTC 第第第第第第第 • 4.9 第第第第第第第第第第第第第 • 4.10 LCD 第第第第第第第第第第 • 4.11 第第第第第第 S3C44B0 X

Upload: torie

Post on 13-Jan-2016

194 views

Category:

Documents


9 download

DESCRIPTION

第四章 基于 S3C44B0X 嵌入式系统 应用开发. 4.1 基于 S3C44B0X 的 S3CEV40 介绍 4.2 S3C44B0X 处理器介绍 4.3 存储控制器功能及应用开发 4.4 I/O 端口功能及应用开发 4.5 中断控制器功能及应用开发 4.6 UART 接口功能及应用开发 4.7 时钟管理器功能及应用开发 4.8 RTC 功能及应用开发 4.9 看门狗定时器功能及应用开发 4.10 LCD 控制器功能及应用开发  4.11 启动程序设计. S3C44B0X. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

第四章 基于 S3C44B0X 嵌入式系统 应用开发

• 4.1 基于 S3C44B0X 的 S3CEV40 介绍

• 4.2 S3C44B0X 处理器介绍 • 4.3 存储控制器功能及应用开发• 4.4 I/O 端口功能及应用开发• 4.5 中断控制器功能及应用开发• 4.6 UART 接口功能及应用开发• 4.7 时钟管理器功能及应用开发• 4.8 RTC 功能及应用开发• 4.9 看门狗定时器功能及应用开发• 4.10 LCD 控制器功能及应用开发 • 4.11 启动程序设计

S3C44B0X

Page 2: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发4.1 基于 S3C44B0 的 S3CEV40 开发介

功能框图

Page 3: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.2 S3C44B0X 处理器介绍

Page 4: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.3 存储控制器功能及应用开发

• 4.3.1 存储控制器概述• 4.3.2 存储器空间划分简述• 4.3.3 存储控制器相关功能引脚描述• 4.3.4 存储控制器的特殊功能寄存器• 4.3.5 存储器应用编程

Page 5: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.3.1 S3C44B0X 存储控制器概述

层次: 寄存器组 片上 RAM

片上 Cache

主存储器 硬盘

寄存器组

片上 Cache

主存储器

ARM 层次 S3C44B0X 层次

特点:多级存储器√

Page 6: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发 ARM 状态下寄存器组织

堆栈指针

程序链接寄存器

程序状态寄存器

Page 7: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

CPSR

Page 8: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Thumb 状态下寄存器组织

Page 9: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发4.3.2 S3C44B0X 存储器空间划分简述

Page 10: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 11: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.3.3 存储控制器相关功能引脚描述ENDIAN 引脚

 选择大 / 小端模式OM[1:0] 引脚

 选择 Bank0(nGCS0) 总线宽度地址线连接

 依据数据宽度而定

0  小端1  大端

上电复位时

Page 12: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.3.4 存储控制器的特殊功能寄存器

1. 总线宽度 / 等待控制寄存器( BWSCON )

2. Bank 控制寄存器( BANKCONn )

3. DRAM/SDRAM 刷新控制寄存器( REFRESH )

4. Bank 大小寄存器( BANKSIZE )

5. Bank6 、 7 模式设置寄存器( MRSR )

Page 13: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.3.5 存储器应用编程.global sRWramtest.equ RWBase, 0x0C030000sRWramtest: LDR r2,=RWBase LDR r3,=0x66CC55AA STR r3,[r2]

LDR r3,[r2] ADD r3,r3,#1 STR r3,[r2]

LDR r2,=RWBase LDRH r3,[r2] ADD r3,r3,#1 STRH r3,[r2],#2 STRH r3,[r2]

LDR r2, =RWBase LDRB r3, [r2] LDRB r3, =0xDDSTRB r3, [r2], #1 LDRB r3, =0xBB

STRB r3, [r2], #1LDRB r3, =0x22STRB r3, [r2], #1 LDRB r3, =0x11STRB r3, [r2]

MOV pc, lr

Page 14: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

举例:扩一个 1M * 16b 的 FLASH 用于装载程序等

2. 上网查找 SST39VF160 芯片资料 (www.21ic.com)

3. 查看芯片资料 (datasheet)4. 画出硬件联接图 ( 手册 p4 ~ p5)5. 写出程序  ①查看读写时序图 (p11) ②找出对应参数表 (p10)  ③分析时序要求,配置相应特殊功能寄存器 ④写出读写子程序

1. 收集资料,选择芯片

Page 15: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发特殊功能寄存器配置示例 LDR R0, =SMRDATA LDMIA R0 , {R1—R13} LDR R0, =0x01C80000 ; BWSCON Address STMIA R0, {Rl—R13} SMRDATA : .long 0x22221210 ; BWSCON .long 0x00000600 ; GCS0 .long 0x00000700 ; GCS1 .long 0x00000700 ; GCS2 .long 0x00000700 ; GCS3 .long 0x00000700 ; GCS4 .long 0x00000700 ; GCS5 .long 0x0001002A ; GCS6 , EDO DRAM(Trcd:3 , ; Tcas=2 , Tcp=l , CAN=10 bits) .long 0x0001002A ; GCS7 , EDO DRAM .long 0x00960000+953 ; Refresh(REFEN=1,TREFMD=0, Trp=3,Trc=5,Tchr=3) .long 0x0 ; Bank Size, 32MB/32MB .long 0x20 ; MRSR 6(CL=2) .long 0x20 ; MRSR 7(CL=2)

Page 16: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

读:①#define addr1 *((volatile unsigned short*)0x00)

i=addr1;

②i=*((volatile unsigned short*)0x00);

写:

*((volatile unsigned short*)0x00) = (unsigned short)i ;

Page 17: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发4.4 S3C44B0X I/O 端口功能及应用开

发• 4.4.1 I/O 功能概述• 4.4.2 端口功能• 4.4.3 I/O 端口的特殊功能寄存器 • 4.4.4 端口应用编程

Page 18: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.4.1 I/O 功能概述S3C44B0X 有 71 个通用可编程多功能输入输出引脚,可分为以下 7 类端口:

一个 10 位输出输出端口( PortA );一个 11 位输出输出端口( PortB );一个 16 位输入输入 // 输出输出端口( PortC );两个 9 位输入输入 // 输出输出端口( PortE 和 PortF );两个 8 位输入输入 // 输出输出端口( PortD 和 PortG )。

Page 19: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.4.2 端口功能

Page 20: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 21: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 22: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 23: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 24: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.4.3 I/O 端口的特殊功能寄存器 1. 端口配置寄存器( PCONA-G ) ;

2. 端口数据寄存器( PDATA-G ) ;

3. 端口上拉寄存器( PUPC-G ) ;

4. 特殊的上拉电阻控制寄存器( SPUCR ) ;

5. 外部中断控制寄存器( EXTINT ) ;

6. 外部中断挂起寄存器( EXTINTPND ) .

 

Page 25: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

#define rPCONB (*(volatile unsigned *)0x1d20008)#define rPDATB (*(volatile unsigned *)0x1d2000c)#define rPCONF (*(volatile unsigned *)0x1d20034)#define rPDATF (*(volatile unsigned *)0x1d20038)#define rPUPF (*(volatile unsigned *)0x1d2003c)#define rEXTINT (*(volatile unsigned *)0x1d20050)

void Port_Init(void){ rPDATB = 0x7FF; // P9-LED1   P10-LED2 rPCONB = 0x1FF;

rPDATF = 0x0; rPCONF = 0x252A; rPUPF = 0x0; // 上拉电阻使能 rEXTINT=0x0;}

特殊功能寄存器配置示例

Page 26: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.4.4 I/O 端口应用编程int led_state;void Led_Display(int LedStatus) ;void led1_on( ) ;void led1_off( ) ;

void Led_Test( ){

led1_on( );Delay(1000);led1_off( );

}

void led1_on( ){

led_state = led_state | 0x1;Led_Display(led_state);

}

void led1_off( ){ led_state = led_state & 0xfe; Led_Display(led_state);}

void Led_Display(int LedStatus){ //led_state=LedStatus; if((LedStatus&0x01)==0x01) rPDATB=rPDATB&0x5ff; else rPDATB=rPDATB|0x200;}

Page 27: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.5 中断控制器功能及应用开发4.5.1 中断控制器4.5.2 中断控制器的运作4.5.3 中断源4.5.4 中断控制器的特殊功能寄存器4.5.5 中断控制器应用编程

Page 28: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

中断控制器的任务:在多重中断发生时,经过优先级判断选择其中一个中断向内核发出 FIQ 或 IRQ 中断请求。中断模式( INTMOD ) : FIQ 模式和 IRQ 模式。程序状态寄存器的 F 位和 I 位。

4.5.1 中断控制器

Page 29: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.5.2 中断控制器的运作30个中断源产生中断

IRQ

FIQ

中断挂起寄存器

中断模式

F 或I

中断控制

FI 允许

主优先级

清标志

清标志

中断屏蔽

从优先级

IRQ

FIQ

清 0

注:中断屏蔽可能在中断模式之前发生作用

Page 30: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.5.3 中断源

EINT1>EINT0>TXD0>WDT>ADC

1

2

3

4

TIMER0>TXD0>EINT1>ZDMA0

ZDMA0>IIC>WDT

1

2

3

4

Page 31: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.5.4 中断控制器的特殊功能寄存器

1 中断控制寄存器 (INTCON)

2 中断挂起寄存器 (INTPND)

3 中断模式寄存器 (INTMOD)

4 中断屏蔽寄存器 (INTMSK)

5 IRQ 向量模式相关寄存器 

  

Page 32: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

 中断特殊功能寄存器配置示例void init_Eint(void){ rINTMOD = 0x0;

rINTCON = 0x1;rINTMSK = ~(BIT_GLOBAL|BIT_EINT4567);

pISR_EINT4567 = (int)Eint4567Isr; rPCONG = 0xffff; rPUPG = 0x0;

rEXTINT = rEXTINT|0x480000; rI_ISPC = BIT_EINT4567;

rEXTINTPND = 0xf;}

Page 33: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.5.5 中断控制器应用编程void Eint4567Isr(void){ unsigned char which_int; which_int = rEXTINTPND; rEXTINTPND = 0xf; rI_ISPC = BIT_EINT4567; if(which_int= =4) { led1_on( ); D8Led_Direction(0); led1_off( ); } if(which_int= =8) { led2_on( ); D8Led_Direction(1); led2_off( ); } }

Page 34: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.6 UART 接口功能及应用开发

4.6.1 S3C44B0X UART 概述4.6.2 S3C44B0X UART 的操作4.6.3 S3C44B0X UART 的特殊功能寄存器4.6.4 S3C44B0X UART 应用编程

Page 35: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.6.1 S3C44B0X UART 概述

特性:

可编程波特率

红外发 / 收

一个开始位

1/2 个停止位

5/6/7/8 数宽

奇偶校验

Page 36: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.6.2 S3C44B0X UART 的操作 数据传输 数据接收 自动流控制 AFC ( Auto Flow Control ) 非自动流控制( nRTS 和 nCTS 由 S/W 所控制) 中断 /DMA 请求的产生 UART 错误状态 FIFO 波特率的产生 回环( Loop-back )模式 红外模式

Page 37: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

数据传输 :

S3C44B0X UART 的操作

Start Bit Data Bits Parity BitsParity Bits Stop Bits

1 5~8 1 1~2

传输基本方式 : 发送寄存器

传输移位器 TxDn数据 发送寄存器

TxFIFO 传输移位器 TxDn数据 发送寄存器

Page 38: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

数据接收 :

S3C44B0X UART 的操作

错误标志:溢出错误、奇偶错误、帧错误、         断点条件

接收基本方式 :

Start Bit Data Bits Parity BitsParity Bits Stop Bits

RxDn接收转换器数据 发送寄存器

RxFIFO RxDn接收转换器数据 发送寄存器

Page 39: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

自动流控制 :

S3C44B0X UART 的操作

其 FIFO剩余空间> 2

Page 40: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

非自动流控制 :

S3C44B0X UART 的操作

特点: nRTS 和 nCTS 由软件控制设置接收模式

检查 RxFIFO剩余空间

nRTS

设置发送模式

有 nCTS 信号

发送数据

Page 41: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

中断请求的产生 :

S3C44B0X UART 的操作

 溢出错误、奇偶错误、帧错误、断点条件

  Rx

  Tx

FIFO 模式

非 FIFO 模式FIFO 模式

非 FIFO 模式

Page 42: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

波特率的产生 :

S3C44B0X UART 的操作

UBRDIVn = ( 取整 )( MCLK/ 波特率 ×16 ) - 1

波特率为 115200bps, MCLK 为 40HZ

UBRDIVn = ( 取整 )( 40000000 /115200×16 ) - 1

       = ( 取整 )( 21.7 ) - 1

     = 22 - 1

     = 21

Page 43: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

红外模式 :

S3C44B0X UART 的操作

Page 44: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.6.3 S3C444B0X UART 的特殊功能寄存器

UART 的(行)控制寄存器 UART FIFO (状态)控制寄存器 UART MODEM (状态)控制寄存器 UART Tx/Rx 寄存器 UART 错误状态寄存器 UART 发送保持寄存器 UART 接收保持寄存器 UART 波特率分频寄存器

Page 45: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发UART 的行控制寄存器 (ULCONn) :

Page 46: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发UART 控制寄存器 (UCONn) :

Page 47: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART FIFO 控制寄存器 (UFCONn) :

Page 48: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART FIFO 状态寄存器 (UFSTATn) :

Page 49: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART MODEM 控制寄存器 (UMCONn) :

Page 50: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART MODEM 状态寄存器 (UMSTATn) :

Page 51: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART Tx/Rx 状态寄存器 (UTRSTATn) :

Page 52: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART 错误状态寄存器 (UERSTATn) :

Page 53: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

UART 发送保持寄存器 (UTxHn)

UART 接收保持寄存器 (URxHn)

UART 波特率分频寄存器 (UBRDIVn)

Page 54: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.6.4 S3C44B0X UART 应用编程static int whichUart=0 ;void Uart_Init(int mclk, int baud){ int i ; rUFCON0=0x0 ;  //禁止 FIFO rUFCONl=0x0l ;  rUMCON0=0x0 ; rUMCON1=0x0l ; rULCON0=0x3 ; rUCON0=0x245 ; rUBRDIV0=((int)(mclk/ 16/ baud+0.5) - 1) ; rULCON1=0x3 ; rUCON1=0x245 ; rUBRDIV1=((int)(mclk/ 16/ baud+0.5) - 1) ; for (i=0 ; i<100 ; i++) ;}

Page 55: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

char Uart_Getch(void){ if(whichUart= =0) { while(!(rUTRSTAT0& 0x1)) ; //准备接收数据 return RdURXH0( ) ; } else { while(!(rUTRSTAT1& 0x1)) ; //准备接收数据 return rURXH1 ; }}

Page 56: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

void Uart_SendByte(int data){ if(whichUart= =0) { while(!(rUTRSTAT0& 0x2)) ; Delay(10) ; WrUTXH0(data) ; } else { … … }}

Page 57: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.7 S3C44B0X 时钟电源管理器功能及应用开发

4.7.1 时钟电源管理器概述

4.7.2 时钟电源管理器功能描述

4.7.3 时钟发生器 & 电源管理特殊功能寄存器

4.7.4 时钟& 电源管理器应用编程

Page 58: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.7.1 时钟电源管理器概述

正常模式( Normal mode )空闲模式( Idle mode )停止模式( Stop mode )LCD 的 SL 空闲模式( SL Idle mode )低速模式( Slow mode )

时钟

电源

时钟电源管理器

Page 59: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.7.2 时钟电源管理器功能描述

时钟发生器 时钟源选择 PLL ( Phase-Locked-Loop锁相环) 时钟控制逻辑 电源管理模式

Page 60: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

• 时钟发生器:

时钟发生器框图

Page 61: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

时钟源选择:

Page 62: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

• PLL :

PLL 框图

fpllo=( m×fin )/( p×2s )

Page 63: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述时钟控制逻辑:

OSC PLLCCL

上电重启时序图

>208us

t lock = ( 1 / f in ) × LTIMECNT

Page 64: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

电源管理: 全部正常工作,且时钟供给可控

停止为 CPU提供时钟信号

停止所有模块,最低功耗

写 CLKCON ,返回 N 、 S 、 STOP模式

Page 65: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

停止模式的进入和退出

Page 66: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

• 电源管理:

仅维持 LCD

, LCD_ BIT = 1 , IDLE_ BIT = 1 ,且 PLL关闭

Page 67: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

SL_IDLE 的进入与退出

Page 68: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟电源管理器功能描述

• 电源管理:

把 PLL 自身耗电排除在外

, LCD_ BIT = 1 , IDLE_ BIT = 1 ,且 PLL关闭

f out = f in / ( 2*SLOW_VAL )f out = f inPLL稳定需 400us

即 PLL锁定

Page 69: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 70: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

Page 71: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发4.7.3 时钟发生器 & 电源管理特殊功能寄存

器PLL 控制寄存器 (PLLCON)

Page 72: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

fpllo=( m×fin )/( p×2s )

m = (MDIV + 8), p = (PDIV + 2), s = SDIV

例: f in=14.318MHz , fout=60MHz

20MHz< fpllo < 66MHz

fpllo ×2S < 170 MHz

S 的值应该尽可能的大建议 (fin / p) ≥1MHz ,必须满足( fin / p ) < 2MHz

2S < 170 / fpllo (S 的值应该尽可能的大 )

fin /2 < p ≤ fin

SDIV=1 , PDIV=6 , MDIV=59

顺序: SDIV → PDIV → MDIV

Page 73: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟控制寄存器 (CLKCON) :

Page 74: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

时钟低速控制寄存器 (CLKSLOW) :

Page 75: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

锁时计数寄存器 (LOCKTIME) :

t lock = ( 1 / f in ) × LTIMECNT

Page 76: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.7.4 时钟发生器 & 电源管理器应用编程int P_div, M_div, S_val, S_div, mck;Uart_Printf("<- Running change test of M/P/S value ->\n");Uart_Printf("Input M vlaue\n"); M_div=Uart_GetIntNum(); Uart_Printf("Input P vlaue\n"); P_div=Uart_GetIntNum(); Uart_Printf("Input S vlaue\n"); S_div=Uart_GetIntNum();S_val=pow(2,S_div); mck=((M_div+8)*FIN)/((P_div+2)*S_val);Uart_Printf("MCLK=%d,M=0x%x,P=0x%x,S=0x%x\n", …);Uart_Printf("Now change PLL value\n");Uart_TxEmpty(0);ChangePllValue(M_div,P_div,S_div);Uart_Init(mck,115200);Uart_Printf("changing MCLK\Press any key to return!\n");while(!Uart_GetKey()) {Delay(1000); }ChangePllValue(PLL_M,PLL_P,PLL_S);Uart_Init(0,115200);Uart_Printf("Returned original clock\n");

Page 77: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发char slw_exit=0; int i; unsigned int save_MCON[9];

unsigned int MemCon[9]={0,0,0,0,0,0,0x18000,0x18000,0x800000+2033};

pISR_EINT4567=(U32)SLWEINT4567Int;

rINTMSK =~(BIT_GLOBAL|BIT_RTC|BIT_EINT4567);

for(i=0;i<9;i++) save_MCON[i]=((unsigned int *)0x01c80004)[i];

Uart_Printf("Entering SLOW mode.\n");

Uart_Printf(" Press SB2 or SB3 to exit SLOW mode\n");

rLOCKTIME=0x640; //count=t_lock*Fin=800 (t_lock=200us, Fin=8MHz)

rCLKSLOW=2|(1<<4)|(1<<5); //PLL off,SLOW mode,SL=2 ,Fout=1MHz

ChangeMemCon(MemCon); //change memory control register(66M-1MHz)

while(!slw_exit) Delay(100); //now! slow mode:1Mhz, PLL off

rINTMSK |=BIT_RTC;

for(i=0;i<9;i++)

MemCon[i]=save_MCON[i];

ChangeMemCon(MemCon); //change memory control register(1M-66MHz)

rCLKSLOW=2|(1<<4)|(0<<5); //PLL on

for(i=0;i<2048;i++); //wait during PLL lock-time

rCLKSLOW=2; //exit SLOW mode(disable slow_bit)

slw_exit=0;

Page 78: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.8 S3C444B0X RTC 功能及应用开发• 4.8.1 S3C44B0X RTC 功能

• 4.8.2 S3C44B0X RTC 特殊功能寄存器

• 4.8.3 S3C44B0X RTC 应用编程

Page 79: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.8.1 S3C44B0X RTC 功能BCD 数据,秒、分、时、日、月、年闰年产生器告警功能: 告警中断或从断电模式唤醒排除了排除了 20002000年问题年问题独立的电源端口( VDDRTC )支持毫秒滴答时间中断作为 RTOS 核的时间滴答循环复位功能

Page 80: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

实时时钟框图

Page 81: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

实时时钟部分外围电路

Page 82: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.8.2 S3C44B0X RTC 特殊功能寄存器

• RTC控制寄存器 RTCCON• RTC告警控制寄存器• 告警秒、分、时、日、星期、月、年数据寄存器• BCD秒、分、时、日、星期、月、年数据寄存器• RTC循环复位寄存器 RTCRST• TICK TIME计数寄存器 TICNT

Page 83: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

RTC 控制寄存器RTC 特殊功能寄存器

Page 84: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

• RTC告警控制寄存器( RTCALM )

Page 85: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

• 告警秒数据寄存器( ALMSEC )

• 告警分数据寄存器( ALMMIN )

Page 86: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

RTC 特殊功能寄存器告警时数据寄存器 ( ALMHOUR )

告警日数据寄存器 ( ALMDAY )

告警星期数据寄存器( ALMDATE )

告警月数据寄存器 ( ALMMON )

告警年数据寄存器 ( ALMYEAR )

Page 87: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

RTC 特殊功能寄存器

• BCD秒数据寄存器( BCDSEC )

• BCD 分数据寄存器( BCDMIN )

Page 88: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

BCD 时数据寄存器 ( BCDHOUR )

BCD日数据寄存器 ( BCDDAY )

BCD星期数据寄存器( BCDDATE )

BCD月数据寄存器 ( BCDMON )

BCD年数据寄存器 ( BCDYEAR )

Page 89: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

RTC 特殊功能寄存器

• RTC循环复位寄存器( RTCRST )

• TICK TIME 寄存器( TICNT )

Page 90: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.8.3 S3C44B0X RTC 应用编程void Rtc_Init(void){ rRTCCON = 0x01; rBCDYEAR = TESTYEAR; rBCDMON = TESTMONTH; rBCDDAY = TESTDAY; rBCDDATE = TESTDATE; rBCDHOUR = TESTHOUR; rBCDMIN = TESTMIN; rBCDSEC = TESTSEC; rRTCCON = 0x0; }

Page 91: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发void Display_Rtc(void){ int year, month, day, weekday, hour, min, sec; rRTCCON = 0x01; while(1) {

if(rBCDYEAR = = 0x99) year = 0x1999; else year = 0x2000 + rBCDYEAR; month = rBCDMON; day = rBCDDAY;

weekday = rBCDDATE;  hour = rBCDHOUR;

min = rBCDMIN; sec = rBCDSEC;

if(sec != 0) break; } rRTCCON = 0x0; Uart_Printf(……);}

Page 92: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发voidTest_RTC_Tick(void){ pISR_TICK =(unsigned)Rtc_Tick; rRTCCON =0x1; sec_tick =1; rINTMSK =~(BIT_GLOBAL|BIT_TICK); rRTCCON =0x0; rTICINT = 127+(1<<7); // 启动时间片中断功能}void Rtc_Tick(void){ rI_ISPC =BIT_TICK; // 清除时间片中断标志 RTC_ok =1; // RTC 检测标志置位}

Page 93: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

6.9 S3C444B0X 看门狗定时器功能及应用开发

• 6.9.1 S3C44B0X 看门狗定时器概述• 6.9.2 S3C44B0X 看门狗定时器特殊功能寄存器• 6.9.3 S3C44B0X 看门狗定时器应用编程

Page 94: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

6.9.1 S3C44B0X 看门狗定时器概述

看门狗定时器框图

Page 95: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

6.9.2 S3C44B0X 看门狗定时器特殊功能寄存器

看门狗定时器控制寄存器( WTCON )

看门狗定时器数据寄存器( WTDAT )

看门狗定时器计数寄存器( WTCNT )

Page 96: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发• 看门狗定时器控制寄存器( WTCON )

Page 97: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

看门狗定时器数据寄存器( WTDAT )

看门狗定时器计数寄存器( WTCNT )

t_watchdog = 1/( MCLK / (预分频值+ 1) / 分频系数 )T_watchdog = WTDAT × t_watchdog

Page 98: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发6.9.3 S3C44B0X 看门狗定时器应用编程void Test_WDTimer(void){ rINTMSK=~(BIT_GLOBAL|BIT_WDT); pISR_WDT=(unsigned)Wdt_Int; isWdtInt=0; rWTCON=((MCLK/1000000-1)<<8)|(3<<3)|(1<<2); = 1/66 rWTDAT=8448/4; rWTCNT=8448/4; rWTCON=rWTCON|(1<<5); // 1/40/128,interrupt while(isWdtInt!=10); rWTCON=((MCLK/1000000-1)<<8)|(3<<3)|(1); reset enable Uart_Printf("\nI will restart after 2 sec!!!\n"); rWTCNT=8448*2; rWTCON=rWTCON|(1<<5); // 1/40/128,interrupt while(1); rINTMSK|=BIT_GLOBAL;}void Wdt_Int(void){ rI_ISPC=BIT_WDT; Uart_Printf("%d ",++isWdtInt); }

Page 99: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.10 S3C44B0X LCD 控制器功能及应用开发

4.10.1 S3C44B0X LCD 控制器的特性4.10.2 S3C44B0X LCD 外部接口信号4.10.3 S3C44B0X LCD 控制器的操作4.10.4 S3C44B0X LCD 控制器的特殊功能寄   存器4.10.5 S3C44B0X LCD 编程举例

Page 100: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.10.1 S3C44B0X LCD 控制器的特性支持彩色/灰度/单色的 LCD 板;支持 3种类型 LCD板: 4 位双扫描, 4 位单扫描,

以及 8           位单扫描的显示类型;支持虚拟显示屏;系统存储器被用作显示存储器;专用的 DMA ;支持多种荧屏大小 :640×480 、 320×240 、 160×160 支持单色的 4 级、 16 级灰度;对于彩色 STN LCD板,支持 256 级彩色;支持电源节省模式( SL_IDLE Mode )。

Page 101: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.10.2 S3C44B0X LCD 外部接口信号VFRAME : LCD 控制器和 LCD驱动器之间的帧同步      信号。VLINE :  LCD 控制器和 LCD驱动器之间的行同步

         信号。VCLK :  此引脚为 LCD 控制器和 LCD驱动器之间 的象素时钟信号。VM : LCD驱动器所使用的交流信号。 LCD驱 动器使用 VM来改变用于打开或关闭象 素的行和列电压的极性。VD[3:0] 以及 VD[7:4] : LCD象素数据输入端口。

Page 102: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

LCD 控制器框图

Page 103: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

接口信号时序图

Page 104: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.10.3 S3C44B0X LCD 控制器的操作

1. 灰度模式操作

2. 彩色模式操作

3. 扫描模式操作

4. 数据的存放与显示

Page 105: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

S3C44B0X LCD 控制器的操作

像素点格式: 3-3-2 模式

灰度模式操作2 位像素 (4 级灰度,可在 16 级中选出 ) 4 位像素 (16 级灰度 )

彩色模式操作3 位红 ( 从 16种红中选出 8种 )

3 位绿 ( 从 16种绿中选出 8种 )2 位蓝 ( 从 8种蓝中选出 4种 )

像素点格式: 2 模式

像素点格式: 4 模式

Page 106: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

S3C44B0X LCD 控制器的操作

扫描模式操作4 位单 /双扫描

8 位单扫描

Page 107: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

S3C44B0X LCD 控制器的操作数据的存放与显示

4 位双扫描数据的存放与显示

Page 108: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

S3C44B0X LCD 控制器的操作数据的存放与显示

4 位 /8 位单扫描数据的存放与显示

Page 109: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

4.10.4 S3C44B0X LCD 控制器的特殊功能寄存器

1. LCD 控制寄存器 1 、 2 、 3(LCDCONn)

2. 帧缓冲起始地址寄存器 1 、 2 、 3(LCDSADDR

n)

3. RED 查找表寄存器 (REDLUT)

4. GREEN 查找表寄存器 (GREENLUT)

5. BLUE 查找表寄存器 (BLUELUT)

6.抖动模式寄存器

Page 110: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 1(LCD

CON1)

Page 111: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 1(LCDCON1)

16.5MHz > VCLK > 数据传输的速率 HS × VS × FR × MV

行像素 ×列像素 × 帧速率 × MV

Page 112: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 2(LCDCON2)

HOZVAL = ( 水平显示长度 / 有效 VD 数据线的数量) - 1

在彩色模式下: 水平显示长度 = 3 × 水平像素点数LINEVAL =垂直显示宽度-1;单扫描LINEVAL =垂直显示宽度 /2- 1 ;双扫描

Page 113: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

LCD控制寄存器 3(LCDCON3)

Page 114: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

帧缓冲起始地址寄存器 1(LCDSADDR1)

Page 115: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

帧缓冲起始地址寄存器 2(LCDSADDR2)

Page 116: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

帧缓冲起始地址寄存器 3(LCDSADDR3)

Page 117: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发RED查找表寄存器 (REDLUT)

GREEN查找表寄存器 (GREENLUT)

BLUE查找表寄存器 (BLUELUT)

Page 118: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

不同模式的MV

frame_rate(Hz) = 1 / [ ( (1/VCLK) × (HOZVAL+1)+(1/MCLK) ×        (WLH+WDLY+LINEBLANK) ) × ( LINEVAL+1) ]

Page 119: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发4.10.5 S3C44B0X LCD 编程举例UINT   LcdBuffer[ 24 0 ][ 3 2 0 / 4];void Lcd_Init(void){ rDITHMODE=0x1223a;rDP1_2 =0x5a5a; rDITHMODE=0x1223a;rDP1_2 =0x5a5a; rDP4_7 =0x366cd9b; rDP3_5 =0xda5a7;rDP4_7 =0x366cd9b; rDP3_5 =0xda5a7; rDP2_3 =0xad7; rDP5_7 =0xfeda5b7;rDP2_3 =0xad7; rDP5_7 =0xfeda5b7; rDP3_4 =0xebd7; rDP4_5 =0xebfd7;rDP3_4 =0xebd7; rDP4_5 =0xebfd7; rDP6_7 =0x7efdfbf;rDP6_7 =0x7efdfbf; rLCDCON1=(0)|(2<<5)|(0<<7)|(0x3<<8)|(0x3<<10)|(4<<12); rLCDCON2=(240-1)|((320*3/8-1)<<10)|(14<<21); rLCDSADDR1= (0x3<<27) | ( ( ( UINT )LcdBUFFER >> 22

) << 21 ) | (((UINT)Lcd_BUFFER >> 1) & 0x1fffff); rLCDSADDR2= (( (( UINT)LcdBUFFER+(320*240))>>1)

&0x1fffff; rLCDSADDR3= (320/2) | ( 0<<9 ); rREDLUT=0xfdb96420;rGREENLUT=...;Rbluelut=0xfb40; rLCDCON1=(1)|rLCDCON1;}

Page 120: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

void LcdDraw_backgroundcolor(Uchar color_code){ int i; Uint *pBuf=(Uint *) LcdBuffer; for( i = 0; i < ( 320*240/4 ); i++ ) { *pBuf + + = ( color_code << 24) + ( color_code << 16)+ ( color_code << 8 ) + color_code; }}

Page 121: 第四章   基于 S3C44B0X 嵌入式系统           应用开发

第 4 章基于 S3C44B0X 嵌入式系统应用开发

void Lcd_Pixel( int x, int y, Uchar rgb )

{

int i;

Uint mask[4]={0x00ffffff,0xff00ffff,0xffff00ff,0xffffff00};

LcdBuffer[y][x /4]=(LcdBuffer[y][x/4]& mask[x%4] ) |

( ( Uint )rgb << ( 3-x%4 )*8);

}