第6章 基于S3C44B0X的嵌入式系统应用开发_第1页
第6章 基于S3C44B0X的嵌入式系统应用开发_第2页
第6章 基于S3C44B0X的嵌入式系统应用开发_第3页
第6章 基于S3C44B0X的嵌入式系统应用开发_第4页
第6章 基于S3C44B0X的嵌入式系统应用开发_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章基于S3C44B0X的嵌入式系统(xtng)应用开发 端口组件(z jin)原理及应用 6.2中断组件原理及应用 36.3嵌入式最小系统36.16.4 UART组件原理及应用 DMA组件原理及应用 6.5PWM定时器原理及应用 36.6I2C组件原理及应用 36.7共一百六十四页6.1 嵌入式最小系统(xtng)简介(jin ji) 一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。返

2、回共一百六十四页6.1.1 嵌入式最小系统(xtng)组成嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)可选,因为(yn wi)许多面向嵌入式领域的微控制器内部集成了程序和数据存储器最小系统框图可选,但是在样品阶段通常都会设计这部分电路共一百六十四页基于S3C44B0X的典型嵌入式系统(xtng)硬件体系结构 共一百六十四页6.1.2 电源模块的选择(xunz)及电路设计 电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。 考虑因素:输出的电压、电流、功率;输入的电压、电流;安

3、全因素;电池兼容和电磁干扰;体积限制(xinzh);功耗限制;成本限制。共一百六十四页电源模块的选择(xunz)及电路设计为LCD 屏及USB接口(ji ku)等供电电源转换模块为I/O供电S3C44B0X的内核共一百六十四页6.1.3 时钟电源(dinyun)管理与时钟源的设计 1时钟(shzhng)源的设计微处理器X1X2CCXtal使用内部振荡器使用外部时钟源微处理器X1X2CClock可以使用稳定的时钟信号源,如有源晶振等。共一百六十四页S3C44B0X 的时钟电路(dinl)连接外部(wib)晶振 时钟源的选择 共一百六十四页 2时钟与电源(dinyun)管理概述1. 时钟的作用(z

4、uyng) 作为CPU及外设定时与同步信号。 S3C44B0X内部的时钟发生器可以产生CPU和外设所需要的时钟信号。 S3C44B0X的时钟电源管理模块集中管理时钟脉冲的发生与电源。共一百六十四页时钟(shzhng)管理2. 时钟(shzhng)发生器的组成外部晶振外部时钟锁相环电路PLL输出频率供给CPU的主频共一百六十四页电源(dinyun)管理S3C44B0X的电源(dinyun)管理方案有五种:正常模式(Normal mode)低速模式(Slow mode)空闲模式(Idle mode)停止模式(Stop mode)LCD的SL空闲模式(SL Idle mode)共一百六十四页3. 时

5、钟及电源管理(gunl)的特殊功能寄存器 与时钟发生器及电源管理有关的特殊功能寄存器包括(boku)时钟控制寄存器、时钟低速控制寄存器和锁时计数寄存器等。共一百六十四页PLL控制(kngzh)寄存器一、PLLCON:控制PLL分频,决定(judng)PLL输出频率。位19:12(8位)11:10(2位)9:4(6位)3:2(2位)1:0(2位)PLLCONMDIV保留PDIV 保留SDIV 含义主分频控制无意义预分频控制无意义分频后控制初始值0 x380 x0800二、参数的范围:MDIV=0255; PDIV=063, SDIV=03三、PLL输出频率:fpllo=(mfin) / (p 2

6、s) 其中:m=MDIV+8, p=PDIV+2, s=SDIVPLL参数选择原则:(1)fpllo 2s170 MHz且S的值应该尽可能的大(2)1fin/p2(3)20MHzfpllo66MHz共一百六十四页PLL值示例(shl)1已知:fin=20MHz,MDIV=100,PDIV=14,SDIV=2,求fpllo解: m=MDIV+8108, p=PDIV+216, s=SDIV2,则:PLL输出(shch)频率:fpllo=(mfin) / (p 2s)10820/(164)33.75MHz 共一百六十四页PLL值示例(shl)2已知:fin=11.0592MHz,fpllo=50M

7、Hz试确定(qudng)PLLCON的值。解:由原则之一:1fin/p2,知11.0592/2p 11.0592,可取值611(整数)P=6时,PDIVp-2=4=000100由原则之二:fpllo2s170MHz,即2S0fout=fin;SLOW_VAL=0低速分频值4位编码决定SLOW_BIT=1时低速分频的值初始值000 x09共一百六十四页锁时计数(j sh)寄存器锁时计数(j sh)寄存器CLKTIME存放PLL锁时的计数值。共12位。位11:0位名称LTIME CNT含义PLL锁时计数值初始值0 x9共一百六十四页应用中时钟(shzhng)的设定 头文件.h中的宏定义(dngy)

