1、2第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计主要内容S3C2410简介简介 I/O口口中断中断DMAA/D接口接口UART触摸屏触摸屏LCDUSB设备的数据收发设备的数据收发音频录放音频录放键盘和键盘和LED控制控制3第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.1 S3C2410 5.1 S3C2410简介简介 S3C2410 S3C2410是是SamsungSamsung公司公司推出的推出的16/3216/32位位RISCRISC处理器,主要处理器,主要面向手持设备以及高性价比、低功耗的应用。面向手持设备以及高性
2、价比、低功耗的应用。CPUCPU内核采用内核采用的是的是ARMARM公司设计的公司设计的16/3216/32位位ARM920T RISCARM920T RISC处理器处理器。S3C2410AS3C2410A提供一组完整的系统外围设备:提供一组完整的系统外围设备:2 2个个USBUSB主设备接口,主设备接口,1 1个个USBUSB从设备接口;从设备接口;4 4通道通道PWMPWM定时器和定时器和1 1通道内部定时器;通道内部定时器;看门狗定时器;看门狗定时器;117117位通用位通用I/OI/O口和口和2424通道外部中断源;通道外部中断源;电源控制模式包括:正常、慢速、空闲和掉电源控制模式包括
3、:正常、慢速、空闲和掉电四种模式;电四种模式;8 8通道通道1010位位ADCADC和触摸屏接口;和触摸屏接口;具有日历功能的具有日历功能的RTCRTC;使用使用PLLPLL的片上时钟发生器。的片上时钟发生器。VVVV外部外部I/OI/O供电;供电;具有具有1616KBKB的的ICacheICache和和1616KBKB的的DCacheDCache以及以及MMUMMU;外部存储器控制器;外部存储器控制器;LCDLCD控制器提供控制器提供1 1通道通道LCDLCD专用专用DMADMA;4 4通道通道DMADMA并有外部请求引脚;并有外部请求引脚;3 3通道通道UARTUART和和2 2通道通道S
4、PISPI;1 1通道多主机通道多主机IICIIC总线和总线和1 1通道通道IISIIS总线控制器;总线控制器;SDMMCSDMMC卡协议卡协议2.112.11兼容版;兼容版;4第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计S3C2410S3C2410结构框图结构框图 5第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5 5.1.1 1.1 S3C2410AS3C2410A的特点的特点 体系结构体系结构系统管理器系统管理器 NAND FlashNAND Flash启动装载器启动装载器 CacheCache存储器存储器 时钟和电
5、源管理时钟和电源管理 中断控制器中断控制器具有脉冲带宽调制(具有脉冲带宽调制(PWMPWM)的定的定时器时器 RTCRTC(实时时钟)实时时钟)通用通用I/OI/O口口 UART UART DMADMA控制器控制器 A/DA/D转换和触摸屏接口转换和触摸屏接口 LCDLCD控制器控制器STN LCDSTN LCD显示特性显示特性 TFTTFT彩色显示特性彩色显示特性 看门狗定时器看门狗定时器 IICIIC总线接口总线接口 IISIIS总线接口总线接口 USBUSB主设备主设备 USBUSB从设备从设备 SDSD主机接口主机接口 SPISPI接口接口 工作电压工作电压 封装封装 6第第5 5章章
6、 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5 5.1.2 1.2 存储器控制器存储器控制器 S3C2410A S3C2410A的存储器控制器提供访问外部存储器所需的存储器控制器提供访问外部存储器所需要的存储器控制信号。要的存储器控制信号。支持小支持小/大端(通过软件选择)大端(通过软件选择)地址空间:每地址空间:每bankbank有有128128MM字节(总共有字节(总共有8 8个个banksbanks,共共1 1G G字节字节)除除bank0bank0(只能是只能是16/3216/32位宽)之外,其他位宽)之外,其他bankbank都具有可编程的都具有可编程的访问大
7、小(可以是访问大小(可以是8/16/328/16/32位宽)位宽)总共有总共有8 8个存储器个存储器banksbanks(bank0bank7bank0bank7)其中其中6 6个个banksbanks用于用于ROMROM,SRAMSRAM等等剩下剩下2 2个个banksbanks用于用于ROMROM,SRAMSRAM,SDRAMSDRAM等等 7 7个固定的存储器个固定的存储器bankbank(bank0bank6bank0bank6)起始地址起始地址 最后一个最后一个bankbank(bank7bank7)的起始地址是可调整的的起始地址是可调整的 最后两个最后两个bankbank(bank
8、6bank7bank6bank7)的大小是可编程的的大小是可编程的 所有存储器所有存储器bankbank的访问周期都是可编程的的访问周期都是可编程的 总线访问周期可以通过插入外部等待来延长总线访问周期可以通过插入外部等待来延长 支持支持SDRAMSDRAM的自刷新和掉电模式的自刷新和掉电模式 特性特性 7第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计存储器映射存储器映射 8第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5 5.1.3 1.3 NAND FlashNAND Flash控制器控制器 特性特性 NAND Flash
9、NAND Flash模式:支持读模式:支持读/擦除擦除/编程编程NAND FlashNAND Flash存储器存储器。自动启动模式:复位后,启动代码被传送到自动启动模式:复位后,启动代码被传送到SteppingstoneSteppingstone中。传送完毕后,启动代码在中。传送完毕后,启动代码在SteppingstoneSteppingstone中执行。中执行。具备硬件具备硬件ECCECC(校验码,校验码,Error Correction CodeError Correction Code)生成模生成模块(硬件生成校验码,通过软件校验)。块(硬件生成校验码,通过软件校验)。NAND Flas
10、hNAND Flash启动以后,启动以后,4 4KBKB的内部的内部SRAMSRAM缓冲器缓冲器SteppingstoneSteppingstone可以作为其他用途使用。可以作为其他用途使用。NAND FlashNAND Flash控制器不能通过控制器不能通过DMADMA访问,可以使用访问,可以使用LDM/STMLDM/STM指令来代替指令来代替DMADMA操作。操作。9第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v NAND Flash NAND Flash控制器的结构框图控制器的结构框图 10第第5 5章章 基于基于S3C2410S3C2410的系统硬件
11、设计的系统硬件设计v NAND Flash NAND Flash的工作方式的工作方式 11第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v NAND Flash NAND Flash存储器的时序存储器的时序 12第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5 5.1.4 1.4 时钟和电源管理时钟和电源管理 时钟和电源管理模块包括三部分:时钟和电源管理模块包括三部分:时钟控制:时钟控制:CPUCPU所需的所需的FCLKFCLK时钟信号、时钟信号、AHBAHB总线外围设备所需总线外围设备所需的的HCLKHCLK时钟信号,以及
12、时钟信号,以及APBAPB总线外围设备所需的总线外围设备所需的PCLKPCLK时钟信号时钟信号 。USBUSB控制控制电源控制电源控制正常模式正常模式慢速模式慢速模式空闲模式空闲模式掉电模式掉电模式13第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计主要内容S3C2410简介简介 I/O口口中断中断DMAA/D接口接口UART触摸屏触摸屏LCDUSB设备的数据收发设备的数据收发音频录放音频录放键盘和键盘和LED控制控制14第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.2.1 5.2.1 S3C2410AS3C2410A的的
13、I/OI/O口工作原理口工作原理 S3C2410AS3C2410A共有共有117117个多功能复用输入输出口(个多功能复用输入输出口(I/OI/O口),分为口),分为8 8组组PORT APORT APORT HPORT H。PORT APORT A除了作为功能口外,它只作为输出口使用;除了作为功能口外,它只作为输出口使用;其余的其余的PORT BPORT BPORT HPORT H都可以作为输入输出口使用。都可以作为输入输出口使用。8 8组组I/OI/O口按照口按照其位数的不同,可分为:其位数的不同,可分为:1 1个个2323位的输出口(位的输出口(PORT APORT A)2 2个个111
14、1位的位的I/OI/O口(口(PORT B PORT B 和和PORT HPORT H)4 4个个1616位的位的I/OI/O口(口(PORT CPORT C、PORT DPORT D、PORT EPORT E、PORT GPORT G)1 1个个8 8位的位的I/OI/O口(口(PORT FPORT F)与配置与配置I/OI/O口相关的寄存器包括:口相关的寄存器包括:端口控制寄存器(端口控制寄存器(GPACONGPHCONGPACONGPHCON)端口数据寄存器(端口数据寄存器(GPADATGPHDATGPADATGPHDAT)端口上拉寄存器(端口上拉寄存器(GPBUPGPHUPGPBUPG
15、PHUP)杂项控制寄存器杂项控制寄存器外部中断控制寄存器(外部中断控制寄存器(EXTINTNEXTINTN)15第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.2.2 5.2.2 I/OI/O口编程实例口编程实例 举例举例:通过对通过对G G口的操作控制口的操作控制CPUCPU板左下角的板左下角的LED1LED1和和LED2LED2实现轮流闪烁。实现轮流闪烁。void Main(void)void Main(void)int flag,i;int flag,i;Target_Init();/Target_Init();/进行硬件初始化操作,包括对进行硬件初
16、始化操作,包括对I/OI/O口的初始化操作口的初始化操作 for(;)for(;)if(flag=0)if(flag=0)for(i=0;i1000000;i+);/for(i=0;i1000000;i+);/延时延时 rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;/rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;/配置第配置第8 8、第、第9 9位为输出引脚位为输出引脚 rGPGDAT=rGPGDAT&0 xeff|0 x200;rGPGDAT=rGPGDAT&0 xeff|0 x200;/第第8 8位输出为低电平位输出为低电
17、平 /第第9 9位输出高电平位输出高电平 for(i=0;i10000000;i+);/for(i=0;i10000000;i+);/延时延时 flag=1;flag=1;else else for(i=0;i1000000;i+);/for(i=0;i1000000;i+);/延时延时 rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;/配置第配置第8 8、第、第9 9位为输出引脚位为输出引脚 rGPGDAT=rGPGDAT&0 xdff|0 x100;rGPGDAT=rGPGDAT
18、&0 xdff|0 x100;/第第8 8位输出为高电平位输出为高电平 /第第9 9位输出低电平位输出低电平for(i=0;i1000000;i+);/for(i=0;i1000000;i+);/延时延时flag=0;flag=0;16第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计主要内容S3C2410简介简介 I/O口口中断中断DMAA/D接口接口UART触摸屏触摸屏LCDUSB设备的数据收发设备的数据收发音频录放音频录放键盘和键盘和LED控制控制17第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.3.1 5.3.1 A
19、RMARM的中断原理的中断原理 ARMARM系统包括两类中断:一是系统包括两类中断:一是IRQIRQ中断中断,一是,一是FIQFIQ中断中断。处理中断的步骤如下:处理中断的步骤如下:(1)(1)保存现场。保存当前的保存现场。保存当前的PCPC值到值到R14R14,保存当前的程序运行状态到保存当前的程序运行状态到SPSRSPSR。(2)(2)模式切换。根据发生的中断类型,进入模式切换。根据发生的中断类型,进入IRQIRQ模式或模式或FIQFIQ模式。模式。(3)(3)获取中断源。以异常向量表保存在低地址处为例,若是获取中断源。以异常向量表保存在低地址处为例,若是IRQIRQ中断,中断,则则PCP
20、C指针跳到指针跳到0 0 x18x18处;若是处;若是FIQFIQ中断,则跳到中断,则跳到0 0 x1Cx1C处。处。IRQIRQ或或FIQFIQ的异常的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来向量地址处一般保存的是中断服务子程序的地址,所以接下来PCPC指针指针跳入中断服务子程序处理中断。跳入中断服务子程序处理中断。(4)(4)中断处理。为各种中断定义不同的优先级别,并为每一个中断设中断处理。为各种中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识
21、别到底哪一个中断发生了。进而调用相应的函数断标志位的状态来识别到底哪一个中断发生了。进而调用相应的函数进行中断处理。进行中断处理。(5)(5)中断返回,恢复现场。当完成中断服务子程序后,将中断返回,恢复现场。当完成中断服务子程序后,将SPSRSPSR中保存中保存的程序运行状态恢复到的程序运行状态恢复到CPSRCPSR中,中,R14R14中保存的被中断程序的地址恢复到中保存的被中断程序的地址恢复到PCPC中,进而继续执行被中断的程序。中,进而继续执行被中断的程序。18第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.3.2 5.3.2 S3C2410AS3C2
22、410A的中断控制器的中断控制器 中断控制器使用的寄存器中断控制器使用的寄存器19第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v 优先级生成模块优先级生成模块 20第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.3.3 5.3.3 中断编程实例中断编程实例举例举例:通过定时器通过定时器1 1中断控制中断控制CPUCPU板左下角的板左下角的LED1LED1和和LED2LED2实现轮流闪烁。实现轮流闪烁。1 1对定时器对定时器1 1初始化,并设定定时器的中断时间为初始化,并设定定时器的中断时间为1 1秒。秒。void Tim
23、er1_init(void)void Timer1_init(void)rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;rGPGCON=rGPGCON&0 xfff0ffff|0 x00050000;/配置配置GPGGPG口为输出口口为输出口 rGPGDAT=rGPGDAT|0 x300;rGPGDAT=rGPGDAT|0 x300;rTCFG0 =255;rTCFG0 =255;rTCFG1 =0 4;rTCFG1 =0 4;/在在pclk=50MHZpclk=50MHZ下,下,1 1秒钟的记数值秒钟的记数值rTCNTB1=50000000/4/256=488
24、28;rTCNTB1=50000000/4/256=48828;rTCNTB1=48828;rTCNTB1=48828;rTCMPB1=0 x00;rTCMPB1=0 x00;rTCON =(1 11)|(1 9)|(0 8);rTCON =(1 11)|(1 9)|(0 8);/禁用定时器禁用定时器1 1,手动加载,手动加载 rTCON =(1 11)|(0 9)|(1 8);rTCON =(1 11)|(0 9)|(1 8);/启动定时器启动定时器1 1,自动装载,自动装载 21第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计举例举例:通过定时器通过定时器1
25、 1中断控制中断控制CPUCPU板左下角的板左下角的LED1LED1和和LED2LED2实现轮流闪烁。实现轮流闪烁。2 2为了使为了使CPUCPU响应中断,在中断服务子程序执行之前,必须打开响应中断,在中断服务子程序执行之前,必须打开ARM920TARM920T的的CPSRCPSR中的中的I I位,以及相应的中断屏蔽寄存器中的位。位,以及相应的中断屏蔽寄存器中的位。void Timer1INT_Init(void)void Timer1INT_Init(void)/定时器接口使能定时器接口使能 if(rINTPND&BIT_TIMER1)if(rINTPND&BIT_TIMER1)rSRCPN
26、D|=BIT_TIMER1;rSRCPND|=BIT_TIMER1;/写入定时器写入定时器1 1中断服务子程序的入口地址中断服务子程序的入口地址 pISR_TIMER1=(int)Timer1_ISR;pISR_TIMER1=(int)Timer1_ISR;rINTMSK&=(BIT_TIMER1);rINTMSK&=(BIT_TIMER1);/开中断;开中断;3 3等待定时器中断,通过一个死循环如等待定时器中断,通过一个死循环如“while(1)while(1);”实现等待过程。实现等待过程。22第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计举例举例:通过定
27、时器通过定时器1 1中断控制中断控制CPUCPU板左下角的板左下角的LED1LED1和和LED2LED2实现轮流闪烁。实现轮流闪烁。4 4根据设置的定时时间,将产生定时器中断。定时器中断发生后,首先进行根据设置的定时时间,将产生定时器中断。定时器中断发生后,首先进行现场保护,接下来转入中断的入口代码处执行,该部分代码通常使用汇编语言书现场保护,接下来转入中断的入口代码处执行,该部分代码通常使用汇编语言书写。在执行中断服务程序之前,首先要确保写。在执行中断服务程序之前,首先要确保HandleIRQHandleIRQ地址处保存中断分发程序地址处保存中断分发程序IsrIRQIsrIRQ的入口地址。的
28、入口地址。ldrldrr0,=HandleIRQ r0,=HandleIRQ ldr ldrr1,=IsrIRQ r1,=IsrIRQ strstrr1,r0r1,r0接下来将执行接下来将执行IsrIRQIsrIRQ中断分发程序,具体代码如下:中断分发程序,具体代码如下:IsrIRQ IsrIRQ subsubsp,sp,#4 sp,sp,#4 ;为保存为保存PCPC预留堆栈空间预留堆栈空间stmfdstmfdsp!,r8-r9 sp!,r8-r9 ldrldrr9,=INTOFFSET r9,=INTOFFSET ldrldrr9,r9r9,r9 ;加载加载INTOFFSETINTOFFSE
29、T寄存器值到寄存器值到r9r9ldrldrr8,=HandleEINT0r8,=HandleEINT0;加载中断向量表的基地址到加载中断向量表的基地址到r8r8addaddr8,r8,r9,lsl#2r8,r8,r9,lsl#2;获得中断向量获得中断向量ldrldrr8,r8r8,r8;加载中断服务程序的入口地址到加载中断服务程序的入口地址到r8r8strstrr8,sp,#8r8,sp,#8;保存保存spsp,将其作为新的将其作为新的pcpc值值ldmfdldmfdsp!,r8-r9,pcsp!,r8-r9,pc;跳转到中断服务子程序执行跳转到中断服务子程序执行23第第5 5章章 基于基于S
30、3C2410S3C2410的系统硬件设计的系统硬件设计举例举例:通过定时器通过定时器1 1中断控制中断控制CPUCPU板左下角的板左下角的LED1LED1和和LED2LED2实现轮流闪烁。实现轮流闪烁。5 5执行中断服务子程序,该子程序实现将执行中断服务子程序,该子程序实现将LED1LED1和和LED2LED2灯熄灭或点亮,灯熄灭或点亮,从现象中看到从现象中看到LED1LED1和和LED2LED2灯闪烁一次,则说明定时器发生了一次中断。灯闪烁一次,则说明定时器发生了一次中断。int flag;int flag;void _irq Timer1_ISR(void)void _irq Timer1
31、_ISR(void)if(flag=0)if(flag=0)rGPGDAT=rGPGDAT&0 xeff|0 x200;rGPGDAT=rGPGDAT&0 xeff|0 x200;flag=1;flag=1;elseelse rGPGDAT=rGPGDAT&0 xdff|0 x100;rGPGDAT=rGPGDAT&0 xdff|0 x100;flag=0;flag=0;rSRCPND|=BIT_TIMER1;rSRCPND|=BIT_TIMER1;rINTPND|=BIT_TIMER1;rINTPND|=BIT_TIMER1;6 6从中断返回,恢复现场,跳转到被中断的主程序继续执行,等待从中
32、断返回,恢复现场,跳转到被中断的主程序继续执行,等待下一次中断的到来。下一次中断的到来。24第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计主要内容S3C2410简介简介 I/O口口中断中断DMAA/D接口接口UART触摸屏触摸屏LCDUSB设备的数据收发设备的数据收发音频录放音频录放键盘和键盘和LED控制控制25第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.4.1 5.4.1 DMADMA工作原理工作原理 所谓所谓DMADMA方式,即直接存储器存取(方式,即直接存储器存取(Direct Memory AcessDirec
33、t Memory Acess),),是指存储是指存储器与外设在器与外设在DMADMA控制器的控制下,直接传送数据而不通过控制器的控制下,直接传送数据而不通过CPUCPU,传输速率主传输速率主要取决于存储器存取速度。要取决于存储器存取速度。采用采用DMADMA方式进行数据传输的具体过程如下:方式进行数据传输的具体过程如下:(1 1)外设向)外设向DMADMA控制器发出控制器发出DMADMA请求;请求;(2 2)DMADMA控制器向控制器向CPUCPU发出总线请求信号;发出总线请求信号;(3 3)CPUCPU执行完现行的总线周期后,向执行完现行的总线周期后,向DMADMA控制器发出响应请求的回答信
34、控制器发出响应请求的回答信号;号;(4 4)CPUCPU将控制总线、地址总线及数据总线让出,由将控制总线、地址总线及数据总线让出,由DMADMA控制器进行控制控制器进行控制;(5 5)DMADMA控制器向外部设备发出控制器向外部设备发出DMADMA请求回答信号;请求回答信号;(6 6)进行)进行DMADMA传送;传送;(7 7)数据传送完毕,)数据传送完毕,DMADMA控制器通过中断请求线发出中断信号。控制器通过中断请求线发出中断信号。CPUCPU在接在接收到中断信号后,转入中断处理程序进行后续处理。收到中断信号后,转入中断处理程序进行后续处理。(8 8)中断处理结束后,)中断处理结束后,CP
35、UCPU返回到被中断的程序继续执行。返回到被中断的程序继续执行。CPUCPU重新获得重新获得总线控制权。总线控制权。26第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.4.2 5.4.2 S3C2410AS3C2410A的的DMADMA控制器控制器 S3C2410AS3C2410A支持位于系统总线和外围总线之间的具有支持位于系统总线和外围总线之间的具有4 4个通道的个通道的DMADMA控制器。控制器。以以3 3种状态的种状态的FSMFSM来描述来描述DMADMA的操作过程如下:的操作过程如下:状态状态1 1:作为初始状态,:作为初始状态,DMADMA等待一
36、个等待一个DMADMA请求。如果出现请求。如果出现DMADMA请求,进入请求,进入状态状态2 2。在这种状态下,。在这种状态下,DMA ACKDMA ACK和和INT REQINT REQ为为0 0。状态状态2 2:在这种状态下,:在这种状态下,DMA ACKDMA ACK变为变为1 1,并且从,并且从DCON19:0DCON19:0寄存器向计寄存器向计数器(数器(CURR_TCCURR_TC)加载计数值。注意此时加载计数值。注意此时DMA ACKDMA ACK一直是一直是1 1直到以后被清零。直到以后被清零。状态状态3 3:在这种状态下,子:在这种状态下,子FSMFSM处理处理DMADMA的
37、原子操作被初始化。子的原子操作被初始化。子FSMFSM从源从源地址读取数据,并将其写入目标地址。这一操作被重复执行,直到在整体地址读取数据,并将其写入目标地址。这一操作被重复执行,直到在整体服务模式下计数器(服务模式下计数器(CURR_TCCURR_TC)变为变为0 0;这一操作在单个服务模式下则只执;这一操作在单个服务模式下则只执行一次。当子行一次。当子FSMFSM每完成一次原子操作,主每完成一次原子操作,主FSMFSM将将CURR_TCCURR_TC进行一次向下计数进行一次向下计数。另外,当。另外,当CURR_TCCURR_TC变为变为0 0时,主时,主FSMFSM将将INT REQINT
38、 REQ信号置信号置1 1,并将,并将DCONDCON寄存器的寄存器的中断设置位中断设置位2929置置1 1。除此以外,如果发生以下情况,则对。除此以外,如果发生以下情况,则对DMA ACKDMA ACK清零:清零:在整体服务模式下在整体服务模式下CURR_TCCURR_TC变为变为0 0;在单个复位模式下完成原子操作。在单个复位模式下完成原子操作。27第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 要进行要进行DMADMA操作,首先要对操作,首先要对S3C2410AS3C2410A的相关寄存器进行正确配置。每的相关寄存器进行正确配置。每个个DMADMA通道有
39、通道有9 9个控制寄存器个控制寄存器,因此对于,因此对于4 4通道的通道的DMADMA控制器来说总共有控制器来说总共有3636个寄存器。其中每个个寄存器。其中每个DMADMA通道的通道的9 9个控制寄存器中有个控制寄存器中有6 6个用于控制个用于控制DMADMA传输,传输,另外另外3 3个用于监控个用于监控DMADMA控制器的状态。控制器的状态。v DMADMA操作的相关寄存器操作的相关寄存器DMADMA初始源寄存器(初始源寄存器(DISRCDISRC)DMADMA初始源控制寄存器(初始源控制寄存器(DISRCCDISRCC)DMADMA初始目标地址寄存器(初始目标地址寄存器(DIDSTDID
40、ST)DMADMA初始目标控制寄存器(初始目标控制寄存器(DIDSTCDIDSTC)DMADMA控制寄存器(控制寄存器(DCONDCON)DMADMA状态寄存器(状态寄存器(DSTATDSTAT)DMADMA当前源寄存器(当前源寄存器(DCSRCDCSRC)DMADMA当前目标寄存器(当前目标寄存器(DCDSTDCDST)DMADMA屏蔽触发寄存器(屏蔽触发寄存器(DMASKTRIGDMASKTRIG)28第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.4.3 5.4.3 DMADMA编程实例编程实例 举例:使用举例:使用DMADMA方式实现从存储器到串口
41、方式实现从存储器到串口0 0进行数据发送。进行数据发送。#define SEND_DATA (define SEND_DATA (*(volatile unsigned char(volatile unsigned char*)0 x30200000)0 x30200000)#define SEND_ADDR (volatile unsigned char#define SEND_ADDR (volatile unsigned char*)0 x30200000)/)0 x30200000)/待发送数据的起始地址待发送数据的起始地址void Main(void)void Main(void)v
42、olatile unsigned charvolatile unsigned char*p=SEND_ADDR;p=SEND_ADDR;int i;int i;Target_Init();Target_Init();Delay(1000);Delay(1000);SEND_DATA=0 x41;SEND_DATA=0 x41;/初始化要发送的数据初始化要发送的数据for(i=0;i 128;i+)for(i=0;i 128;i+)*p+=0 x41+i;p+=0 x41+i;rUCON0=rUCON0&0 xff3|0 x8;rUCON0=rUCON0&0 xff3|0 x8;/Uart/Ua
43、rt设置成设置成DMADMA形式形式 rDISRC0=(U32)(SEND_ADDR);rDISRC0=(U32)(SEND_ADDR);/DMA0/DMA0 初始化初始化 rDISRCC0=(01)|(00);rDISRCC0=(01)|(00);/源源=AHBAHB,传送后地址增加传送后地址增加 rDIDST0=(U32)UTXH0;rDIDST0=(U32)UTXH0;/发送发送FIFOFIFO缓冲区地址缓冲区地址 rDIDSTC0=(11)|(10);rDIDSTC0=(11)|(10);/目标目标=APBAPB,地址固定地址固定 /设置设置DMA0DMA0控制寄存器:握手模式控制寄存
44、器:握手模式,与与APBAPB同步同步,使能中断使能中断,单位传输单位传输,单个模式单个模式,目标目标=UART0,UART0,/硬件请求模式硬件请求模式,不自动加载不自动加载,半字半字,计数器初值计数器初值5050 rDCON0=(031)|(030)|(129)|(028)|(027)|(124)|(123)|(122)|(020)|(50);rDCON0=(031)|(030)|(129)|(028)|(027)|(124)|(123)|(122)|(020)|(50);rDMASKTRIG0=(11);rDMASKTRIG0=(11);/打开打开DMADMA通道通道0 0 while(
45、1);while(1);29第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计主要内容S3C2410简介简介 I/O口口中断中断DMAA/D接口接口UART触摸屏触摸屏LCDUSB设备的数据收发设备的数据收发音频录放音频录放键盘和键盘和LED控制控制30第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.5.1 5.5.1 UARTUART的工作原理的工作原理 UART(Universal Asynchronous Receiver and Transmitter,通用异步收发器)是广泛使用的串行数据传输方式。通用异步收发器)是广
46、泛使用的串行数据传输方式。RS232C是通用的串行数据传输接口是通用的串行数据传输接口 标准,其标准,其DB9引脚定义如下:引脚定义如下:31第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v RS-232C RS-232C接口的基本连接方式接口的基本连接方式 简单连接简单连接 完全连接完全连接 32第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v UART UART的功能和组成的功能和组成 UART UART的主要功能是将数据以字符为单位,按照先低位后高位的顺的主要功能是将数据以字符为单位,按照先低位后高位的顺序进行逐位传输。
47、根据发送方和接收方是否使用同一个时钟,通讯方序进行逐位传输。根据发送方和接收方是否使用同一个时钟,通讯方式分成同步和异步两种。式分成同步和异步两种。UART UART主要由数据线接口、控制逻辑、配置寄存器、波特率发生器、主要由数据线接口、控制逻辑、配置寄存器、波特率发生器、发送部分和接收部分组成。发送部分和接收部分组成。UARTUART以字符为单位进行数据传输,每个字以字符为单位进行数据传输,每个字符的传输格式如下:符的传输格式如下:33第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计 5.5.2 5.5.2 S3C2410AS3C2410A的的UART UAR
48、T S3C2410A S3C2410A的的UARTUART提供提供3 3个独立的异步个独立的异步串行串行I/OI/O口(口(SIOSIO),),它们都可以运行于中它们都可以运行于中断模式或断模式或DMADMA模式。模式。S3C2410A S3C2410A的每个的每个UARTUART由波特率发生器、由波特率发生器、发送器、接收器以及发送器、接收器以及控制单元组成。控制单元组成。34第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v 与与UARTUART相关的操作相关的操作 1 1数据发送数据发送 2 2数据接收数据接收 3 3自动流控制(自动流控制(Auro Fl
49、ow ControlAuro Flow Control,AFCAFC)4 4RS-232RS-232接口接口 5 5中断中断/DMADMA请求发生请求发生 6 6波特率发生波特率发生 波特率时钟通过把源时钟除以波特率时钟通过把源时钟除以1616再除以一个再除以一个1616位的因子得位的因子得到,该到,该1616位的因子可以在位的因子可以在UARTUART波特率因子寄存器(波特率因子寄存器(UBRDIVnUBRDIVn)中指定。中指定。UBRDIVn UBRDIVn(intint)()(PCLK/PCLK/(bpsbps1616)-1-1 UBRDIVn UBRDIVn(intint)()(UE
50、XTCLK/UEXTCLK/(bpsbps1616)-1-17 7回送模式回送模式 8 8红外模式红外模式 35第第5 5章章 基于基于S3C2410S3C2410的系统硬件设计的系统硬件设计v 与与UARTUART相关的寄存器相关的寄存器 UARTUART行控制寄存器(行控制寄存器(ULCONnULCONn)UARTUART控制寄存器(控制寄存器(UCONnUCONn)UART FIFOUART FIFO控制寄存器(控制寄存器(UFCONnUFCONn)UART ModemUART Modem控制寄存器(控制寄存器(UMCONnUMCONn)UART TX/RXUART TX/RX状态寄存器