您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第5章_基于S3C2410的系统硬件设计
第5章基于S3C2410的系统硬件设计2第5章基于S3C2410的系统硬件设计5.1S3C2410简介S3C2410是Samsung公司推出的16/32位RISC处理器,主要面向手持设备以及高性价比、低功耗的应用。CPU内核采用的是ARM公司设计的16/32位ARM920TRISC处理器。S3C2410A提供一组完整的系统外围设备:2个USB主设备接口,1个USB从设备接口;4通道PWM定时器和1通道内部定时器;看门狗定时器;117位通用I/O口和24通道外部中断源;电源控制模式包括:正常、慢速、空闲和掉电四种模式;8通道10位ADC和触摸屏接口;具有日历功能的RTC;使用PLL的片上时钟发生器。1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;具有16KB的ICache和16KB的DCache以及MMU;外部存储器控制器;LCD控制器提供1通道LCD专用DMA;4通道DMA并有外部请求引脚;3通道UART和2通道SPI;1通道多主机IIC总线和1通道IIS总线控制器;SD主接口版本1.0和MMC卡协议2.11兼容版;3第5章基于S3C2410的系统硬件设计S3C2410结构框图4第5章基于S3C2410的系统硬件设计5.1.1S3C2410A的特点体系结构系统管理器NANDFlash启动装载器Cache存储器时钟和电源管理中断控制器具有脉冲带宽调制(PWM)的定时器RTC(实时时钟)通用I/O口UARTDMA控制器A/D转换和触摸屏接口LCD控制器STNLCD显示特性TFT彩色显示特性看门狗定时器IIC总线接口IIS总线接口USB主设备USB从设备SD主机接口SPI接口工作电压封装5第5章基于S3C2410的系统硬件设计5.1.2存储器控制器S3C2410A的存储器控制器提供访问外部存储器所需要的存储器控制信号。支持小/大端(通过软件选择)地址空间:每bank有128M字节(总共有8个banks,共1G字节)除bank0(只能是16/32位宽)之外,其他bank都具有可编程的访问大小(可以是8/16/32位宽)总共有8个存储器banks(bank0~bank7)其中6个banks用于ROM,SRAM等剩下2个banks用于ROM,SRAM,SDRAM等7个固定的存储器bank(bank0~bank6)起始地址最后一个bank(bank7)的起始地址是可调整的最后两个bank(bank6~bank7)的大小是可编程的所有存储器bank的访问周期都是可编程的总线访问周期可以通过插入外部等待来延长支持SDRAM的自刷新和掉电模式特性6第5章基于S3C2410的系统硬件设计存储器映射7第5章基于S3C2410的系统硬件设计5.1.3NANDFlash控制器特性NANDFlash模式:支持读/擦除/编程NANDFlash存储器。自动启动模式:复位后,启动代码被传送到Steppingstone中。传送完毕后,启动代码在Steppingstone中执行。具备硬件ECC(校验码,ErrorCorrectionCode)生成模块(硬件生成校验码,通过软件校验)。NANDFlash启动以后,4KB的内部SRAM缓冲器Steppingstone可以作为其他用途使用。NANDFlash控制器不能通过DMA访问,可以使用LDM/STM指令来代替DMA操作。8第5章基于S3C2410的系统硬件设计NANDFlash控制器的结构框图9第5章基于S3C2410的系统硬件设计NANDFlash的工作方式10第5章基于S3C2410的系统硬件设计NANDFlash存储器的时序11第5章基于S3C2410的系统硬件设计5.1.4时钟和电源管理时钟和电源管理模块包括三部分:时钟控制:CPU所需的FCLK时钟信号、AHB总线外围设备所需的HCLK时钟信号,以及APB总线外围设备所需的PCLK时钟信号。USB控制电源控制正常模式慢速模式空闲模式掉电模式12第5章基于S3C2410的系统硬件设计5.2.1S3C2410A的I/O口工作原理S3C2410A共有117个多功能复用输入输出口(I/O口),分为8组PORTA~PORTH。PORTA除了作为功能口外,它只作为输出口使用;其余的PORTB~PORTH都可以作为输入输出口使用。8组I/O口按照其位数的不同,可分为:1个23位的输出口(PORTA)2个11位的I/O口(PORTB和PORTH)4个16位的I/O口(PORTC、PORTD、PORTE、PORTG)1个8位的I/O口(PORTF)与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)端口数据寄存器(GPADAT~GPHDAT)端口上拉寄存器(GPBUP~GPHUP)杂项控制寄存器外部中断控制寄存器(EXTINTN)13第5章基于S3C2410的系统硬件设计5.2.2I/O口编程实例举例:通过对G口的操作控制CPU板左下角的LED1和LED2实现轮流闪烁。voidMain(void){intflag,i;Target_Init();//进行硬件初始化操作,包括对I/O口的初始化操作for(;;){if(flag==0){for(i=0;i1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第9位为输出引脚rGPGDAT=rGPGDAT&0xeff|0x200;//第8位输出为低电平//第9位输出高电平for(i=0;i10000000;i++);//延时flag=1;}else{for(i=0;i1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第9位为输出引脚rGPGDAT=rGPGDAT&0xdff|0x100;//第8位输出为高电平//第9位输出低电平for(i=0;i1000000;i++);//延时flag=0;}}}14第5章基于S3C2410的系统硬件设计5.3.1ARM的中断原理ARM系统包括两类中断:一是IRQ中断,一是FIQ中断。处理中断的步骤如下:(1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。(2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。(3)获取中断源。以异常向量表保存在低地址处为例,若是IRQ中断,则PC指针跳到0x18处;若是FIQ中断,则跳到0x1C处。IRQ或FIQ的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来PC指针跳入中断服务子程序处理中断。(4)中断处理。为各种中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时,通过判断中断优先级以及访问中断标志位的状态来识别到底哪一个中断发生了。进而调用相应的函数进行中断处理。(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到CPSR中,R14中保存的被中断程序的地址恢复到PC中,进而继续执行被中断的程序。15第5章基于S3C2410的系统硬件设计5.3.2S3C2410A的中断控制器中断控制器使用的寄存器16第5章基于S3C2410的系统硬件设计优先级生成模块17第5章基于S3C2410的系统硬件设计5.3.3中断编程实例举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。1.对定时器1初始化,并设定定时器的中断时间为1秒。voidTimer1_init(void){rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置GPG口为输出口rGPGDAT=rGPGDAT|0x300;rTCFG0=255;rTCFG1=04;//在pclk=50MHZ下,1秒钟的记数值rTCNTB1=50000000/4/256=48828;rTCNTB1=48828;rTCMPB1=0x00;rTCON=(111)|(19)|(08);//禁用定时器1,手动加载rTCON=(111)|(09)|(18);//启动定时器1,自动装载}18第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。2.为了使CPU响应中断,在中断服务子程序执行之前,必须打开ARM920T的CPSR中的I位,以及相应的中断屏蔽寄存器中的位。voidTimer1INT_Init(void){//定时器接口使能if((rINTPND&BIT_TIMER1)){rSRCPND|=BIT_TIMER1;}//写入定时器1中断服务子程序的入口地址pISR_TIMER1=(int)Timer1_ISR;rINTMSK&=~(BIT_TIMER1);//开中断;}3.等待定时器中断,通过一个死循环如“while(1);”实现等待过程。19第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。4.根据设置的定时时间,将产生定时器中断。定时器中断发生后,首先进行现场保护,接下来转入中断的入口代码处执行,该部分代码通常使用汇编语言书写。在执行中断服务程序之前,首先要确保HandleIRQ地址处保存中断分发程序IsrIRQ的入口地址。ldrr0,=HandleIRQldrr1,=IsrIRQstrr1,[r0]接下来将执行IsrIRQ中断分发程序,具体代码如下:IsrIRQsubsp,sp,#4;为保存PC预留堆栈空间stmfdsp!,{r8-r9}ldrr9,=INTOFFSETldrr9,[r9];加载INTOFFSET寄存器值到r9ldrr8,=HandleEINT0;加载中断向量表的基地址到r8addr8,r8,r9,lsl#2;获得中断向量ldrr8,[r8];加载中断服务程序的入口地址到r8strr8,[sp,#8];保存sp,将其作为新的pc值ldmfdsp!,{r8-r9,pc};跳转到中断服务子程序执行20第5章基于S3C2410的系统硬件设计举例:通过定时器1中断控制CPU板左下角的LED1和LED2实现轮流闪烁。5.执行中断服务子程序,该子程序实现将LED1和LED2灯熄灭或点亮,从现象中看到LED1和LED2灯闪烁一次,则说明定时器发生了一次中断。intflag;void__irqTimer1_ISR(void){if(flag==0){rGPGDAT=rGPGDAT&0xeff|0x200;flag=1;}else{rGPGDAT=rGPGDAT&0xdff|0x100;flag=0;}rSRCPND|=BIT_TIMER1;rINTPND|=BIT_TIMER1;}6.从中断返回,恢复现场,跳转到被中断的主程序继续执行,等待下一次中断的到来。21第5章基于S3C2410的系统硬件设计5.4.1DMA工作原理所谓DMA方式,即直接存储器存取(DirectMemoryAcess),是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。采用DMA方式进行数据传输的具体过程如下:(1)外设向DMA控制器发出DMA请求;(2)DMA控制器向CPU发出总线请求信号;(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号;(4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制;(5)DMA控制器向外部设备发出DMA请求回答信号;(6)进行DMA传送;(7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。(8)中断处理结束后,CPU返回到被中断的程序继续执行。CPU重新获得总线控制权。22第5章基于S3C2410的系统硬
本文标题:第5章_基于S3C2410的系统硬件设计
链接地址:https://www.777doc.com/doc-445060 .html