8、#define FIN 8000000#define MCLK 64000000#if (MCLK=64000000)#define M_DIV (0 x38)#define P_DIV (0 x2)#define S_DIV (0 x1)#elif (MCLK=60000000)#define M_DIV (0 x34)#define P_DIV (0 x3)#define S_DIV (0 x1)#endif在启动代码.s文件中对PLLCON值的加载。ldrr0,=PLLCON /* temporary setting of PLL */ldrr1,=(M_DIV12)+(P_DIV4)+

9、S_DIV) /* Fin=8MHz,Fout=64MHz */strr1,r0共一百六十四页6.1.4 复位电路设计与模式(msh)选择 1. 复位(f wi)电路的作用 负责将处理器初始化为某个确定的状态 。2. S3C44B0X的复位 复位引脚为nRESET ,至少保持4个MCLK时钟周期的低电平 ,才能复位。共一百六十四页接口设计之复位电路设计与模式(msh)选择(3)OM1=0且OM0=1选择16位数据(shj)宽度 大小端格式选择及数据宽度选择连接电路大端格式 小端格式 S3C44B0X的数据存储模式有大端和小端的选择 ,由引脚ENDIAN 决定。 OM1:OM0启动FLASH 的

10、数据宽度 。共一百六十四页6.1.5 存储器组件与接口(ji ku)模块 嵌入式系统使用的存储器有多种类型,主要包括Flash、EPROM、SDRAM以及SRAM等,为满足不同类型(lixng)的存储器对不同速度、不同类型(lixng)、不同总路线宽度等的存储器的管理和控制,存储控制组件是必不可少的。正是存储控制器为片外存储器访问提供必要的控制信号,管理着片外存储部件。 共一百六十四页不同存储器组织(zzh)的存储器地址线与系统地址总线的连接表6.6 S3C44B0X不同(b tn)存储器组织的存储器地址线与系统地址总线的连接存储器地址线8位存储器组织下的系统地址总线16位存储器组织下的系统地

11、址总线32位存储器组织下的系统地址总线A0A0A1A2A1A1A2A3A2A2A3A4A3A3A4A5::Am-1Am-1Am-2Am-3共一百六十四页存储器组件(z jin)中的特殊功能寄存器之一 返回(fnhu) 总线宽度与等待控制寄存器BWSCONSTi写高/低字节使能:1使能;0禁止(表示SRAM映射在Banki时写高/低字节使能)WSi等待:1等待;0禁止等待(表示SRAM映射在Banki时等待)DWi总线宽度:00=8位,01=16位,10=32位,11不用DW0为Bank0的宽度:00=8位,01=16位,10=32位,11不用(DW0只读,不可写)ENDIAN大小端模式:0小端

12、模式;1大端模式共一百六十四页存储器组件(z jin)中的特殊功能寄存器之二 返回(fnhu) 内存通道控制寄存器BANKCONi存储器类型16:1514:1312:1110:87:65:4321:0ROM或SRAMMT=00TacsTcosTaccTochTcahTacpPMCFP DRAM或EDO DRAMMT=01或10TrcdTcasTcpCANSDRAMMT=11TrcdCAN决定BANK6、7的类型nGCSi选择之前地址时钟个数0,1,2,4分页模式配置1,4,8,16个数据访问时钟个数1,2,3,4,6,8,10,14保持nOE时钟个数0,1,2,4,nGCSi选择前的保持时钟个

13、数0,1,2,4RAS到CAS的延时时钟个数1,2,3,4页访问周期(时钟个数)2,3,4,6CAS脉冲宽度(时钟个数)1,2CAS预充电时间(时钟个数)1,2列地址位数8,9,10,11位选择nOE时钟个数0,1,2,4,RAS到CAS的延时时间1,2,3,4共一百六十四页存储器组件(z jin)中的特殊功能寄存器之三 返回(fnhu) 刷新控制寄存器REFRESH232221:2019:1817:1615:121110:0REFENTREFMDTrpTrcTchr000Refresh CounterREFEN 刷新使能:0 = 禁止刷新,1 = 刷新 刷新模式:0 = CBR(CAS be

14、fore RAS)/自动刷新 1 = 自刷新(控制信号为电平) 行预充电时间 DRAM :00 = 1.5 个时钟 01 = 2.5 个时钟 10 = 3.5 个时钟 11 = 4.5 个时钟SDRAM :00 = 2个时钟 01 = 3个时钟10 = 4个时钟 11 = 不支持SDRAM RC最小时间:00 = 4个时钟 01 = 5个时钟10 = 6个时钟 11 = 7个时钟CAS保持时间(DRAM): 00 = 1个时钟 01 = 2个时钟 10 = 3个时钟 11 = 4个时钟 刷新计数值:刷新周期= (211-刷新计数值+1)/MCLK共一百六十四页存储器组件中的特殊(tsh)功能寄

