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

下载本文档

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

文档简介

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

端口组件原理及应用

6.2中断组件原理及应用

36.3嵌入式最小系统36.16.4UART组件原理及应用

DMA组件原理及应用

6.5PWM定时器原理及应用

36.6I2C组件原理及应用

36.76.1嵌入式最小系统简介

一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。返回6.1.1嵌入式最小系统组成嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源)可选,因为许多面向嵌入式领域的微控制器内部集成了程序和数据存储器最小系统框图可选,但是在样品阶段通常都会设计这部分电路基于S3C44B0X的典型嵌入式系统硬件体系结构

6.1.2电源模块的选择及电路设计

电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。如果电源系统处理得好,整个系统的故障往往减少了一大半。考虑因素:输出的电压、电流、功率;输入的电压、电流;安全因素;电池兼容和电磁干扰;体积限制;功耗限制;成本限制。电源模块的选择及电路设计为LCD屏及USB接口等供电电源转换模块为I/O供电S3C44B0X的内核6.1.3时钟电源管理与时钟源的设计

1.时钟源的设计微处理器X1X2CCXtal使用内部振荡器使用外部时钟源微处理器X1X2CClock可以使用稳定的时钟信号源,如有源晶振等。S3C44B0X的时钟电路连接外部晶振

时钟源的选择

2.时钟与电源管理概述1.时钟的作用作为CPU及外设定时与同步信号。

S3C44B0X内部的时钟发生器可以产生CPU和外设所需要的时钟信号。

S3C44B0X的时钟电源管理模块集中管理时钟脉冲的发生与电源。

时钟管理2.时钟发生器的组成外部晶振外部时钟锁相环电路PLL输出频率供给CPU的主频

电源管理S3C44B0X的电源管理方案有五种:正常模式(Normalmode)低速模式(Slowmode)空闲模式(Idlemode)停止模式(Stopmode)LCD的SL空闲模式(SLIdlemode)3.时钟及电源管理的特殊功能寄存器

与时钟发生器及电源管理有关的特殊功能寄存器包括时钟控制寄存器、时钟低速控制寄存器和锁时计数寄存器等。

PLL控制寄存器一、PLLCON:控制PLL分频,决定PLL输出频率。位19:12(8位)11:10(2位)9:4(6位)3:2(2位)1:0(2位)PLLCONMDIV保留PDIV保留SDIV含义主分频控制无意义预分频控制无意义分频后控制初始值0x380x0800二、参数的范围:

MDIV=0~255;PDIV=0~63,SDIV=0~3三、PLL输出频率:fpllo=(m×fin)/(p×2s)

其中:m=MDIV+8,p=PDIV+2,s=SDIV

PLL参数选择原则:(1)fpllo×2s<170MHz且S的值应该尽可能的大(2)1≤fin/p<2(3)20MHz<fpllo<66MHz

PLL值示例1已知:fin=20MHz,MDIV=100,PDIV=14,SDIV=2,求fpllo解:m=MDIV+8=108,p=PDIV+2=16,s=SDIV=2,则:PLL输出频率:fpllo=(m×fin)/(p×2s)=108×20/(16×4)≈33.75MHz

PLL值示例2已知:fin=11.0592MHz,fpllo=50MHz试确定PLLCON的值。解:由原则之一:1≤fin/p<2,知11.0592/2<p≤11.0592,可取值6~11(整数)P=6时,PDIV=p-2=4=000100由原则之二:fpllo×2s<170MHz,即2S<170/50≈3.4∴s=1,2S=2,SDIV=1=0150MHz=m×11.0592MHz/(6×2)m=50×48/11.0592=54.25取54,因此MDIV=m-8=54-8=46=2EH=00101110因此PLLCON=00101110000001000001=0x2E041

作业现场做(1)本题p取7,8,9,10,11PLLCON=?(2)本题fin=33MHz,试求PLLCON的值

时钟控制寄存器一、时钟控制寄存器CLKCON

决定其它各组件的时钟。CLKCON共15位,控制IIS、IIC、ADC、RTC、GPIO、UART、DMA、LCD、PWM等组件的时钟允许。二、时钟控制寄存器的格式

CLKCON各位的含义如表6-75所示。CLKCON位名称位描述初始值IIS14控制ISS时钟0=禁止;1=允许1IIC13控制I2C时钟0=禁止;1=允许1ADC12控制ADC时钟0=禁止;1=允许1RTC11控制RTC时钟0=禁止;1=允许1GPIO10控制GPIO时钟0=禁止;1=允许EINT[7:4]中断1UART19控制UART1时钟0=禁止;1=允许1UART08控制UART0时钟0=禁止;1=允许1BDMA0,17控制BDMA0,1时钟0=禁止;1=允许1LCDC6控制LCD时钟0=禁止;1=允许1SIO5控制SIO时钟0=禁止;1=允许1ZDMA04控制ZDMA时钟0=禁止;1=允许1PWMTIMER3控制PWM定时器时钟0=禁止;1=允许1IDLE2控制进入IDLE模式0=禁止;1=允许进入IDLE模式0SL_IDLE1控制进入SL_IDLE模式0=禁止;1=允许进入SL_IDLE0STOP0控制进入停止模式0=禁止;1=进入停止模式0

