第四章 基于 s3c44b0x 嵌入式系统 应用开发
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 PresentationTRANSCRIPT
第 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
第 4 章基于 S3C44B0X 嵌入式系统应用开发4.1 基于 S3C44B0 的 S3CEV40 开发介
绍
功能框图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.2 S3C44B0X 处理器介绍
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.3 存储控制器功能及应用开发
• 4.3.1 存储控制器概述• 4.3.2 存储器空间划分简述• 4.3.3 存储控制器相关功能引脚描述• 4.3.4 存储控制器的特殊功能寄存器• 4.3.5 存储器应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.3.1 S3C44B0X 存储控制器概述
层次: 寄存器组 片上 RAM
片上 Cache
主存储器 硬盘
寄存器组
片上 Cache
主存储器
ARM 层次 S3C44B0X 层次
特点:多级存储器√
√
√
第 4 章基于 S3C44B0X 嵌入式系统应用开发 ARM 状态下寄存器组织
堆栈指针
程序链接寄存器
程序状态寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
CPSR
第 4 章基于 S3C44B0X 嵌入式系统应用开发
Thumb 状态下寄存器组织
第 4 章基于 S3C44B0X 嵌入式系统应用开发4.3.2 S3C44B0X 存储器空间划分简述
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.3.3 存储控制器相关功能引脚描述ENDIAN 引脚
选择大 / 小端模式OM[1:0] 引脚
选择 Bank0(nGCS0) 总线宽度地址线连接
依据数据宽度而定
0 小端1 大端
上电复位时
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.3.4 存储控制器的特殊功能寄存器
1. 总线宽度 / 等待控制寄存器( BWSCON )
2. Bank 控制寄存器( BANKCONn )
3. DRAM/SDRAM 刷新控制寄存器( REFRESH )
4. Bank 大小寄存器( BANKSIZE )
5. Bank6 、 7 模式设置寄存器( MRSR )
第 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
第 4 章基于 S3C44B0X 嵌入式系统应用开发
举例:扩一个 1M * 16b 的 FLASH 用于装载程序等
2. 上网查找 SST39VF160 芯片资料 (www.21ic.com)
3. 查看芯片资料 (datasheet)4. 画出硬件联接图 ( 手册 p4 ~ p5)5. 写出程序 ①查看读写时序图 (p11) ②找出对应参数表 (p10) ③分析时序要求,配置相应特殊功能寄存器 ④写出读写子程序
1. 收集资料,选择芯片
第 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)
第 4 章基于 S3C44B0X 嵌入式系统应用开发
读:①#define addr1 *((volatile unsigned short*)0x00)
i=addr1;
②i=*((volatile unsigned short*)0x00);
写:
*((volatile unsigned short*)0x00) = (unsigned short)i ;
第 4 章基于 S3C44B0X 嵌入式系统应用开发4.4 S3C44B0X I/O 端口功能及应用开
发• 4.4.1 I/O 功能概述• 4.4.2 端口功能• 4.4.3 I/O 端口的特殊功能寄存器 • 4.4.4 端口应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.4.1 I/O 功能概述S3C44B0X 有 71 个通用可编程多功能输入输出引脚,可分为以下 7 类端口:
一个 10 位输出输出端口( PortA );一个 11 位输出输出端口( PortB );一个 16 位输入输入 // 输出输出端口( PortC );两个 9 位输入输入 // 输出输出端口( PortE 和 PortF );两个 8 位输入输入 // 输出输出端口( PortD 和 PortG )。
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.4.2 端口功能
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.4.3 I/O 端口的特殊功能寄存器 1. 端口配置寄存器( PCONA-G ) ;
2. 端口数据寄存器( PDATA-G ) ;
3. 端口上拉寄存器( PUPC-G ) ;
4. 特殊的上拉电阻控制寄存器( SPUCR ) ;
5. 外部中断控制寄存器( EXTINT ) ;
6. 外部中断挂起寄存器( EXTINTPND ) .
第 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;}
特殊功能寄存器配置示例
第 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;}
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.5 中断控制器功能及应用开发4.5.1 中断控制器4.5.2 中断控制器的运作4.5.3 中断源4.5.4 中断控制器的特殊功能寄存器4.5.5 中断控制器应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
中断控制器的任务:在多重中断发生时,经过优先级判断选择其中一个中断向内核发出 FIQ 或 IRQ 中断请求。中断模式( INTMOD ) : FIQ 模式和 IRQ 模式。程序状态寄存器的 F 位和 I 位。
4.5.1 中断控制器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.5.2 中断控制器的运作30个中断源产生中断
IRQ
FIQ
中断挂起寄存器
中断模式
F 或I
中断控制
FI 允许
主优先级
清标志
清标志
中断屏蔽
从优先级
IRQ
FIQ
清 0
注:中断屏蔽可能在中断模式之前发生作用
第 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
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.5.4 中断控制器的特殊功能寄存器
1 中断控制寄存器 (INTCON)
2 中断挂起寄存器 (INTPND)
3 中断模式寄存器 (INTMOD)
4 中断屏蔽寄存器 (INTMSK)
5 IRQ 向量模式相关寄存器
第 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;}
第 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( ); } }
第 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 应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.6.1 S3C44B0X UART 概述
特性:
可编程波特率
红外发 / 收
一个开始位
1/2 个停止位
5/6/7/8 数宽
奇偶校验
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.6.2 S3C44B0X UART 的操作 数据传输 数据接收 自动流控制 AFC ( Auto Flow Control ) 非自动流控制( nRTS 和 nCTS 由 S/W 所控制) 中断 /DMA 请求的产生 UART 错误状态 FIFO 波特率的产生 回环( Loop-back )模式 红外模式
第 4 章基于 S3C44B0X 嵌入式系统应用开发
数据传输 :
S3C44B0X UART 的操作
Start Bit Data Bits Parity BitsParity Bits Stop Bits
1 5~8 1 1~2
传输基本方式 : 发送寄存器
传输移位器 TxDn数据 发送寄存器
TxFIFO 传输移位器 TxDn数据 发送寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
数据接收 :
S3C44B0X UART 的操作
错误标志:溢出错误、奇偶错误、帧错误、 断点条件
接收基本方式 :
Start Bit Data Bits Parity BitsParity Bits Stop Bits
RxDn接收转换器数据 发送寄存器
RxFIFO RxDn接收转换器数据 发送寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
自动流控制 :
S3C44B0X UART 的操作
其 FIFO剩余空间> 2
第 4 章基于 S3C44B0X 嵌入式系统应用开发
非自动流控制 :
S3C44B0X UART 的操作
特点: nRTS 和 nCTS 由软件控制设置接收模式
检查 RxFIFO剩余空间
nRTS
设置发送模式
有 nCTS 信号
发送数据
第 4 章基于 S3C44B0X 嵌入式系统应用开发
中断请求的产生 :
S3C44B0X UART 的操作
溢出错误、奇偶错误、帧错误、断点条件
Rx
Tx
FIFO 模式
非 FIFO 模式FIFO 模式
非 FIFO 模式
第 4 章基于 S3C44B0X 嵌入式系统应用开发
波特率的产生 :
S3C44B0X UART 的操作
UBRDIVn = ( 取整 )( MCLK/ 波特率 ×16 ) - 1
波特率为 115200bps, MCLK 为 40HZ
UBRDIVn = ( 取整 )( 40000000 /115200×16 ) - 1
= ( 取整 )( 21.7 ) - 1
= 22 - 1
= 21
第 4 章基于 S3C44B0X 嵌入式系统应用开发
红外模式 :
S3C44B0X UART 的操作
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.6.3 S3C444B0X UART 的特殊功能寄存器
UART 的(行)控制寄存器 UART FIFO (状态)控制寄存器 UART MODEM (状态)控制寄存器 UART Tx/Rx 寄存器 UART 错误状态寄存器 UART 发送保持寄存器 UART 接收保持寄存器 UART 波特率分频寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发UART 的行控制寄存器 (ULCONn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发UART 控制寄存器 (UCONn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART FIFO 控制寄存器 (UFCONn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART FIFO 状态寄存器 (UFSTATn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART MODEM 控制寄存器 (UMCONn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART MODEM 状态寄存器 (UMSTATn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART Tx/Rx 状态寄存器 (UTRSTATn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART 错误状态寄存器 (UERSTATn) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
UART 发送保持寄存器 (UTxHn)
UART 接收保持寄存器 (URxHn)
UART 波特率分频寄存器 (UBRDIVn)
第 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++) ;}
第 4 章基于 S3C44B0X 嵌入式系统应用开发
char Uart_Getch(void){ if(whichUart= =0) { while(!(rUTRSTAT0& 0x1)) ; //准备接收数据 return RdURXH0( ) ; } else { while(!(rUTRSTAT1& 0x1)) ; //准备接收数据 return rURXH1 ; }}
第 4 章基于 S3C44B0X 嵌入式系统应用开发
void Uart_SendByte(int data){ if(whichUart= =0) { while(!(rUTRSTAT0& 0x2)) ; Delay(10) ; WrUTXH0(data) ; } else { … … }}
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.7 S3C44B0X 时钟电源管理器功能及应用开发
4.7.1 时钟电源管理器概述
4.7.2 时钟电源管理器功能描述
4.7.3 时钟发生器 & 电源管理特殊功能寄存器
4.7.4 时钟& 电源管理器应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.7.1 时钟电源管理器概述
正常模式( Normal mode )空闲模式( Idle mode )停止模式( Stop mode )LCD 的 SL 空闲模式( SL Idle mode )低速模式( Slow mode )
时钟
电源
时钟电源管理器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.7.2 时钟电源管理器功能描述
时钟发生器 时钟源选择 PLL ( Phase-Locked-Loop锁相环) 时钟控制逻辑 电源管理模式
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
• 时钟发生器:
时钟发生器框图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
时钟源选择:
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
• PLL :
PLL 框图
fpllo=( m×fin )/( p×2s )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述时钟控制逻辑:
OSC PLLCCL
上电重启时序图
>208us
t lock = ( 1 / f in ) × LTIMECNT
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
电源管理: 全部正常工作,且时钟供给可控
停止为 CPU提供时钟信号
停止所有模块,最低功耗
写 CLKCON ,返回 N 、 S 、 STOP模式
第 4 章基于 S3C44B0X 嵌入式系统应用开发
停止模式的进入和退出
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
• 电源管理:
仅维持 LCD
, LCD_ BIT = 1 , IDLE_ BIT = 1 ,且 PLL关闭
第 4 章基于 S3C44B0X 嵌入式系统应用开发
SL_IDLE 的进入与退出
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟电源管理器功能描述
• 电源管理:
把 PLL 自身耗电排除在外
, LCD_ BIT = 1 , IDLE_ BIT = 1 ,且 PLL关闭
f out = f in / ( 2*SLOW_VAL )f out = f inPLL稳定需 400us
即 PLL锁定
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发
第 4 章基于 S3C44B0X 嵌入式系统应用开发4.7.3 时钟发生器 & 电源管理特殊功能寄存
器PLL 控制寄存器 (PLLCON)
第 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
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟控制寄存器 (CLKCON) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
时钟低速控制寄存器 (CLKSLOW) :
第 4 章基于 S3C44B0X 嵌入式系统应用开发
锁时计数寄存器 (LOCKTIME) :
t lock = ( 1 / f in ) × LTIMECNT
第 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");
第 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;
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.8 S3C444B0X RTC 功能及应用开发• 4.8.1 S3C44B0X RTC 功能
• 4.8.2 S3C44B0X RTC 特殊功能寄存器
• 4.8.3 S3C44B0X RTC 应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.8.1 S3C44B0X RTC 功能BCD 数据,秒、分、时、日、月、年闰年产生器告警功能: 告警中断或从断电模式唤醒排除了排除了 20002000年问题年问题独立的电源端口( VDDRTC )支持毫秒滴答时间中断作为 RTOS 核的时间滴答循环复位功能
第 4 章基于 S3C44B0X 嵌入式系统应用开发
实时时钟框图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
实时时钟部分外围电路
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.8.2 S3C44B0X RTC 特殊功能寄存器
• RTC控制寄存器 RTCCON• RTC告警控制寄存器• 告警秒、分、时、日、星期、月、年数据寄存器• BCD秒、分、时、日、星期、月、年数据寄存器• RTC循环复位寄存器 RTCRST• TICK TIME计数寄存器 TICNT
第 4 章基于 S3C44B0X 嵌入式系统应用开发
RTC 控制寄存器RTC 特殊功能寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发
• RTC告警控制寄存器( RTCALM )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
• 告警秒数据寄存器( ALMSEC )
• 告警分数据寄存器( ALMMIN )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
RTC 特殊功能寄存器告警时数据寄存器 ( ALMHOUR )
告警日数据寄存器 ( ALMDAY )
告警星期数据寄存器( ALMDATE )
告警月数据寄存器 ( ALMMON )
告警年数据寄存器 ( ALMYEAR )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
RTC 特殊功能寄存器
• BCD秒数据寄存器( BCDSEC )
• BCD 分数据寄存器( BCDMIN )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
BCD 时数据寄存器 ( BCDHOUR )
BCD日数据寄存器 ( BCDDAY )
BCD星期数据寄存器( BCDDATE )
BCD月数据寄存器 ( BCDMON )
BCD年数据寄存器 ( BCDYEAR )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
RTC 特殊功能寄存器
• RTC循环复位寄存器( RTCRST )
• TICK TIME 寄存器( TICNT )
第 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; }
第 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(……);}
第 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 检测标志置位}
第 4 章基于 S3C44B0X 嵌入式系统应用开发
6.9 S3C444B0X 看门狗定时器功能及应用开发
• 6.9.1 S3C44B0X 看门狗定时器概述• 6.9.2 S3C44B0X 看门狗定时器特殊功能寄存器• 6.9.3 S3C44B0X 看门狗定时器应用编程
第 4 章基于 S3C44B0X 嵌入式系统应用开发
6.9.1 S3C44B0X 看门狗定时器概述
看门狗定时器框图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
6.9.2 S3C44B0X 看门狗定时器特殊功能寄存器
看门狗定时器控制寄存器( WTCON )
看门狗定时器数据寄存器( WTDAT )
看门狗定时器计数寄存器( WTCNT )
第 4 章基于 S3C44B0X 嵌入式系统应用开发• 看门狗定时器控制寄存器( WTCON )
第 4 章基于 S3C44B0X 嵌入式系统应用开发
看门狗定时器数据寄存器( WTDAT )
看门狗定时器计数寄存器( WTCNT )
t_watchdog = 1/( MCLK / (预分频值+ 1) / 分频系数 )T_watchdog = WTDAT × t_watchdog
第 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); }
第 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 编程举例
第 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 )。
第 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象素数据输入端口。
第 4 章基于 S3C44B0X 嵌入式系统应用开发
LCD 控制器框图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
接口信号时序图
第 4 章基于 S3C44B0X 嵌入式系统应用开发
4.10.3 S3C44B0X LCD 控制器的操作
1. 灰度模式操作
2. 彩色模式操作
3. 扫描模式操作
4. 数据的存放与显示
第 4 章基于 S3C44B0X 嵌入式系统应用开发
S3C44B0X LCD 控制器的操作
像素点格式: 3-3-2 模式
灰度模式操作2 位像素 (4 级灰度,可在 16 级中选出 ) 4 位像素 (16 级灰度 )
彩色模式操作3 位红 ( 从 16种红中选出 8种 )
3 位绿 ( 从 16种绿中选出 8种 )2 位蓝 ( 从 8种蓝中选出 4种 )
像素点格式: 2 模式
像素点格式: 4 模式
第 4 章基于 S3C44B0X 嵌入式系统应用开发
S3C44B0X LCD 控制器的操作
扫描模式操作4 位单 /双扫描
8 位单扫描
第 4 章基于 S3C44B0X 嵌入式系统应用开发
S3C44B0X LCD 控制器的操作数据的存放与显示
4 位双扫描数据的存放与显示
第 4 章基于 S3C44B0X 嵌入式系统应用开发
S3C44B0X LCD 控制器的操作数据的存放与显示
4 位 /8 位单扫描数据的存放与显示
第 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.抖动模式寄存器
第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 1(LCD
CON1)
第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 1(LCDCON1)
16.5MHz > VCLK > 数据传输的速率 HS × VS × FR × MV
行像素 ×列像素 × 帧速率 × MV
第 4 章基于 S3C44B0X 嵌入式系统应用开发LCD控制寄存器 2(LCDCON2)
HOZVAL = ( 水平显示长度 / 有效 VD 数据线的数量) - 1
在彩色模式下: 水平显示长度 = 3 × 水平像素点数LINEVAL =垂直显示宽度-1;单扫描LINEVAL =垂直显示宽度 /2- 1 ;双扫描
第 4 章基于 S3C44B0X 嵌入式系统应用开发
LCD控制寄存器 3(LCDCON3)
第 4 章基于 S3C44B0X 嵌入式系统应用开发
帧缓冲起始地址寄存器 1(LCDSADDR1)
第 4 章基于 S3C44B0X 嵌入式系统应用开发
帧缓冲起始地址寄存器 2(LCDSADDR2)
第 4 章基于 S3C44B0X 嵌入式系统应用开发
帧缓冲起始地址寄存器 3(LCDSADDR3)
第 4 章基于 S3C44B0X 嵌入式系统应用开发RED查找表寄存器 (REDLUT)
GREEN查找表寄存器 (GREENLUT)
BLUE查找表寄存器 (BLUELUT)
第 4 章基于 S3C44B0X 嵌入式系统应用开发
不同模式的MV
frame_rate(Hz) = 1 / [ ( (1/VCLK) × (HOZVAL+1)+(1/MCLK) × (WLH+WDLY+LINEBLANK) ) × ( LINEVAL+1) ]
第 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;}
第 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; }}
第 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);
}