15、存器之四 返回(fnhu) Bank容量寄存器BANKSIZE在SDRAM访问周期SCLK使能位:0 =禁止,1 = 允许。BK76MAP BANK6/7存储器容量大小:000 =32M 100 = 2M 101 = 4M 110 = 8M432:0SCLKEN0BK76MAP共一百六十四页存储器组件中的特殊(tsh)功能寄存器之五 返回(fnhu) SDRAM模式设置寄存器MRSRB6和MRSRB711:1098:76:432:0保留WBLTMCLBTBLWBL(write burst length)写突发脉冲长度:0为推荐值TM (Test mode)测试模式选择:00: 由模式寄存器设置

16、 01, 10, 11: 保留 CL (CAS latency)CAS发送时钟000 = 1个时钟010 = 2个时钟011=3个时钟 其它=保留 BT (Burst type)突发类型:0: 顺序(推荐) 1: 未用(Burst length)突发长度:000: 1,其余未用共一百六十四页存储器接口(ji ku)电路设计及应用 S3C44B0X内部没有存储器,因此必须采用总线方式(fngsh)扩展外部存储器,包括程序存储器和数据存储器,此处主要介绍扩展外部存储器的方法。NOR FlashNand FlashFlash共一百六十四页典型Flash芯片(xn pin)及与S3C44B0 的连接程

17、序存储器采用(ciyng)SST39VF160,它是1M*16位的Flash存储器芯片。 Flash的地址范围为0 x000000000 x001FFFFF 共一百六十四页典型(dinxng)SDRAM芯片及与S3C44B0 的连接 SDRAM HY57V651620B内部有4个1M16的存储器阵列(zhn li),所以容量为211*2*16=222*16=4M*16=8MB 。 SDRAM必须放到BANK6开始的区域 。 SDRAM地址范围为0 x0C0000000 x0C7FFFFF。共一百六十四页13个存储控制寄存器的配置(pizh)示例共一百六十四页6.1.6 JTAG接口(ji ku

18、)电路设计1. ARM公司提供的标准20脚JTAG仿真调试接口电路,芯片内部(nib)有JTAG CORE 。2. S3C44B0X通过外部JTAG/ICE端口支持ARM标准的嵌入式在线仿真,共有四个管脚:3. JTAG接口电路 TMS:测试模式选择TDI:测试数据输入TDO:测试数据输出TCK:测试时钟共一百六十四页6.2 端口组件(z jin)原理及应用 1.处理器通过I/O口和外围(wiwi)硬件连接; 2.ARM芯片的I/O口通常都是和其他引脚复用的; 3.熟悉I/O口的功能,通过特殊功能寄存器的配置对I/O口进行编程; 4.S3C44B0有71个通用可编程多功能输入/输出引脚,共7类

19、端口,如下所示:返回共一百六十四页端口组件(z jin)之端口功能 一、双功能端口 A,B、D端口具有(jyu)两种功能二、三功能端口 C,E、G端口具有三种功能三、四功能端口 F端口具有四种功能返回共一百六十四页端口组件(z jin)之端口寄存器 每个端口都可以通过软件设置来满足(mnz)各种各样的系统设置和设计要求。每个端口的功能通常都要在主程序开始前被定义。如果一个引脚的多功能没有使用,那么这个引脚将被设置为I/O端口。在引脚配置以前,需要对引脚的初始化状态进行设定来避免一些问题的出现。 共一百六十四页GPIOIISDIEINT5GPG5引脚配置(pizh)引脚功能(gngnng)选择使

20、用示例 S3C44B0微控制器的引脚一般是多个功能复用,但是同一引脚在同一 引脚在同一时刻只能使用其中一个功能,这可以通过设置PCONx寄存器来选择。通过PCONG控制引脚功能共一百六十四页端口组件(z jin)之端口寄存器(P49) 1.端口配置寄存器:PCONAPCONG 决定AG各相应端口每个引脚的功能。2.端口数据寄存器:PDATAPDATG 寄存I/O端口的数据。3.端口上拉寄存器:PUPCPUPG 决定端口是否内部接通(ji tn)上拉电阻。 0上拉;1禁止4.特殊上拉电阻控制寄存器:SPUPR 决定对数据总线引脚是否内部接上拉电阻。 0上拉;1禁止返回共一百六十四页例题(lt):

21、例1:设置A端口均为输出(shch)端口,并设置PGA4,PGA6为1,其他引脚均为0; 答案:PCONA=0 x0; PDATA=0 x50;共一百六十四页例题(lt):例2:设置C端口均为数据总线,并读取数据总线的值,当值(dn zh)为0 x80时,让变量i=0,否则i=1;答案:PCONC=0 xAAAAAAAA; if(PDATC=0 x80) i=0; else i=1;共一百六十四页练习(linx)1. 设置D端口的PD0PD3分别(fnbi)为VD0VD3功能,其他D端口为输出引脚,则PCOND= ?2. 设置G端口的PG6和PG7分为EINT6和EINT7,PG1为输出端口,