时钟低速控制寄存器时钟低速控制寄存器CLKSLOW控制时钟在低速模式下开关PLL、低速分频系数以及低速控制位。位543:0CLKSLOWPLL_OFFSLOW_BITSLOW_VAL含义关闭PLL0=开PLL1=关PLL(仅限SLOW_BIT=1关闭)低速控制位0:fout=fpllo1:fout=fin(2×SLOW_VAL);SLOW_VAL>0fout=fin;SLOW_VAL=0低速分频值4位编码决定SLOW_BIT=1时低速分频的值初始值000x09

锁时计数寄存器锁时计数寄存器CLKTIME存放PLL锁时的计数值。共12位。位11:0位名称LTIMECNT含义PLL锁时计数值初始值0x9应用中时钟的设定

头文件.h中的宏定义#defineFIN8000000#defineMCLK64000000#if(MCLK==64000000)#defineM_DIV(0x38)#defineP_DIV(0x2)#defineS_DIV(0x1)#elif(MCLK==60000000)#defineM_DIV(0x34)#defineP_DIV(0x3)#defineS_DIV(0x1)#endif在启动代码.s文件中对PLLCON值的加载。ldr r0,=PLLCON /*temporarysettingofPLL*/ldr r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV)/*Fin=8MHz,Fout=64MHz*/str r1,[r0]6.1.4复位电路设计与模式选择

1.复位电路的作用负责将处理器初始化为某个确定的状态。2.S3C44B0X的复位

复位引脚为nRESET,至少保持4个MCLK时钟周期的低电平,才能复位。接口设计之

复位电路设计与模式选择(3)OM1=0且OM0=1选择16位数据宽度

大小端格式选择及数据宽度选择连接电路大端格式

小端格式S3C44B0X的数据存储模式有大端和小端的选择,由引脚ENDIAN决定。[OM1:OM0]启动FLASH的数据宽度。6.1.5存储器组件与接口模块

嵌入式系统使用的存储器有多种类型,主要包括Flash、EPROM、SDRAM以及SRAM等,为满足不同类型的存储器对不同速度、不同类型、不同总路线宽度等的存储器的管理和控制,存储控制组件是必不可少的。正是存储控制器为片外存储器访问提供必要的控制信号,管理着片外存储部件。不同存储器组织的

存储器地址线与系统地址总线的连接表6.6S3C44B0X不同存储器组织的存储器地址线与系统地址总线的连接存储器地址线8位存储器组织下的系统地址总线16位存储器组织下的系统地址总线32位存储器组织下的系统地址总线A0A0A1A2A1A1A2A3A2A2A3A4A3A3A4A5::::Am-1Am-1Am-2Am-3存储器组件中的

特殊功能寄存器之一

返回

总线宽度与等待控制寄存器—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=小端模式;1=大端模式存储器组件中的

特殊功能寄存器之二

返回

内存通道控制寄存器—BANKCONi存储器类型16:1514:1312:1110:87:65:4321:0ROM或SRAMMT=00TacsTcosTaccTochTcahTacpPMCFPDRAM或EDODRAMMT=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选择前的保持时钟个数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存储器组件中的

特殊功能寄存器之三

返回

刷新控制寄存器—REFRESH232221:2019:1817:1615:121110:0REFENTREFMDTrpTrcTchr000RefreshCounterREFEN刷新使能:0=禁止刷新,1=刷新

刷新模式:0=CBR(CASbeforeRAS)/自动刷新

1=自刷新(控制信号为电平)

行预充电时间DRAM:00=1.5个时钟01=2.5个时钟10=3.5个时钟11=4.5个时钟SDRAM:00=2个时钟01=3个时钟 10=4个时钟11=不支持SDRAMRC最小时间:00=4个时钟01=5个时钟10=6个时钟11=7个时钟CAS保持时间(DRAM):

00=1个时钟01=2个时钟

10=3个时钟11=4个时钟刷新计数值:刷新周期=(211-刷新计数值+1)/MCLK存储器组件中的

特殊功能寄存器之四

返回

Bank容量寄存器—BANKSIZE在SDRAM访问周期SCLK使能位:0=禁止,1=允许。BK76MAPBANK6/7存储器容量大小:000=32M100=2M101=4M 110=8M432:0SCLKEN0BK76MAP存储器组件中的

特殊功能寄存器之五

返回

SDRAM模式设置寄存器—MRSRB6和MRSRB711:1098:76:432:0保留WBLTMCLBTBLWBL(writeburstlength)写突发脉冲长度:0为推荐值TM(Testmode)测试模式选择:00:由模式寄存器设置01,10,11:保留

CL(CASlatency)CAS发送时钟000=1个时钟 010=2个时钟011=3个时钟 其它=保留BT(Bursttype)突发类型:0:顺序(推荐)1:未用(Burstlength)突发长度:000:1,其余未用存储器接口电路设计及应用

