1.23k likes | 1.43k Views
第四章 基于 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.
E N D
第四章 基于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.3 存储控制器功能及应用开发 • 4.3.1 存储控制器概述 • 4.3.2 存储器空间划分简述 • 4.3.3 存储控制器相关功能引脚描述 • 4.3.4 存储控制器的特殊功能寄存器 • 4.3.5 存储器应用编程
寄存器组 片上Cache 主存储器 ARM层次 S3C44B0X层次 4.3.1 S3C44B0X存储控制器概述 • 特点:多级存储器 • 层次: 寄存器组 片上RAM 片上Cache 主存储器 硬盘 √ √ √
ARM状态下寄存器组织 堆栈指针 程序状态寄存器 程序链接寄存器
0 小端 上电复位时 1 大端 4.3.3 存储控制器相关功能引脚描述 • ENDIAN引脚 选择大/小端模式 • OM[1:0]引脚 选择Bank0(nGCS0)总线宽度 • 地址线连接 依据数据宽度而定
4.3.4 存储控制器的特殊功能寄存器 1. 总线宽度/等待控制寄存器(BWSCON) 2. Bank控制寄存器(BANKCONn) 3. DRAM/SDRAM刷新控制寄存器(REFRESH) 4. Bank大小寄存器(BANKSIZE) 5. Bank6、7模式设置寄存器(MRSR)
4.3.5 存储器应用编程 .global sRWramtest .equ RWBase, 0x0C030000 sRWramtest: 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, =0xDD STRB r3, [r2], #1 LDRB r3, =0xBB STRB r3, [r2], #1 LDRB r3, =0x22 STRB r3, [r2], #1 LDRB r3, =0x11 STRB r3, [r2] MOV pc, lr
举例:扩一个1M*16b的FLASH用于装载程序等 1. 收集资料,选择芯片 2.上网查找SST39VF160芯片资料(www.21ic.com) 3. 查看芯片资料(datasheet) 4. 画出硬件联接图(手册p4~p5) 5. 写出程序 ①查看读写时序图(p11) ②找出对应参数表(p10) ③分析时序要求,配置相应特殊功能寄存器 ④写出读写子程序
特殊功能寄存器配置示例 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)
读: ①#define addr1 *((volatile unsigned short*)0x00) i=addr1; ②i=*((volatile unsigned short*)0x00); 写: *((volatile unsigned short*)0x00) = (unsigned short)i ;
4.4 S3C44B0X I/O端口功能及应用开发 • 4.4.1 I/O功能概述 • 4.4.2 端口功能 • 4.4.3 I/O端口的特殊功能寄存器 • 4.4.4 端口应用编程
4.4.1 I/O功能概述 S3C44B0X有71个通用可编程多功能输入输出 引脚,可分为以下7类端口: • 一个10位输出端口(PortA); • 一个11位输出端口(PortB); • 一个16位输入/输出端口(PortC); • 两个9位输入/输出端口(PortE和PortF); • 两个8位输入/输出端口(PortD和PortG)。
4.4.3 I/O端口的特殊功能寄存器 1. 端口配置寄存器(PCONA-G); 2. 端口数据寄存器(PDATA-G); 3. 端口上拉寄存器(PUPC-G); 4. 特殊的上拉电阻控制寄存器(SPUCR); 5. 外部中断控制寄存器(EXTINT); 6. 外部中断挂起寄存器(EXTINTPND).
特殊功能寄存器配置示例 #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.4.4I/O端口应用编程 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; } 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); }
4.5 中断控制器功能及应用开发 4.5.1 中断控制器 4.5.2 中断控制器的运作 4.5.3 中断源 4.5.4 中断控制器的特殊功能寄存器 4.5.5 中断控制器应用编程
4.5.1 中断控制器 • 中断控制器的任务:在多重中断发生时,经过优先级判断选择其中一个中断向内核发出FIQ或IRQ中断请求。 • 中断模式(INTMOD) :FIQ模式和IRQ模式。 • 程序状态寄存器的F位和I位。
从优先级 主优先级 清标志 中断挂起寄存器 IRQ 中断模式 中断控制 中断屏蔽 清标志 FIQ F或I FI允许 清0 4.5.2 中断控制器的运作 30个中断源产生中断 IRQ FIQ 注:中断屏蔽可能在中断模式之前发生作用
4.5.3 中断源 1 3 3 4 EINT1>EINT0>TXD0>WDT>ADC 4 1 TIMER0>TXD0>EINT1>ZDMA0 ZDMA0>IIC>WDT 2 2
4.5.4 中断控制器的特殊功能寄存器 1 中断控制寄存器(INTCON) 2 中断挂起寄存器(INTPND) 3 中断模式寄存器(INTMOD) 4 中断屏蔽寄存器(INTMSK) 5 IRQ向量模式相关寄存器
中断特殊功能寄存器配置示例 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.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.6 UART接口功能及应用开发 4.6.1 S3C44B0X UART概述 4.6.2 S3C44B0X UART的操作 4.6.3 S3C44B0X UART的特殊功能寄存器 4.6.4 S3C44B0X UART应用编程
4.6.1 S3C44B0X UART概述 特性: • 可编程波特率 • 红外发/收 • 一个开始位 • 1/2个停止位 • 5/6/7/8数宽 • 奇偶校验
4.6.2 S3C44B0X UART的操作 • 数据传输 • 数据接收 • 自动流控制AFC( Auto Flow Control) • 非自动流控制(nRTS和nCTS由S/W所控制) • 中断/DMA请求的产生 • UART错误状态FIFO • 波特率的产生 • 回环(Loop-back)模式 • 红外模式
Start Bit Data Bits Parity Bits Stop Bits 1 5~8 1 1~2 TxDn 数据 发送寄存器 传输移位器 TxDn 数据 发送寄存器 TxFIFO 传输移位器 S3C44B0X UART的操作 数据传输: 传输基本方式:发送寄存器
Start Bit Data Bits Parity Bits Stop Bits 数据 发送寄存器 接收转换器 RxDn 数据 发送寄存器 RxFIFO 接收转换器 RxDn S3C44B0X UART的操作 数据接收: 接收基本方式: 错误标志:溢出错误、奇偶错误、帧错误、 断点条件
S3C44B0X UART的操作 自动流控制: 其FIFO 剩余空间>2
检查RxFIFO 剩余空间 有nCTS信号 发送数据 nRTS S3C44B0X UART的操作 非自动流控制: 特点:nRTS和nCTS由软件控制 设置接收模式 设置发送模式
S3C44B0X UART的操作 中断请求的产生: • 溢出错误、奇偶错误、帧错误、断点条件 FIFO模式 • Rx 非FIFO模式 FIFO模式 • Tx 非FIFO模式
S3C44B0X UART的操作 波特率的产生: • UBRDIVn=( 取整 )( MCLK/波特率×16 ) -1 • 波特率为115200bps, MCLK为40HZ UBRDIVn=( 取整 )( 40000000 /115200×16 ) - 1 =( 取整 )( 21.7 ) - 1 =22- 1 =21
S3C44B0X UART的操作 红外模式:
4.6.3 S3C444B0X UART的特殊功能寄存器 • UART的(行)控制寄存器 • UART FIFO(状态)控制寄存器 • UART MODEM (状态)控制寄存器 • UART Tx/Rx寄存器 • UART 错误状态寄存器 • UART 发送保持寄存器 • UART 接收保持寄存器 • UART 波特率分频寄存器