22、输出值为1,其他为输入端口,并且输出端口使能上拉电阻,其他禁止,则PCONG= ?,PUPG=?,PDATG=?共一百六十四页简易键盘接口应用(查询(chxn)方式)端口初始化及简单键盘I/O方式处理汇编程序:PCONG equ 0 x01D20040 ;G口配置寄存器地址(dzh)PDATG equ 0 x01D20044 ;G口数据寄存器地址PUPG equ 0 x01D20048 ;G口上拉电阻寄存器地址MOV R0,#0LDR R1,=PCONGSTRH R0,R1 ;GPG口为输入端口MOV R1,PUPGSTRB R0,R1 ;GPG口内部上拉LDR R0,=PDATGLDR R1

23、,R0 ;取键值AND R1,#0 x0FC ;提取GP2GP7CMP R1,#0 x0FCBEQ LNOKEYCMP R1,#0 x0F8BEQ LKEY1CMP R1,#0 x0F4BEQ LKEY2:LNOKEYLKEY1LKEY2:此处没有消抖处理,如何消抖?共一百六十四页键盘(jinpn)接口C语言代码void PortInit(void)/端口初始化函数,本函数只针对图6.17电路进行(jnxng)了键盘初始化 rPCONG = rPCONG&0 xf; /设置PG2PG7为输入功能 rPUDG = rPUDG | 0 xfC; /因为电路中PG2PG7端口已接外部上拉,所以内部上

24、拉可不使用uint8 GetKey(void) /读按键程序 KeyValue=0; if(rPDATG & (12) =0) /判断KEY1键是否按下 longdelay(3); /延时函数,用于键盘消抖 if(rPDATG & (12)=0) /再次判断KEY1键是否按下 KeyValue = 1; else if(rPDATG & (13) =0) /判断KEY2键是否按下 longdelay(3); if(rPDATG & (13) =0) KeyValue = 2; 。 。 return KeyValue; 共一百六十四页6.3 中断(zhngdun)组件原理及应用 中断(zhngd

25、un)处理过程中断的定义是什么?什么是中断?返回共一百六十四页什么(shn me)是中断服务程序 在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupt handler)或中断服务程序(interrupt service routine(ISR)) 。产生中断的每个设备都有相应的中断处理程序。 例如,由一个函数专门处理来自系统时钟(shzhng)的中断,而另外一个函数专门处理由键盘产生的中断。 共一百六十四页S3C44B0X中断(zhngdun)控制1.中断(zhngdun)模式 FIQ模式和IRQ模式 矢量中断模式2. CPSR的F位和I位 1:表示不接受中

26、断请求; 0:表示接受中断请求。 共一百六十四页中断(zhngdun)源及中断(zhngdun)向量一、中断源共有(n yu)30个中断源,其中:(1)26个中断源是单独的直接接到中断控制器上(2)4个外部中断源(EINT4/ EINT5/ EINT6/ EINT7)是通过逻辑或之后加到中断控制器上的另外两个UART0/1错误中断也是一个中断控制器。二、中断向量各中断源及向量地址如表6.9所示。返回共一百六十四页向量(xingling)中断控制器(VIC)向量中断(zhngdun)控制器概述 ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内外部有许多中断源,最多可

27、以有30个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。ARM7TDMIIRQFIQVIC中断请求输入1中断请求输入30. . .共一百六十四页6.3.2 中断功能(gngnng)控制寄存器 1.中断(zhngdun)控制寄存器2.中断挂起寄存器 3.中断模式寄存器 4. 中断屏蔽寄存器 5.中断服务挂起寄存器6.外部中断控制寄存器7.外部中断请求寄存器共一百六十四页中断组件(z jin)之一中断控制寄存器返回(fnhu)中断控制寄存器INTCON(4位):决定IRQ和FIQ中断是否允许。格式:位3210SPUPR保留VIF说明

28、00=矢量中断模式1=非矢量中断模式0=IRQ中断允许1=IRQ中断禁止0=FIQ中断允许1=FIQ中断禁止初始值0111地址:0 x01E00000初值:0 x07 (IRQ和FIQ全部禁止中断)示例:设定S3C44B0处理器的IRQ中断允许,采用矢量中断模式,不允许FIQ中断,则INTCON= ? 0 x01共一百六十四页中断(zhngdun)组件之二中断挂起寄存器返回(fnhu)INTPND(26位,表6-62),指示中断请求状态位名称位位名称位含义初始值EINT025INT_TIMER1120=无请求;1=有请求全为0EINT124INT_TIMER211EINT223INT_TIME

29、R310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD13INT_WDT15INT_UTXD02INT_UERR0/114INT_RTC1INT_TIMER013INT_ADC0示例:查询外部中断3是否有中断请求,应该使用什么判断语句?答案:if( INTPND &0 x400000)!=0)共一百六十四页中断组件(z jin)之三中断模式寄存器返回(fnhu)