S3C44B0X内部没有存储器,因此必须采用总线方式扩展外部存储器,包括程序存储器和数据存储器,此处主要介绍扩展外部存储器的方法。NORFlashNandFlashFlash典型Flash芯片及与S3C44B0的连接程序存储器采用SST39VF160,它是1M*16位的Flash存储器芯片。

Flash的地址范围为0x00000000~0x001FFFFF

典型SDRAM芯片及与S3C44B0的连接

SDRAMHY57V651620B内部有4个1M×16的存储器阵列,所以容量为211*2*16=222*16=4M*16=8MB。SDRAM必须放到BANK6开始的区域。

SDRAM地址范围为0x0C000000~0x0C7FFFFF。13个存储控制寄存器的配置示例6.1.6JTAG接口电路设计1.

ARM公司提供的标准20脚JTAG仿真调试接口电路,芯片内部有JTAGCORE。2.S3C44B0X通过外部JTAG/ICE端口支持ARM标准的嵌入式在线仿真,共有四个管脚:3.JTAG接口电路

TMS:测试模式选择TDI:测试数据输入TDO:测试数据输出TCK:测试时钟6.2端口组件原理及应用

1.处理器通过I/O口和外围硬件连接;

2.ARM芯片的I/O口通常都是和其他引脚复用的;

3.熟悉I/O口的功能,通过特殊功能寄存器的配置对I/O口进行编程;

4.S3C44B0有71个通用可编程多功能输入/输出引脚,共7类端口,如下所示:返回端口组件之

端口功能

一、双功能端口

A,B、D端口具有两种功能二、三功能端口

C,E、G端口具有三种功能三、四功能端口

F端口具有四种功能返回端口组件之

端口寄存器

每个端口都可以通过软件设置来满足各种各样的系统设置和设计要求。每个端口的功能通常都要在主程序开始前被定义。如果一个引脚的多功能没有使用,那么这个引脚将被设置为I/O端口。在引脚配置以前,需要对引脚的初始化状态进行设定来避免一些问题的出现。GPIOIISDIEINT5GPG5引脚配置引脚功能选择使用示例

S3C44B0微控制器的引脚一般是多个功能复用,但是同一引脚在同一引脚在同一时刻只能使用其中一个功能,这可以通过设置PCONx寄存器来选择。通过PCONG控制引脚功能端口组件之

端口寄存器(P49)

1.端口配置寄存器:PCONA~PCONG

决定A~G各相应端口每个引脚的功能。2.端口数据寄存器:PDATA~PDATG

寄存I/O端口的数据。3.端口上拉寄存器:PUPC~PUPG

决定端口是否内部接通上拉电阻。

0=上拉;1=禁止4.特殊上拉电阻控制寄存器:SPUPR

决定对数据总线引脚是否内部接上拉电阻。

0=上拉;1=禁止返回例题:例1:设置A端口均为输出端口,并设置PGA4,PGA6为1,其他引脚均为0;

答案:PCONA=0x0;PDATA=0x50;例题:例2:设置C端口均为数据总线,并读取数据总线的值,当值为0x80时,让变量i=0,否则i=1;答案:PCONC=0xAAAAAAAA;if(PDATC==0x80)i=0;elsei=1;练习1.设置D端口的PD0~PD3分别为VD0~VD3功能,其他D端口为输出引脚,则PCOND=?2.设置G端口的PG6和PG7分为EINT6和EINT7,PG1为输出端口,输出值为1,其他为输入端口,并且输出端口使能上拉电阻,其他禁止,则PCONG=?,PUPG=?,PDATG=?简易键盘接口应用(查询方式)端口初始化及简单键盘I/O方式处理汇编程序:PCONGequ0x01D20040 ;G口配置寄存器地址 PDATGequ0x01D20044 ;G口数据寄存器地址PUPGequ0x01D20048 ;G口上拉电阻寄存器地址 MOVR0,#0 LDRR1,=PCONG STRHR0,[R1];GPG口为输入端口 MOVR1,PUPG STRBR0,[R1]

;GPG口内部上拉 LDRR0,=PDATG LDRR1,[R0];取键值 ANDR1,#0x0FC;提取GP2~GP7 CMPR1,#0x0FC BEQLNOKEY CMPR1,#0x0F8 BEQLKEY1 CMPR1,#0x0F4 BEQLKEY2 :LNOKEYLKEY1LKEY2 :此处没有消抖处理,如何消抖?键盘接口C语言代码voidPortInit(void){//端口初始化函数,本函数只针对图6.17电路进行了键盘初始化

rPCONG=rPCONG&0xf;//设置PG2~PG7为输入功能rPUDG=rPUDG|0xfC; //因为电路中PG2~PG7端口已接外部上拉,所以内部上拉可不使用}uint8GetKey(void)//读按键程序{KeyValue=0;if((rPDATG&(1<<2))==0)//判断KEY1键是否按下

{longdelay(3);//延时函数,用于键盘消抖

if((rPDATG&(1<<2))==0)//再次判断KEY1键是否按下

KeyValue=1;}elseif((rPDATG&(1<<3))==0)//判断KEY2键是否按下