30、INTMOD(26位):设置26个中断源中断处于IRQ还是FIQ模式。位名称位位名称位含义EINT025INT_TIMER1120=IRQ模式;1=FIQ模式EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD13INT_WDT15INT_UTXD02INT_UERR0/114INT_RTC1I

31、NT_TIMER013INT_ADC0示例:设置S3C44B0处理器中的定时器0为快速中断模式,其余全为普通中断,则INTMOD= ?0 x113共一百六十四页中断(zhngdun)组件之四中断屏蔽寄存器返回(fnhu)中断屏蔽寄存器INTMSK(27位):决定26个中断源中断是否允许中断响应。各位:(1)250位: 1禁止中断 0允许中断(2)26位(全局屏蔽):1禁止 0允许必须满足:全局允许且各自允许方可进入中断响应!位名称位位名称位含义保留27INT_TIMER013 0=服务允许; 1=屏蔽Global26INT_TIMER112EINT025INT_TIMER211EINT124I

32、NT_TIMER310EINT223INT_TIMER49EINT322INT_TIMER58EINT4/5/6/721INT_URXD07INT_TICK20INT_URXD16INT_ZDMA019INT_IIC5INT_ZDMA118INT_SIO4INT_BDMA017INT_UTXD13INT_BDMA116INT_UTXD02INT_WDT15INT_RTC1INT_UERR0/114INT_ADC0示例:设置使定时器2中断服务允许,其它中断服务屏蔽,则INTMSK= ? 111(126)|(111)正确答案:(126)|(111)共一百六十四页中断组件之五IRQ/FIQ中断服务(

33、fw)及清除寄存器返回(fnhu)中断服务挂起寄存器(26位):I_ISPR只读寄存器,反映26个中断源中断是否被响应。各位:1中断被响应 0中断未被响应中断清除寄存器(26位):I_ISPC和F_ISPC清除26个中断源中某一中断服务(结束)。各位:1清除中断请求 0不变共一百六十四页中断组件(z jin)之六外部中断控制寄存器返回(fnhu)外部中断控制寄存器EXTINT(12位):决定8个外部中断源(EINT07)的触发方式每个中断源3位: 位位名称描述30:28EINT7000低电平触发001高电平触发01X下降沿触发 10X上升沿触发11X双边沿触发 26:24EINT622:20E

34、INT518:16EINT414:12EINT310:8EINT26:4EINT12:0EINT0共一百六十四页中断组件(z jin)之七外部中断请求寄存器返回(fnhu)外部中断请求寄存器EXTINTPND(4位):记录4个外部中断源(EINT47)的中断请求状态:0无中断申请 1有中断申请位3210EXTINTPNDEXINTPND3EXINTPND2EXINTPND1EXINTPND0含义1=EINT7有中断同时INTPND21=11=EINT6有中断同时INTPND21=11=EINT5有中断同时INTPND21=11=EINT4有中断同时INTPND21=1 示例:如何判断外部中断7

35、有中断产生? if(EXTINTPND&0 x8)!=0共一百六十四页S3C44B0X中断(zhngdun)控制器应用Eint4567IsrpISR_EINT4567Eint4567IsrLDR PC, PC, #-0 xff00 x0000 00000 xFFFF FFFF用户程序中断服务程序异常向量表共一百六十四页IRQ中断(zhngdun)的设计实例 实例:设置外部中断(zhngdun)4产生向量IRQ中断后,执行中断服务程序“Eint4567Isr( )”。.rPCONG = 0 xffff;rINTMOD = 0 x0; rINTCON = 0 x1; rINTMSK = (126

36、|121);pISR_EINT4567 = (int)Eint4567Isr; rEXTINT = rEXTINT | 0 x22220020;rI_ISPC |= BIT_EINT4567; rEXTINTPND = 0 xf; .C代码:1.设置引脚连接模块,设置端口为外部中断功能;步骤:2.设置所有中断为IRQ中断并允许IRQ中断;3.打开全局中断使能和外部中 断4567使能;4.将外部中断4的中断服务程序写入对应向量地址寄存器中;6.清除外部中断4的标志(1)(2)(3)(4)(6)(6)(2)5.设置中断触发方式(5)共一百六十四页0 x0000 00000 xFFFF FFFF用户

37、程序中断服务程序异常向量表1.正在(zhngzi)执行用户程序;2.外部(wib)中断4发生中断;3.VIC硬件将中断服务程序地址装入pISR_EINT4567寄存器;4.程序跳转至异常向量表中IRQ入口0 x0018处;5.执行指令跳转至pISR_EINT4567寄存器中的中断服务地址;6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。图示IRQ中断的发生过程Eint4567Isr?pISR_EINT4567Eint4567IsrLDR PC, PC, #-0 xff0共一百六十四页S3C44B0X中断(zhngdun)控制器应用 有一嵌入式系统采用S3C44B0X处理器,

38、系统的外部中断连接如下(rxi)图所示,请针对此图,要求KEY1键按下,二极管LED1点亮(函数LedOn()已知);KEY2键按下,二极管LED1熄灭(函数LedOff()已知);KEY3键按下LED1闪烁(LedShine()已知),写出外部中断的相关程序片段。 共一百六十四页S3C44B0X中断(zhngdun)控制器应用编程外部中断初始化函数(hnsh)#define BIT_EINT1 (0 x124)#define BIT_EINT4567 (0 x121)#define BIT_GLOBAL (0 x126)void init_Eint(void) rINTCON = 0 x1;

39、 /使能IRQ中断 rINTMOD = 0 x0; /选择IRQ中断模式 rINTMSK = (BIT_GLOBAL |BIT_EINT4567| BIT_EINT1 ; pISR_EINT4567 = (int)Eint4567Isr; pISR_EINT1 = (int)Eint1Isr; rPCONG = rPCONG & (0 x32) & (0 xf8); rPUPG = 0 x0; rEXTINT = rEXTINT|(0 x44)|(0 x216)|(0 x220); rI_ISPC = rI_ISPC |BIT_EINT4567| BIT_EINT1; rEXTINTPND &

40、= 0 x3; 共一百六十四页S3C44B0X中断(zhngdun)控制器应用编程中断服务程序void Eint1Isr(void) /外部中断1服务程序 rI_ISPC &= BIT_EINT1; /清除(qngch)挂起位 LedShine(); /LED1闪烁void Eint1Isr(void) /外部中断4/5/6/7服务程序 unsigned char which_int; which_int rEXTINTPND; rEXTINTPND0 xf; /清除 EXTINTPND寄存器 rI_ISPC &BIT_EINT4567;/清除挂起位 if(which_int & 0 x1)

41、!= 0) /外部中断4产生中断 LedOn(); if(which_int & 0 x2) != 0) /外部中断5产生中断 LedOff();共一百六十四页6.4 UART组件原理(yunl)及应用1.定义:UART (Universal Asynchronous Receiver/Transmitter )通用异步收发器,用于控制计算机与串行设备(shbi)的接口;2. S3C44B0X的UART单元提供两个独立的异步串行I/O口,每个通信口均可工作于中断模式;3.最高传输速率115.2kbps;4.特性:可编程波特率,红外发送/接收、一个开始位、一个或两个停止位、5/6/7/8位的数据

42、宽度和奇偶校验;5.组成:波特率发生器、接收器、发送器和控制单元 返回共一百六十四页UART的硬件(yn jin)组成1.数据传输2.数据接收3.中断请求的产生(chnshng)4.波特率的产生5.红外模式操作共一百六十四页同步(tngb)和异步简单讲: 同步是指:发送方发出数据后,等接收方发回响应以 后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响(huxing) 应,接着发送下个数据包的通讯方式。 共一百六十四页异步传输(chun sh) 异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同

43、步。 所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。一个字符占用 58位,具体取决于数据所采用的字符集。 此外,还要附加 1 位奇偶校验位; 发送端与接收端除了(ch le)采用相同的数据格式,还应当采用相同的传输速率。 典型的速率有:9600 b/s、56kb/s、115.2kb/s等。 共一百六十四页同步(tngb)传输 同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束(jish),一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差

44、错控制。 所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。 共一百六十四页 使用UART0通信需要(xyo)两个引脚,分别为:引脚名称类型描述RxD0输入串行输入,接收数据TxD0输出串行输出,发送数据使用(shyng)UART通信S3C44B0的I/O电压为3.3V(可承受5V),连接时须注意电平的匹配。与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。S3C44B0PC机串口232电平转换TxD0RxD0TxD0RxD0S3C44B0其它通信设备TxD0RxD0TxD0RxD0共一百六十四页UART组件(z jin) U

45、ART的特殊功能(gngnng)寄存器UART线控制寄存器UART控制寄存器发送/接收状态寄存器UART发送/接收(缓冲区)寄存器UART波特率除数寄存器FIFO控制寄存器Modem控制寄存器UART错误状态寄存器FIFO状态寄存器Modem状态寄存器共一百六十四页UART组件(z jin)之一 UART线控制寄存器ULCON0和ULCON1:P11D0D1D2D3D4D5D6D70位65 : 321 :0功能红外模式奇偶校验停止位数据位数停止(tngzh)位(12位)数据(58位)奇偶校验位(可选)起始位ULCON寄存器: ULCON控制发送和接收数据帧的格式。TXD共一百六十四页UART组