{longdelay(3);if((rPDATG&(1<<3))==0)KeyValue=2;}。。。。。。

returnKeyValue;}6.3中断组件原理及应用

中断处理过程中断的定义是什么?什么是中断?返回什么是中断服务程序在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupthandler)或中断服务程序(interruptserviceroutine(ISR))。产生中断的每个设备都有相应的中断处理程序。例如,由一个函数专门处理来自系统时钟的中断,而另外一个函数专门处理由键盘产生的中断。S3C44B0X中断控制1.中断模式

FIQ模式和IRQ模式矢量中断模式2.CPSR的F位和I位

1:表示不接受中断请求;

0:表示接受中断请求。

中断源及中断向量一、中断源共有30个中断源,其中:(1)26个中断源是单独的直接接到中断控制器上(2)4个外部中断源(EINT4/EINT5/EINT6/EINT7)是通过逻辑或之后加到中断控制器上的另外两个UART0/1错误中断也是一个中断控制器。二、中断向量各中断源及向量地址如表6.9所示。返回向量中断控制器(VIC)向量中断控制器概述

ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内外部有许多中断源,最多可以有30个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。ARM7TDMIIRQFIQVIC中断请求输入1中断请求输入30...6.3.2中断功能控制寄存器

1.中断控制寄存器

2.中断挂起寄存器

3.中断模式寄存器

4.中断屏蔽寄存器

5.中断服务挂起寄存器

6.外部中断控制寄存器

7.外部中断请求寄存器

中断组件之一

中断控制寄存器返回中断控制寄存器INTCON(4位): 决定IRQ和FIQ中断是否允许。格式:位3210SPUPR保留VIF说明00=矢量中断模式1=非矢量中断模式0=IRQ中断允许1=IRQ中断禁止0=FIQ中断允许1=FIQ中断禁止初始值0111地址:0x01E00000初值:0x07(IRQ和FIQ全部禁止中断)示例:设定S3C44B0处理器的IRQ中断允许,采用矢量中断模式,不允许FIQ中断,则INTCON=?

0x01

中断组件之二

中断挂起寄存器返回INTPND(26位,表6-62),指示中断请求状态位名称位位名称位含义初始值EINT025INT_TIMER1120=无请求;1=有请求全为0EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_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&0x400000)!=0)

中断组件之三

中断模式寄存器返回

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_RTC1INT_TIMER013INT_ADC0示例:设置S3C44B0处理器中的定时器0为快速中断模式,其余全为普通中断,则INTMOD=?0x1<<13

中断组件之四

中断屏蔽寄存器返回中断屏蔽寄存器INTMSK(27位): 决定26个中断源中断是否允许中断响应。各位:(1)25~0位:1=禁止中断0=允许中断(2)26位(全局屏蔽):1=禁止0=允许必须满足:全局允许且各自允许方可进入中断响应!位名称位位名称位含义保留27INT_TIMER013

0=服务允许;1=屏蔽Global26INT_TIMER112EINT025INT_TIMER211EINT124INT_TIMER310EINT223INT_TIMER49EINT322INT_TIMER58EINT4/5/6/721INT_URXD07INT_TICK20INT_URXD16INT_ZDMA019INT_IIC5INT_ZDMA118INT_SIO4INT_BDMA017INT_UTXD13INT_BDMA116INT_UTXD02INT_WDT15INT_RTC1INT_UERR0/114INT_ADC0示例:设置使定时器2中断服务允许,其它中断服务屏蔽,则INTMSK=

1<<11×(1<<26)|(1<<11)×正确答案:~((1<<26)|(1<<11))

中断组件之五

IRQ/FIQ中断服务及清除寄存器返回中断服务挂起寄存器(26位):I_ISPR只读寄存器,反映26个中断源中断是否被响应。各位:1=中断被响应0=中断未被响应中断清除寄存器(26位):I_ISPC和F_ISPC

清除26个中断源中某一中断服务(结束)。各位:1=清除中断请求0=不变

中断组件之六

外部中断控制寄存器返回外部中断控制寄存器EXTINT(12位): 决定8个外部中断源(EINT0-7)的触发方式每个中断源3位:

位位名称描述[30:28]EINT7000=低电平触发001=高电平触发01X=下降沿触发10X=上升沿触发11X=双边沿触发

[26:24]EINT6[22:20]EINT5[18:16]EINT4[14:12]EINT3[10:8]EINT2[6:4]EINT1[2:0]EINT0

中断组件之七

外部中断请求寄存器返回外部中断请求寄存器EXTINTPND(4位):

记录4个外部中断源(EINT4-7)的中断请求状态: 0=无中断申请1=有中断申请位3210EXTINTPNDEXINTPND3EXINTPND2EXINTPND1EXINTPND0含义1=EINT7有中断同时INTPND21=11=EINT6有中断同时INTPND21=11=EINT5有中断同时INTPND21=11=EINT4有中断同时INTPND21=1示例:如何判断外部中断7有中断产生?