46、件(z jin)之一 UART线控制寄存器位65 : 321 :0功能红外模式奇偶校验停止位数据位数数据位数:这些位控制数据长度。00:5位字符长度;01:6位字符长度;10:7位字符长度;11:8位字符长度;ULCON0和ULCON1:共一百六十四页UART组件(z jin)之一 UART线控制寄存器位65 : 321 :0功能红外模式奇偶校验停止位数据位数ULCON0和ULCON1:停止位:控制每帧数据包含的停止位个数。0:1位停止位;1:2位停止位;共一百六十四页UART组件(z jin)之一 UART线控制寄存器位65 : 321 :0功能红外模式奇偶校验停止位数据位数ULCON0和U

47、LCON1:校验位:控制校验(xio yn)的使能和选择。 0XX=无校验 100=奇校验 101=偶校验 110=校验位强置1 111=校验位强清0 共一百六十四页UART组件(z jin)之一 UART线控制寄存器位65 : 321 :0功能红外模式奇偶校验停止位数据位数红外模式:是否选择(xunz)红外模式。0:正常模式 1:红外模式ULCON0和ULCON1:共一百六十四页示例(shl) 设置UART1为数据传输模式为7位数据位,1位停止位,偶校验(xio yn),正常模式,请问对哪个寄存器设置?值为多少?位65 : 321 :0功能红外模式奇偶校验停止位数据位数1001010ULCO

48、N1=0 x2A共一百六十四页UART组件(z jin)之二 UART控制寄存器UCON0和UCON1:位9876543:21:0UCON0UCON1发送中断请求类型接收中断请求类型接收超时中断使能接收错误中断使能回送模式发送中止信号发送模式接收模式含义0=脉冲1=电平0=脉冲1=电平0=禁止1=允许0=禁止1=允许0=正常模式1=回送模式0=正常工作1=发中止信号00=禁止01=中断请求10=BDMA0请求11=BDMA1请求00= 禁止01=中断请求10=BDMA0请求11=BDMA1请求示例:寄存器UCON0=0 x245,表示(biosh)什么意思?共一百六十四页UART组件(z ji

49、n)之三 FIFO控制寄存器UFCON0和UFCON1: 位7:65:43210UFCON0UFCON1发送FIFO触发电平接收FIFO触发电平保留发送FIFO复位接收FIFO复位FIFO使能含义00=空01=4字节10=8字节11=12字节00=4字节01=8字节10=12字节11=16字节0=正常1=发送FIFO复位0=正常1=发送FIFO复位0=FIFO禁止1=FIFO使能共一百六十四页UART组件(z jin)之四 Modem控制寄存器UMCON0和UMCON1:位7:543:10UMCON0UMCON1保留000自动流控制AFC保留000请求发送含义0=AFC禁止1=AFC允许若AF

50、C允许该位不起作用若AFC禁止,则0=高电平(不激活nRTS)1=低电平(激活nRTS)共一百六十四页UART组件(z jin)之五 发送/接收(缓冲区)寄存器发送寄存器UTXH0和UTXH1接收寄存器URXH0和URXH1正是通过发送寄存器才将数据(shj)从UART0或UART1的TXD0或TXD1脚发送出去。外部经RXD0或RXD1引脚送来的串行数据经移位后存在URXH0或URXH1中。示例:从UART1口发送数据0 x83,应如何发送?共一百六十四页UART组件(z jin)之六 UART错误状态寄存器UERSTAT0和UERSTAT1:返回(fnhu)位3210UERSTAT0UER

51、STAT1间隔中断数据帧错误奇偶错误溢出错误含义0=未收到中止信号1=收到中止信号 0=接收无帧错误1=接收数据帧错0=无奇偶校验错1=奇偶校验出错0=无溢出错1=溢出错误共一百六十四页UART组件(z jin)之七 FIFO状态寄存器UFSTAT0和UFSTAT1:返回(fnhu)位15:10987:43:0UFSTAT0UFSTAT1保留发送FIFO满接收FIFO满发送FIFO计数器接收FIFO计数器含义 无含义0=发送FIFO数据个数 不超过15字节1=发送FIFO满 0=接收FIFO数据个数 不超过15字节1=接收FIFO满编码表示发送FIFO数据数量(字节数)编码表示接收FIFO数据

52、数量(字节数) 共一百六十四页UART组件(z jin)之八 Modem状态寄存器UMSTAT0和UMSTAT1:返回(fnhu)位43:10UMSTAT0UMSTAT1CTS保留CTS含义0=CTS无变化1=CTS有变化无含义0=CTS未激活(nCTS引脚为高)1=CTS已激活(nCTS引脚为低)共一百六十四页UART组件之九 发送/接收(jishu)状态寄存器UTRSTAT0和UTRSTAT1:位210UTRSTAT0UTRSTAT1发送移位寄存器状态发送缓冲器状态接收缓冲器数据状态含义0=发送寄存器非空1=发送寄存器为空0=缓冲寄存器非空1=缓冲寄存器为空0=完全为空,无数据1=接收缓冲

53、寄存器中有数据示例:用何语句(yj)等待发送缓冲器为空?共一百六十四页UART组件(z jin)之十 UART波特率除数寄存器UBRDIV0和UBRDIV1:存放(cnfng)波特率因子除数寄存器的值与波特率的关系:UBRDIVn =round_off(MCLK/(波特率16)-1实用公式:UBRDIVn =INT(MCLK/(波特率16)+0.5)-1共一百六十四页波特率除数(ch sh)计算示例题:某系统采用(ciyng)S3C44B0要求UART1的波特率为115200bps,主时钟50MH时钟,求UBRDIV1的值答案: UBRDIV1=26共一百六十四页UART0应用(yngyng)

54、示例操作流程设置引脚连接模块将对应IO连接到UART0设置串口工作模式设置串口波特率发送或接收数据检查串口状态字或等待串口中断共一百六十四页UART0应用(yngyng)示例初始化代码UART初始化代码(di m):void UART0_Init(int mclk,int baud) if(mclk=0) mclk=MCLK; rPCONE = 0 x28; rULCON0=0 x3; rUCON0=0 x245; rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 ); mclk为CPU主频,baud是波特率设置线控制寄存器设置控制寄存器,接收和发送根据波特率计

55、算分频值设置引脚连接模块例如:设置UART0波特率为9600bps,则调用函数为,UART0_Init(0,9600);共一百六十四页UART0应用示例(shl)初始化代码UART初始化代码(di m):void UART0_Init(int mclk,int baud) if(mclk=0) mclk=MCLK; rPCONE = 0 x28; rULCON0=0 x3; rUCON0=0 x245; rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 ); 设置引脚连接模块将对应IO连接到UART0设置串口工作模式设置串口波特率发送或接收数据检查串口状态字或等

56、待串口中断共一百六十四页UART0应用(yngyng)示例收发数据void UART0_SendByte(uint8 data) rUTXH0 = data; while(rUTRSTAT0 & 0 x2) = 0);uint8 UART0_RcvByte(void) uint8 rcv_data; while(rUTRSTAT0 & 0 x01) = 0); rcv_data = rURXH0; return(rcv_data);查询方式发送一字节(z ji)数据:查询方式接收一字节数据:将要发送的一字节数据写入UTXH0等待数据发送完毕等待数据到达从URXH0中读出接收的数据返回接收的数据

57、共一百六十四页UART0应用(yngyng)示例收发字符串void UART0_RcvString(char *string) char c; c=UART0_RcvByte(); while(c!=r) *string+=c; c=UART0_RcvByte(); *string=0;发送(f sn)字符串数据:接收字符串数据:void UART0_SendString(char *string) while(*pt!=0) Uart_SendByte(*pt+);共一百六十四页6.5 DMA组件(z jin)原理及应用 一、DMA概述二、DMA特殊功能寄存器BDMA控制寄存器BDMA初始源

58、/当前(dngqin)源地址寄存器BDMA初始目标/当前目标地址寄存器BMDA初始/当前计数寄存器返回共一百六十四页DMA组件(z jin)之 DMA组件概述1. S3C44B0内部集成了4个通道的DMA控制器。(1)2个通用DMA控制器(ZDMA或GDMA)连接SSB(三星(snxng)系统总线)ZDMA:从存储器到存储器,从存储器到固定目标的I/O设备,以及I/O设备到存储器之间的数据传输。(2)2个桥DMA控制器(BDMA0和BDMA1)连接SSB和SPB(外围总线)间的接口层。BDMA0,BDMA1:用于存储器到I/O或I/O到存储器之间的数据传输。这里的I/设备即外设(SIO,IIS

59、,UART等)。2. DMA的主要特点在两地自动传输数据而无需CPU干涉。ZDMA最重要的特性:On The Fly模式。共一百六十四页DMA组件(z jin)之一 BMDA的控制寄存器BDCON0和BDCON1:位7:65:43:21:0BDCON0BDCON1保留DMA通道的状态STE禁止/使能外部/内部DMA请求QDS软件命令CMD含义无00=准备好01=没有终止计数10=终止计数11=未用00=使能其它=禁止00=无命令01=保留10=保留11=取消DMA操作共一百六十四页DMA组件之二 BMDA的初始(ch sh)源/当前源地址寄存器初始(ch sh)源地址寄存器BDISRC0和BD

60、ISRC1当前源地址寄存器BDCSRC0和BDCSRC1位31:3029:2827:0BDISRC0,BDISRC1BDCSRC0,BDCSRC1DST数据类型DAL载入地址方向ISADDR初始源地址CSADDR当前源地址含义00=字节(8位)01=半字(16位)10=字(32位)11=未用00=未用01=增加10=减少11=固定28位相应地址思考:DMA寻址范围?共一百六十四页DMA组件之三 BMDA的初始源/当前目标(mbio)地址寄存器初始目标地址(dzh)寄存器BDIDES0和BDIDES1当前目标地址寄存器BDCDES0和BDCDES1位31:3029:2827:0BDIDES0,B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论