if((EXTINTPND&0x8))!=0S3C44B0X中断控制器应用①②④⑤⑥③Eint4567IsrpISR_EINT4567Eint4567Isr⑤LDRPC,[PC,#-0xff0]0x000000000xFFFFFFFF用户程序中断服务程序异常向量表IRQ中断的设计实例实例:设置外部中断4产生向量IRQ中断后,执行中断服务程序“Eint4567Isr()”。...rPCONG=0xffff;rINTMOD=0x0; rINTCON=0x1;rINTMSK=~(1<<26|1<<21);pISR_EINT4567=(int)Eint4567Isr;rEXTINT=rEXTINT|0x22220020;rI_ISPC|=BIT_EINT4567;rEXTINTPND=0xf;...C代码:1.设置引脚连接模块,设置端口为外部中断功能;步骤:2.设置所有中断为IRQ中断并允许IRQ中断;3.打开全局中断使能和外部中断4567使能;4.将外部中断4的中断服务程序写入对应向量地址寄存器中;6.清除外部中断4的标志(1)(2)(3)(4)(6)(6)(2)5.设置中断触发方式(5)0x000000000xFFFFFFFF用户程序中断服务程序异常向量表1.正在执行用户程序;①2.外部中断4发生中断;②3.VIC硬件将中断服务程序地址装入pISR_EINT4567寄存器;④4.程序跳转至异常向量表中IRQ入口0x0018处;5.执行指令跳转至pISR_EINT4567寄存器中的中断服务地址;⑤⑥6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。图示IRQ中断的发生过程③Eint4567Isr???pISR_EINT4567Eint4567Isr⑤LDRPC,[PC,#-0xff0]S3C44B0X中断控制器应用

有一嵌入式系统采用S3C44B0X处理器,系统的外部中断连接如下图所示,请针对此图,要求KEY1键按下,二极管LED1点亮(函数LedOn()已知);KEY2键按下,二极管LED1熄灭(函数LedOff()已知);KEY3键按下LED1闪烁(LedShine()已知),写出外部中断的相关程序片段。

S3C44B0X中断控制器应用编程外部中断初始化函数#defineBIT_EINT1 (0x1<<24)#defineBIT_EINT4567(0x1<<21)#defineBIT_GLOBAL(0x1<<26)voidinit_Eint(void){rINTCON=0x1;//使能IRQ中断rINTMOD=0x0;//选择IRQ中断模式

rINTMSK=~(BIT_GLOBAL|BIT_EINT4567|BIT_EINT1;

pISR_EINT4567=(int)Eint4567Isr;pISR_EINT1=(int)Eint1Isr;

rPCONG=rPCONG&(0x3<<2)&(0xf<<8);rPUPG=0x0;

rEXTINT=rEXTINT|(0x4<<4)|(0x2<<16)|(0x2<<20);rI_ISPC=rI_ISPC|BIT_EINT4567|BIT_EINT1;rEXTINTPND&=0x3;}S3C44B0X中断控制器应用编程中断服务程序voidEint1Isr(void)//外部中断1服务程序{ rI_ISPC&=BIT_EINT1; //清除挂起位LedShine();//LED1闪烁}voidEint1Isr(void)//外部中断4/5/6/7服务程序{unsignedcharwhich_int;which_int=rEXTINTPND;rEXTINTPND=0xf; //清除EXTINTPND寄存器

rI_ISPC&=BIT_EINT4567; //清除挂起位if((which_int&0x1)!=0)//外部中断4产生中断

LedOn();if((which_int&0x2)!=0)//外部中断5产生中断

LedOff();}6.4UART组件原理及应用 1.定义:UART(UniversalAsynchronousReceiver/Transmitter)通用异步收发器,用于控制计算机与串行设备的接口;2.S3C44B0X的UART单元提供两个独立的异步串行I/O口,每个通信口均可工作于中断模式;3.最高传输速率115.2kbps;4.特性:可编程波特率,红外发送/接收、一个开始位、一个或两个停止位、5/6/7/8位的数据宽度和奇偶校验;5.组成:波特率发生器、接收器、发送器和控制单元

返回UART的硬件组成1.数据传输2.数据接收3.中断请求的产生4.波特率的产生5.红外模式操作同步和异步简单讲:

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。异步传输

异步传输是以字符为传输单位,每个字符都要附加1位起始位和1位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。一个字符占用5~8位,具体取决于数据所采用的字符集。此外,还要附加1位奇偶校验位;发送端与接收端除了采用相同的数据格式,还应当采用相同的传输速率。典型的速率有:9600b/s、56kb/s、115.2kb/s等。

同步传输同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列(如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。

使用UART0通信需要两个引脚,分别为:引脚名称类型描述RxD0输入串行输入,接收数据TxD0输出串行输出,发送数据使用UART通信S3C44B0的I/O电压为3.3V(可承受5V),连接时须注意电平的匹配。与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。S3C44B0PC机串口232电平转换TxD0RxD0TxD0RxD0S3C44B0其它通信设备TxD0RxD0TxD0RxD0

UART组件

UART的特殊功能寄存器UART线控制寄存器UART控制寄存器发送/接收状态寄存器UART发送/接收(缓冲区)寄存器UART波特率除数寄存器FIFO控制寄存器Modem控制寄存器UART错误状态寄存器FIFO状态寄存器Modem状态寄存器UART组件之一

UART线控制寄存器ULCON0和ULCON1:P11D0D1D2D3D4D5D6D70位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数停止位(1~2位)数据(5~8位)奇偶校验位(可选)起始位ULCON寄存器:

ULCON控制发送和接收数据帧的格式。TXDUART组件之一

UART线控制寄存器位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数数据位数:这些位控制数据长度。

00:5位字符长度; 01:6位字符长度;

10:7位字符长度; 11:8位字符长度;ULCON0和ULCON1:UART组件之一

UART线控制寄存器位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数ULCON0和ULCON1:停止位:控制每帧数据包含的停止位个数。

0:1位停止位; 1:2位停止位;UART组件之一

UART线控制寄存器位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数ULCON0和ULCON1:校验位:控制校验的使能和选择。

0XX=无校验100=奇校验

101=偶校验110=校验位强置1111=校验位强清0

UART组件之一

UART线控制寄存器位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数红外模式:是否选择红外模式。

0:正常模式1:红外模式ULCON0和ULCON1:示例设置UART1为数据传输模式为7位数据位,1位停止位,偶校验,正常模式,请问对哪个寄存器设置?值为多少?位6[5:3]2[1:0]功能红外模式奇偶校验停止位数据位数1001010ULCON1=0x2A

UART组件之二

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=0x245,表示什么意思?

UART组件之三

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组件之四

Modem控制寄存器UMCON0和UMCON1:位7:543:10UMCON0UMCON1保留000自动流控制AFC保留000请求发送含义0=AFC禁止1=AFC允许若AFC允许该位不起作用若AFC禁止,则0=高电平(不激活nRTS)1=低电平(激活nRTS)

UART组件之五

发送/接收(缓冲区)寄存器发送寄存器UTXH0和UTXH1接收寄存器URXH0和URXH1正是通过发送寄存器才将数据从UART0或UART1的TXD0或TXD1脚发送出去。外部经RXD0或RXD1引脚送来的串行数据经移位后存在URXH0或URXH1中。示例:从UART1口发送数据0x83,应如何发送?

UART组件之六

UART错误状态寄存器UERSTAT0和UERSTAT1:返回位3210UERSTAT0UERSTAT1间隔中断数据帧错误奇偶错误溢出错误含义0=未收到中止信号1=收到中止信号0=接收无帧错误1=接收数据帧错0=无奇偶校验错1=奇偶校验出错0=无溢出错1=溢出错误

UART组件之七

FIFO状态寄存器UFSTAT0和UFSTAT1:返回位15:10987:43:0UFSTAT0UFSTAT1保留发送FIFO满接收FIFO满发送FIFO计数器接收FIFO计数器含义无含义0=发送FIFO数据个数不超过15字节1=发送FIFO满0=接收FIFO数据个数不超过15字节1=接收FIFO满编码表示发送FIFO数据数量(字节数)编码表示接收FIFO数据数量(字节数)

UART组件之八

Modem状态寄存器UMSTAT0和UMSTAT1:返回位43:10UMSTAT0UMSTAT1△CTS保留CTS含义0=CTS无变化1=CTS有变化无含义0=CTS未激活(nCTS引脚为高)1=CTS已激活(nCTS引脚为低)

UART组件之九

发送/接收状态寄存器UTRSTAT0和UTRSTAT1:位210UTRSTAT0UTRSTAT1发送移位寄存器状态发送缓冲器状态接收缓冲器数据状态含义0=发送寄存器非空1=发送寄存器为空0=缓冲寄存器非空1=缓冲寄存器为空0=完全为空,无数据1=接收缓冲寄存器中有数据示例:用何语句等待发送缓冲器为空?

UART组件之十

UART波特率除数寄存器UBRDIV0和UBRDIV1:存放波特率因子除数寄存器的值与波特率的关系:UBRDIVn=round_off(MCLK/(波特率×16))-1实用公式:UBRDIVn=INT(MCLK/(波特率×16)+0.5)-1

波特率除数计算示例题:某系统采用S3C44B0要求UART1的波特率为115200bps,主时钟50MH时钟,求UBRDIV1的值答案:UBRDIV1=26UART0应用示例——操作流程设置引脚连接模块将对应IO连接到UART0设置串口工作模式设置串口波特率发送或接收数据检查串口状态字或等待串口中断UART0应用示例——初始化代码UART初始化代码:voidUART0_Init(intmclk,intbaud){if(mclk==0)mclk=MCLK;rPCONE=0x28;rULCON0=0x3;rUCON0=0x245;rUBRDIV0=((int)(mclk/16./baud+0.5)-1);

}mclk为CPU主频,baud是波特率设置线控制寄存器设置控制寄存器,接收和发送根据波特率计算分频值设置引脚连接模块例如:设置UART0波特率为9600bps,则调用函数为,

UART0_Init(0,9600);UART0应用示例——初始化代码UART初始化代码:voidUART0_Init(intmclk,intbaud){if(mclk==0)mclk=MCLK;rPCONE=0x28;rULCON0=0x3;rUCON0=0x245;rUBRDIV0=((int)(mclk/16./baud+0.5)-1);

}设置引脚连接模块将对应IO连接到UART0设置串口工作模式设置串口波特率发送或接收数据检查串口状态字或等待串口中断UART0应用示例——收发数据voidUART0_SendByte(uint8data){rUTXH0=data;while((rUTRSTAT0&0x2)==0);}uint8UART0_RcvByte(void){uint8rcv_data;while((rUTRSTAT0&0x01)==0);rcv_data=

rURXH0;return(rcv_data);}查询方式发送一字节数据:查询方式接收一字节数据:将要发送的一字节数据写入UTXH0等待数据发送完毕等待数据到达从URXH0中读出接收的数据返回接收的数据UART0应用示例——收发字符串voidUART0_RcvString(char*string){charc;c=UART0_RcvByte();while((c!='\r'){*string++=c;c=UART0_RcvByte();}*string='\0';}发送字符串数据:接收字符串数据:voidUART0_SendString(char*string){while(*pt!='\0')Uart_SendByte(*pt++);}6.5DMA组件原理及应用

一、DMA概述二、DMA特殊功能寄存器BDMA控制寄存器BDMA初始源/当前源地址寄存器BDMA初始目标/当前目标地址寄存器BMDA初始/当前计数寄存器返回

DMA组件之

DMA组件概述1.S3C44B0内部集成了4个通道的DMA控制器。(1)2个通用DMA控制器(ZDMA或GDMA)

连接SSB(三星系统总线)

ZDMA:从存储器到存储器,从存储器到固定目标的I/O设备,以及I/O设备到存储器之间的数据传输。(2)2个桥DMA控制器(BDMA0和BDMA1)

连接SSB和SPB(外围总线)间的接口层。BDMA0,BDMA1:用于存储器到I/O或I/O到存储器之间的数据传输。这里的I/设备即外设(SIO,IIS,UART等)。2.DMA的主要特点

在两地自动传输数据而无需CPU干涉。

ZDMA最重要的特性:OnTheFly模式。

DMA组件之一

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的初始源

/当前源地址寄存器初始源地址寄存器BDISRC0和BDISRC1当前源地址寄存器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的初始源

/当前目标地址寄存器初始目标地址寄存器BDIDES0和BDIDES1当前目标地址寄存器BDCDES0和BDCDES1位31:3029:2827:0BDIDES0,BDIDES1BDCDES0,BDCDES1TMD传输方向模式DAS地址方向IDADDR初始目标地址CDADDR当前目标地址含义00=保留01=M→IO(从外部存储器到内部外设)10=IO→M(从内部外设到外部存储器)11=IO→IO(从内部外设到外部外设)00=未用01=增加10=减少11=固定28位相应地址

DMA组件之四

BMDA的初始

/当前计数器初始目标地址寄存器BDICNT0和BDICNT1当前目标地址寄存器BDCCNT0和BDCCNT1位31:3029:2827:2625:2423:22212019:0BDICNT0BDICNT1BDCCNT0BDCCNT1QSCDMA请求源保留保留保留INS中断模式设置AR当DMA计到0时自动加载和自动开始ENDMA硬件使能ICNT/CCNTBDMAn的传输计数器含义00=保留01=IIS10=UART11=SIO00握手模式01单元传输模式00不支持on-the-fly模式00=查询模式01=未用10=传输时产生中断11=终止计数时产生中断0=禁止1=允许0=禁止1=允许以字节为单位时,每次减1;以半字为单位时,每次减2以字为单位时,每次减46.6PWM定时器原理及应用

一、PWM概述二、PWM特殊功能寄存器定时器配置寄存器0定时器配置寄存器1定时控制寄存器定时器观察寄存器6.6.1PWM功能控制

返回

PWM组件之

PWM概述及组成PWM(PulseWidthModulation):脉冲宽度调制器。

S3C44B0X有6个16位定时器,每个定时器可以按照中断模式或DMA模式工作。定时器0,1,2,3和4具有PWM功能并具有输出功能。定时器5是一个内部定时器不具有对外输出口线。2.PWM组成如图所示。

PWM组件之一

定时器配置寄存器0TCFG0:决定T0~T5的预分频系数等。位31:2423:1615:87:0TCFG0DZL死区长度PRC2预分频系数2PRC1预分频系数1PRC0预分频系数0含义8位确定死区长度8位决定定时器4,5的预分频器的值8位决定定时器3,2的预分频器的值8位决定定时器1,0的预分频器的值死区:对于开关设备,一个开与另一个关之间的时间间隔。在死区中,不允许同时开。

PWM组件之二

定时器配置寄存器1TCFG1:决定T0~T5的DMA请求及预分频系数。位27:2423:2019:1615:1211:87:43:0TCFG1DMAMODEDMA请求通道MUX5选择定时器5的MUX输入MUX4选择定时器4的MUX输入MUX3选择定时器3的MUX输入MUX2选择定时器2的MUX输入MUX1选择定时器1的MUX输入MUX0选择定时器0的MUX输入含义0000=未选择0001=定时器00010=定时器10011=定时器20100=定时器30101=定时器40110=定时器50111=保留0000=1/20001=1/40010=1/80011=1/1601XX=EXTCLK0000=1/20001=1/40010=1/80011=1/1601XX=TCLK0000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/32

PWM组件之三

定时器控制寄存器一、TCON功能:控制T0~T5的具体工作。包括:是否自动重装值、启动和停止、反转输出、死区使能等。二、各位含义如表6.29所示。

PWM组件之四定时器计数缓冲寄存器

与定时器比较寄存器一、定时器计数缓冲寄存器:TCNTB0为T0的定时计数缓冲寄存器TCNTB1为T1的定时计数缓冲寄存器TCNTB2为T2的定时计数缓冲寄存器TCNTB3为T3的定时计数缓冲寄存器TCNTB4为T4的定时计数缓冲寄存器TCNTB5为T5的定时计数缓冲寄存器存放T0~T5的计数值。二、定时器比较寄存器TCMPB0为T0的定时比较寄存器TCMPB1为T1的定时比较寄存器TCMPB2为T2的定时比较寄存器TCMPB3为T3的定时比较寄存器TCMPB4为T4的定时比较寄存器TCMPB5为T5的定时比较寄存器存入T0~T5的计数比较值。

PWM组件之五

定时器观察寄存器定时器观察寄存器:TCNTO0为T0的观察寄存器TCNTO1为T1的观察寄存器TCNTO2为T2的观察寄存器TCNTO3为T3的观察寄存器TCNTO4为T4的观察寄存器TCNTO5为T5的观察寄存器存放T0~T5的观察值。6.6.2PWM定时器的应用

1.PWM的作用

利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。基于PWM的灯控原理及波形图

2.PWM定时器产生方波的应用执行PWM操作之前,微处理器要求在软件中完成以下工作:(1)设置提供调制方波的片上定时器/计数器的周期(2)在PWM控制寄存器中设置接通时间(3)启动定时器通过PWM控制器控制PWM输出波形即可方便地控制蜂鸣器的发声,

//输出脉冲:频率从4000HZ到14000HZ,使用2/3的占空比for(freq=4000;freq<14000;freq+=1000) { div=(MCLK/256/4)/freq;

rTCON=0x0; rTCNTB0=div; rTCMPB0=(2*div)/3;

rTCON=0xa; //手工装载定时器的计数值

rTCON=0x9; //启动定时器

for(index=0;index<100000;index++); rTCON=0x0; //延时并停止定时器}3.PWM定时器的普通定时功能应用定时中断初始化函数#defineBIT_TIMER0(0x1<<13)voidtimer_init(void){

rINTMOD=0x0;rINTCON=0x1;rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);pISR_TIMER0=(int)timer_Int;rTCFG0=255;rTCFG1=0x1;rTCNTB0=65535;rTCMPB0=12800;rTCON=0x19;}中断服务程序voidtimer_Int(void){Uart_Printf(“Timeison!");rI_ISPC=BIT_TIMER0;}关闭定时voidtimer_close(void){pISR_TIMER0=NULL;rINTMSK=rINTMSK|BIT_TIMER0;rTCON=0x0;}6.7I2C组件原理及应用

一、I2C总线控制器的组成二、I2C总线接口的操作模式三、I2C总线的特殊功能寄存器I2C总线控制寄存器I2C总线状态寄存器I2C总线数据(移位)和地址寄存器6.7.1I2C总线控制器原理返回

I2C总线组件之

I2C总线接口工作模式S3C44B0XI2C总线接口有4种操作模式:主传送模式、主接收模式、从传送模式以及从接收模式。I2C总线操作时序1010a10a9a8R/只写:011100SA0R/(SA0为该器件的引脚)只写:011100SA0R/(SA0为该器件的引脚)从地址:070H读:0A3H写:0A2H

1010A2A1A0R/1010A2A1A0R/1010A2A1A0R/CAT1161/2内嵌I2C总线、E2PROM、RESET、WDT功能的电源监控器件PCF8576通用低复用率LCD驱动器PCF8562带32×4位RAM低复用率的通用LCD驱动器ZLG7290键盘及LED驱动器PCF8563实时时钟/日历时钟AT24C01-04AT24C16~64FM24CXXX128BE2RPM~512BE2RPM2KBE2RPM~8KBBE2RPM铁电存储器FM系列器件地址及寻址字节型号种类常见I2C总线的器件

I2C总线特殊功能寄存器之一

I2C总线控制寄存器I2C总线控制寄存器IICCON:位76543:0IICCONACKEN应答使能TXCLKSELTX时钟源选择

温馨提示

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

评论

0/150

提交评论