基于s3c2410的嵌入式系统硬件结构设计.ppt_第1页
基于s3c2410的嵌入式系统硬件结构设计.ppt_第2页
基于s3c2410的嵌入式系统硬件结构设计.ppt_第3页
基于s3c2410的嵌入式系统硬件结构设计.ppt_第4页
基于s3c2410的嵌入式系统硬件结构设计.ppt_第5页
已阅读5页,还剩291页未读 继续免费阅读

下载本文档

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

文档简介

1,Part 5 基于S3C2410的硬件系统设计(一),1,3,2,4,S3C2410X简介 存储器接口设计 I/O接口设计 UART设计 IIC接口设计 中断接口 时钟和功耗管理 PWM定时器,5,6,看门狗定时器 日历时钟 DMA LCD控制器 A/D转换与触摸屏 USB接口 SPI,7,8,10,9,11,12,13,14,15,2,5.1 S3C2410X概述,主要内容 主要特性 系统结构 引脚信号,3,5.1 S3C2410X概述,S3C2410X是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核,加上丰富的片内外设,为手持设备和其它应用,提供了低价格、低功耗、高性能微控制器的解决方案。,4,主要特性 具有16KB指令Cache、 16KB数据Cache和存储器管理单元MMU。 外部存储器控制器,可扩展8组,每组128MB,总容量达1GB;支持从Nand flash存储器启动。 55个中断源,可以设定1个为快速中断,有24个外部中断,并且触发方式可以设定。 4通道的DMA,并且有外部请求引脚。 3个通道的UART,带有16字节的TX/RX FIFO,支持IrDA1.0功能。 具有2通道的SPI、1个通道的IIC串行总线接口和1个通道的IIS音频总线接口。 有2个USB主机总线的端口,1个USB设备总线的端口。 有4个具有PWM功能的16位定时器和1个16位内部定时器。,芯片体系结构,5,芯片体系结构,主要特性 8通道的10位A/D转换器,最高速率可达500kB/s;提供有触摸屏接口。 具有117个通用I/O口和24通道的外部中断源。 兼容MMC的SD卡接口。 具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作。 看门狗定时器。 具有日历功能的RTC。 有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道。 具有PLL功能的时钟发生器,时钟频率高达203MHz。 双电源系统:1.8/2.0V内核供电,3.3V存储器和I/O供电。,6,二、系统结构 主要由两大部分构成: ARM920T内核 片内外设。,7,1、ARM920T内核 由三部分:ARM9内核ARM9TDMI、32KB的Cache、MMU。,8,2、片内外设 分为高速外设和低速外设,分别用AHB总线和APB总线。,9,三、引脚信号 S3C微控制器是272-FBGA封装。 其信号可以分成: addr0-addr26、 Data0-data31、 GPA0-GPA22 GPB10、GPC15、 GPD15、GPE15、 GPF7、GPG15、 GPH10、EINT23、 nGCS0nGCS7、 AIN7、IIC、SPI、 OM0-OM3 等,大部分都是复用的,BACK,10,5.2 S3C2410X的存储器,主要内容 存储器配置 存储器概述 控制寄存器 Flash及控制器 Flash控制器概述 控制器主要特性 控制器的寄存器 控制器的工作原理,11,5.2.1 S3C2410X的存储器配置,一、概 述 S3C2410X的存储器管理器提供访问外部存储器的所有控制信号:27位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。 S3C2410X的存储空间分成8组,最大容量是1GB,bank0-bank5为固定128MB,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,并且bank7的开始地址与bank6的结束地址相连接,但是二者的容量必须相等。 bank0可以作为引导ROM,其数据线宽只能是16位和32位,复位时由OM0、OM1引脚确定;其它存储器的数据线宽可以是8位、16位和32位。 S3C2410X的存储器格式,可以为大端格式,也可以为小端格式。,12,ARM9 内核,存储器 控制器,存储器,存储器及存储器映射I/O,ARM9定义了局部总线的接口时序,各芯片厂商制定了自己的接口时序,ARM9局部总线,一般在两者之间加入存储器控制器,13,14,二、存储器的控制寄存器 内存控制器为访问外部存储空间提供存储器控制信号, S3C2410X存储器控制器共有13个寄存器。,15,1、总线宽度和等待控制寄存器 back,STn:控制存储器组n的UB/LB引脚输出信号。 1:使UB/LB与nBE3:0相连; 0:使UB/LB与nWBE3:0相连 WSn:使用/禁用存储器组n的WAIT状态 1:使能WAIT;0:禁止WAIT DWn:控制存储器组n的数据线宽 00:8位;01:16位;10:32位;11:保留,16,Tacs:设置nGCSn有效前地址的建立时间 00:0个;01:1个;10:2个;11:4个时钟周期 Tcos:设置nOE有效前片选信号的建立时间 00:0个;01:1个;10:2个;11:4个时钟周期 Tacc:访问周期 000:1个;001:2个;010:3个;011:4个时钟 100:6个:101:8个;110:10个;111:14个,2、BANKn-存储器组控制寄存器(n=0-5),17,Tcoh:nOE无效后片选信号的保持时间 00:0个;01:1个;10:2个;11:4个时钟 Tcah: nGCSn无效后地址信号的保持时间 00:0个;01:1个;10:2个;11:4个时钟 Tacp:页模式的访问周期 00:2个;01:3个;10:4个;11:6个时钟 PMC:页模式的配置,每次读写的数据数 00:1个;01:4个;10:8个;11:16个 注:00为通常模式。 注:紫色为某实验箱上的配置,其值为0x0700,back,18,MT:设置存储器类型 00:ROM或者SRAM,3:0为Tacp和PMC; 11:SDRAM, 3:0为Trcd和SCAN; 01、10:保留 Trcd:由行地址信号切换到列地址信号的延时时钟数 00:2个时钟;01:3个时钟;10:4个时钟 SCAN:列地址位数 00:8位; 01:9位; 10:10位,3、BANK6/7-存储器组6/7控制寄存器,back,19,REFEN:刷新控制。 1:使能刷新;0:禁止刷新 TREFMD:刷新方式。 1:自刷新 0:自动刷新 Trp:设置SDRAM行刷新时间(时钟数) 00:2个时钟;01:3个;10:3个;11:4个时钟 Tsrc:设置SDRAM行操作时间(时钟数) 00:4个时钟;01:5个;10:6个;11:7个时钟 注: SDRAM的行周期= Trp + Tsrc。 Refresh_count:刷新计数值,4、REFRESH-刷新控制寄存器,20,Refresh_count:刷新计数器值 计算公式: 刷新周期=(211- Refresh_count+1)/HCLK 例子:设刷新周期=15.6s,HCLK=60MHz 则 刷新计数器值=211+1-6015.6=1113 1113=0x459=0b10001011001,back,21,高24位未用。 BURST_EN:ARM突发操作控制 0:禁止突发操作;1:可突发操作 SCKE_EN:SCKE使能控制SDRAM省电模式 0:关闭省电模式;1:使能省电模式 SCLK_EN:SCLK省电控制,使其只在SDRAM访问周期内使能SCLK 0:SCLK一直有效;1:SCLK只在访问期间有效 BK76MAP:控制BANK6/7的大小及映射,5、BANKSIZE-BANK6/7组大小控制寄存器,22,BK76MAP:控制BANK6/7的大小及映射 100:2MB; 101:4MB; 110:8MB 111:16MB; 000:32MB; 001:64MB 010:128MB,back,23,WBL:突发写的长度。0:固定长度;1:保留 TM:测试模式。 00:模式寄存器集;其它保留 CL:列地址反应时间 000:1个时钟;010:2个时钟; 011:3个时钟;其它保留 BT:猝发类型 0:连续; 1:保留 BL:猝发时间 000:1个时钟;其它保留,6、MRSRB6/7-BANK6/7模式设置寄存器,24,head.s ENTRY(memsetup) mov r1, #MEM_CTL_BASE adrl r2, mem_cfg_val add r3, r1, #52 1: ldr r4, r2, #4 str r4, r1, #4 cmp r1, r3 bne 1b mov pc, lr mem_cfg_val: .long vBWSCON .long vBANKCON0 .long vBANKCON1 .long vBANKCON2 .long vBANKCON3 .long vBANKCON4 .long vBANKCON5 .long vBANKCON6 .long vBANKCON7 .long vREFRESH .long vBANKSIZE .long vMRSRB6 .long vMRSRB7,smdk2410.h /* initial values for DRAM */ #define MEM_CTL_BASE 0x48000000 #define vBWSCON 0x22111110 #define vBANKCON0 0x00000700 #define vBANKCON1 0x00000700 #define vBANKCON2 0x00000700 #define vBANKCON3 0x00000700 #define vBANKCON4 0x00000700 #define vBANKCON5 0x00000700 #define vBANKCON6 0x00018005 #define vBANKCON7 0x00018005 #define vREFRESH 0x008e0459 #define vBANKSIZE 0xb2 #define vMRSRB6 0x30 #define vMRSRB7 0x30,VIVI For s3c2410中Bootloader之存储器初始化,25,;Tacc 10:8 存取周期 110 = 10 clocks 111 = 14 clocks,;Bank1,3 16位,其余32位,For 44b0x中Bootloader之存储器初始化,26,5.2.2 Flash,FLASH存储器又称闪存,是一种可在线多次擦除的非易失性存储器,即掉电后数据不会丢失。FLASH存储器还具有体积小、功耗低、抗振性强等优点,是嵌入式系统的首选存储设备。 FLASH存储器主要分为两种,一种为NOR型FLASH,另一种为NAND型FLASH 。,一、概述,27,(1) 接口差别 NOR型FLASH采用的是SRAM接口,提供有足够的地址引脚来寻址,可以很容易地存取其片内的每一个字节; NAND型FLASH使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。通常是采用8个引脚来传送控制、地址和数据信息。 (2) 读写的基本单位 NOR型FLASH操作是以“字”为基本单位; NAND型FLASH操作是以“页面”为基本单位,页的大小一般为512字节。 (3) 性能比较 NOR型FLASH的地址线和数据线是分开的,传输效率很高,程序可以在芯片内执行。NOR型的读速度比NAND型稍快一些; NAND型的写入速度比NOR型快很多(由于NAND型读写的基本单位为“页面”,所以对于小量数据的写入,总体速度要比NOR型慢);,二、NOR型与NAND型FLASH的区别,28,(4) 容量和成本 NAND型FLASH具有极高的单元密度,容量可以做得比较大,加上其生产过程更为简单,价格也就相应地降低了。 NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。 (5) 软件支持 在NOR型FLASH上运行代码不需要任何的软件支持,而在NAND型FLASH上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序MTD (Memory Technology Drivers)。NAND型和NOR型FLASH在进行写入和擦除操作时都需要MTD(说明,MTD已集成在FLASH芯片内部,它是对FLASH进行操作的接口)。,29,这里以SST39VF160为例,介绍NOR型FLASH存储器的结构及操作。 SST39VF160是SST公司的CMOS多功能FLASH(MPF)器件,存储容量为2M字节,16位数据宽度(即一个字为2字节),工作电压为2.73.6V。SST39VF160由SST特有的高性能SuperFlash技术制造而成,SuperFlash技术提供了固定的擦除和编程时间,与擦除/编程周期数无关。芯片管脚配置如下图所示。,三、NOR型Flash存储器,30,SST39VF160管脚描述,NOR型FLASH存储器采用的是SRAM接口,其地址线和数据线是分开的。,31,SST39VF160工作模式选择,32,NOR型FLASH存储器容量越来越大,为了方便数据管理,将FLASH划分为块(Block),每个块又分成扇区(Sector)。 SST39VF160的块大小为32K字,扇区大小为2K字。 读操作,可以对任何地址的任何字节进行,不受限制; 写操作,以字形式进行编程。编程前包含字的扇区必须完全擦除; 擦除操作,以扇区(2K)、块(32K)或全片为单位进行擦除。 擦除后数据变为0xFF。,33,SST39VF160的存储器操作由命令来启动。命令通过标准微处理器写时序写入器件。,34,内部操作状态检测: SST39VFl60提供两种软件方式来检测内部操作是否完成。软件检测方式涉及两个状态位:利用数据轮询特性Data Polling bit(DQ7)和跳转位特性Toggle bit(DQ6)。 在WE的上升沿,写入结束检测功能被使能,同时内部写入或擦除操作也被初始化。 这里只介绍Toggle bit方式。 在内部写入或擦除的过程中,任何对DQ6连续的读操作都会产生一个不断翻转的1和O。当内部写入或擦除完成时,DQ6位将停止翻转。,void Waitfor_endofprg(void) volatile unsigned int old_Status,now_Status; old_Status= * (volatile unsigned short *)0x00);/从任意地址读出数据 while(1) new_Status=*(volatile unsigned short*)0x00): /从同一地址读出数据 if(old_Status&Ox40)=(new_Status&Ox40) /比较DQ6位 break; else old_Status=new_Status: ,35,SST39VF160擦除 Int SST39VF160_Sectorerase(unsigned long SAaddr) writeflash(0x5555,0xAA) writeflash(0x2AAA,0x55) writeflash(0x5555,0x80) writeflash(0x5555,0xAA) writeflash(0x2AAA,0x55) writeflash(SAaddr,0x30) waitfor_endofprg() #define writeflash(addr,dat) *(volatile unsigned short *)(addr1)=(unsigned short)dat Addr 为写入数据的目标地址。Dat为16位半字而不是字节,因而addr也是半字地址,但对存储器而言地址是以字节为单位的,因此,addr必须加以调整,左移1位。如需擦除最后一个扇区, Saaddr=0xFF800即可。,36,SST39VF160写入,Int SST39VF160_wordProg(unsigned long addr,unsigned short dat) writeflash(0x5555,0xAA) writeflash(0x2AAA,0x55) writeflash(0x5555,0xA0) writeflash(addr,dat) waitfor_endofprg() 写入操作是一个字一个字进行的,在需要进行多字(16位)写入时,只要循环调用SST39VF160_wordProg即可。 类似:LINUX 下公开源代码的J-FLASH,37,四、 Nand Flash及其控制器,Nor flash存储器:读速度高,而擦、写速度低,容量小,价格高。 Nand flash存储器:读速度不如Nor flash,而擦、写速度高,容量大,价格低。有取代磁盘的趋势。 因此,现在不少用户从Nand flash启动和引导系统,而在SDRAM上执 行主程序代码。 (一)Nand Flash控制器概述 S3C2410X微控制器从Nand flash的引导功能:其内部有一个叫做“起步石(Steppingstone)”的 SRAM缓冲器,系统 启动时,Nand flash存储器的前面4KByte字节将被自动载入到起步石中,然后系统自动执行这些载入的引导代码。引导代 码执行完毕后,自动跳转到SDRAM执行。 Nand flash操作的校验功能:使用S3C2410X内部硬件ECC功能可以对Nand flash的数据进行有效性的检测。,38,(二) Nand Flash控制器主要特性 Nand Flash模式:支持读/擦/编程Nand flash存储器。 自动导入模式:复位后,引导代码被送入Steppingstone,传送后,引导代码在 Steppingstone中执行。 具有硬件ECC(纠错码)功能:硬件产生纠错代码。 内部4KB的SRAM缓冲器Steppingstone,在Nand flash引导后可以作为其他用途使用。,39,Nand Flash控制器功能框图,主要由6部分组成 引脚信号: CLE:命令锁存 R/nB :就绪/忙,40,(三)Nand Flash 控制器的寄存器,41,NFEN:NF控制器使能控制 0:禁止使用; 1:允许使用 IECC:初始化ECC编码/解码器控制位 0:不初始化ECC; 1:初始化ECC NFCE:NF片选信号nFCE控制位持续时间设置 0: nFCE为低有效; 0: nFCE为高无效 TACLE:CLE/ALE持续时间设置值(0-7) 持续时间 HCLK * (TACLS + 1) CLE/ALE :命令/地址锁存允许 TWRPH0:写信号持续时间设置值(07) 持续时间 HCLK * (TWRPH01) TWRPH1:写信号无效后CLE/ALE保持时间设置值(07) 持续时间 HCLK * (TWRPH11),1、NFCON-Flash配置寄存器,42,2、NFCMD-Flash命令寄存器,高24位未用,低8位为读入或者写出的数据,3、NFADDR-Flash地址寄存器,4、NFDATA-Flash数据寄存器,高24位未用,低8位为Flash存储器地址值,43,RnB:Nand Flash存储器状态位 0:存储器忙; 1:存储器准备好,5、NFSTAT-Flash状态寄存器,6、NFECC-Flash错误校正码寄存器,44,(四)Nand Flash 控制器的工作原理 1、自动导入启动代码步骤 完成复位。 如果自动导入模式使能,Nand flash存储器的前面4K字节被自动拷贝到Steppingstone 内部缓冲器中。 Steppingstone被映射到nGCS0对应的BANK0存储空间。 CPU在Steppingstone的4-KB内部缓冲器中开始执行引导代码。 注意: 在自动导入模式下,不进行ECC检测。因此,Nand flash的前4KB应确保不能有位错误(一 般Nandflash厂家都确保)。,45,2、Nand FLASH模式配置 通过NFCONF寄存器配置Nand flash; 写Nand flash命令到NFCMD寄存器; 写Nand flash地址到NFADDR寄存器; 在读写数据时,通过NFSTAT寄存器来获得Nand flash的状态信息。应该在读操作前或写入 之后检查R/nB信号(准备好/忙信号)。 在读写操作后要查询校验错误代码,对错误进行纠正。,46,3、系统引导和 Nand FLASH 配置 OM1:0 = 00b:使能Nand flash控制器自动导入模式; OM3:0为芯片引脚,设置引导模式、存储器bank0的数据宽度、时钟模式等。 OM1:0 = 01b、10b: bank0数据宽度为16位、32位 OM1:0=11b:测试模式 Nand flash的存储页面大小应该为512字节。 NCON (引脚):Nand flash 寻址步骤数选择 0:3步寻址; 1:4步寻址 注:如果NAND Flash的容量是256Mbit以下,那么,block adress最高位只到bit24,因此寻址只需要3步。,47,4、Nand Flash操作的校验问题 S3C2410A在写/读操作时,每512字节数据自动产生3字节的ECC奇偶代码(24位)。 24位 ECC 奇偶代码18位行奇偶 6位列奇偶 ECC产生模块执行以下步骤: 当MCU写数据到Nand时,ECC产生模块生成ECC代码。 当MCU从Nand读数据时,ECC产生模块生成ECC代码同时用户程序将它与先前写入时产 生的ECC代码比较。,48,Flash,这里以K9F2808U0C为例,介绍NAND型FLASH存储器的结构及操作。 K9F2808U0C是SAMSUNG公司生产的NAND型FLASH存储器,存储容量为16M8Bit,工作电压为2.73.6V。528字节的页编程操作时间为200s,16K字节的块擦除操作时间为2ms。页面的数据以每个字50ns的速度被读出。片内写控制自动实现所有编程和擦除功能,包括脉冲的周期、内部校验和数据冗余。,NAND型Flash存储器,49,Flash,NAND型Flash存储器,K9F2808U0C的存储空间分为32K页,每一页有(512+16)字节。该寄存器被分为两个区:数据区和空闲区。数据区又可分为上、下两个区,每个区为256字节;空闲区可以用于存放ECC校验和其它校验信息。,50,并行Flash,NAND型Flash存储器,对K9F2808U0C的操作是通过将特定的指令数据写到芯片指令寄存器中实现,指令与时序的定义如下表所示。,BACK,51,5.3 输入/输出端口,主要内容 概述 寄存器 应用举例,52,一、概述 S3C2410X有117个输入/输出端口。这些端口是: A口(GPA):23个输出口 B口(GPB):11个输入/输出口 C口(GPC):16个输入/输出口 D口(GPD):16个输入/输出口 E口(GPE):16个输入/输出口 F口(GPF):8个输入/输出口 G口(GPG):16个输入/输出口 H口(GPH):11个输入/输出口 这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。,53,二、端口寄存器及引脚配置 每一个端口都有4个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存器等。,54,GPADAT寄存器为准备输出的数据 其值为23位22:0 注意: (1)当A口引脚配置为非输出功能时,其输出无意义; (2)从引脚输入没有意义。,1、端口A寄存器及引脚配置,55,1、端口A寄存器及引脚配置,56,GPBDAT-为准备输出或输入的数据 其值为11位10:0 GPBUP-端口B上拉寄存器,位10:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当B口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,2、端口B寄存器及引脚配置,57,端口B引脚配置寄存器,58,GPCDAT-为准备输出或输入的数据 其值为16位15:0 GPCUP-端口C上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当C口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,3、端口C寄存器及引脚配置,59,端口C引脚配置寄存器,60,GPDDAT-为准备输出或输入的数据 其值为16位15:0 GPDUP-端口D上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,15:12无上拉功能,而11:0有上拉 注意: 当D口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,4、端口D寄存器及引脚配置,61,端口D引脚配置寄存器,62,GPEDAT-为准备输出或输入的数据 其值为16位15:0 GPEUP-端口E上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。 注意: 当E口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,5、端口E寄存器及引脚配置,63,端口E引脚配置寄存器,64,GPFDAT-为准备输出或输入的数据 其值为8位7:0 GPFUP-端口F上拉寄存器,位7:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,各个引脚都有上拉功能。 注意: 当F口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,6、端口F寄存器及引脚配置,65,端口F引脚配置寄存器,66,GPGDAT-为准备输出或输入的数据 其值为16位15:0 GPGUP-端口G上拉寄存器,位15:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 初始化时,15:11引脚无上拉功能,其它引脚有。 注意: 当G口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,7、端口G寄存器及引脚配置,67,端口G引脚配置寄存器,LCD-PEN:POWER_ENABLE,nSS0:SPI0_SELECT,68,GPHDAT-为准备输出或输入的数据 其值为11位10:0 GPHUP-端口H上拉寄存器,位10:0有意义。 0:对应引脚设置为上拉 1:无上拉功能 注意: 当H口引脚配置为非输入/输出功能时,其寄存器中的值没有意义。,8、端口H寄存器及引脚配置,69,端口H引脚配置寄存器,BACK,程序示例见VIVI中:S3C2410.h(地址映射)、smdk2410.h(功能设置值)、smdk.c(将值写到指定地址),70,9、端口其它控制寄存器,71,nEN_SCKE-SCLK使能位。在电源关闭模式下对SDRAM做保护 0: 正常状态 1:低电平 nEN_SCLKx-SCLKx使能位。在电源关闭模式下对SDRAM做保护 0:SCLKx= SCLK 1:低电平 nRSTCON-对nRSTOUT软件复位控制位 0:使nRSTOUT为低,0;1:使nRSTOUT为高,1,(1)MISCCR-混合控制寄存器,72,USBSUSPND1-USB端口1模式 0:正常 1:浮空 USBSUSPND0-USB端口0模式 0:正常 1:浮空 CLKSEL1 - CLKOUT1引脚输出信号源选择 000:MPLL CLK 001:UPLL CLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK1 11x:保留 CLKSEL0 - CLKOUT0引脚输出信号源选择 000:MPLL CLK 001:UPLL CLK 010:FCLK 011:HCLK 100:PCLK 101:DCLK0 11x:保留,73,USBPAD-与USB连接选择 0:与USB设备连接 1:与USB主机连接 MEM_HZ_CON-MEM高阻控制位 0:Hi-Z 1:前一状态 SPUCR_L-数据口低16位15:0上拉控制位 0:上拉 1:无上拉 SPUCR_H-数据口高16位31:16上拉控制位 0:上拉 1:无上拉,74,(2)DCLKCON-D时钟控制寄存器,DCLK1(0)CMP-DCLK1(0)低电平时间所占的比例数。 设该位值为m,m DCLK1(0)DIV。 则低、高电平持续时间的源周期数分别为: m+1、DCLK1(0)DIV-m DCLK1(0)DIV-DCLK1(0)分频值 DCLK1(0) frequency = source clock / ( DCLK1(0)DIV + 1 ),75,(2)DCLKCON-D时钟控制寄存器(续),DCLK1(0)SelCK-DCLK1(0) source clock 选择 0 : 源时钟选择PCLK 1:源时钟选择UCLK ( USB ) DCLK1(0)EN-DCLK1(0) Enable 0:禁止 1:允许,76,主要设置各个外中断源的触发方式、滤波,10、外中断控制寄存器,77,EINT07-中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-保留,(1)EXTINT0-外中断触发方式控制寄存器0,78,EINT815-中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-保留,(2)EXTINT1-外中断触发方式控制寄存器1,79,EINT1623-外中断请求信号触发方式选择 000:低电平触发 001:高电平触发 01x:下降沿触发 10x:上升沿触发 11x:双边沿触发 第3、7、11、15、19、23、27、31位-为FILTEN 各引脚滤波控制位 0:禁止滤波 1:使能滤波,(3)EXTINT2-外中断控制寄存器2,80,主要设置各个外中断源的滤波器设置,11、外中断滤波控制寄存器,81,FLTCLK1619-外中断1619滤波器时钟选择 0:PCLK 1:外部/振荡时钟(由OM引脚选择) EINTFLT1619-外中断1619滤波器宽度(频带宽度),(1)EINTFLT2-外中断滤波控制寄存器2,82,FLTCLK2023-外中断2023滤波器时钟选择 0:PCLK 1:外部/振荡时钟(由OM引脚选择) EINTFLT2023-外中断2023滤波器宽度(频带宽度),(2)EINTFLT3-外中断滤波控制寄存器3,83,12、外中断屏蔽、标志寄存器,84,外中断屏蔽寄存器,0:允许中断 1:禁止中断 注意: EINT0- EINT3不能在此被屏蔽,在SRCPND中屏蔽。,85,外中断标志寄存器,0:无中断请求 1:有中断请求 注意:对某位写1,则清除相应标志,即清为0.,86,GSTATUS3、4: 复位时被清0,其它情况下其数据不变。 用户可以用于保存数据。,13、外中断状态寄存器,87,nWEIT-引脚nWEIT状态 nCON-引脚nCON状态 RnB-引脚R/nB状态 nBATT_FLT-引脚nBATT_FLT状态 注意:各位的数值0、1,随着对应引脚变化。,(1)GSTATUS0-外部引脚状态寄存器,88,WDTRST-上电复位控制状态 1:出现了上电复位 对该位写,则将该位清0 OFFRST-掉电模式复位状态。 1:系统出现了从掉电模式唤醒复位 对该位写,则将该位清0 PWRST-看门狗复位状态 1:系统出现了看门狗定时器复位 对该位写,则将该位清0,(2)GSTATUS2-复位状态寄存器,BACK,89,5.4 UART通用异步串行接口,主要内容 概述 结构 寄存器 应用举例,90,一、概 述 S3C2410 的UART(通用异步串行口)有三个独立的异步串行I/O 端口:UART0、UART1、UART2,每个串口都可以在中断和DMA 两种模式下进行收发。UART支持的最高波特率达230.4kbps。 每个UART 包含:波特率发生器、接收器、发送器和控制单元。波特率发生器以PCLK或UCLK为时钟源。发送器和接收器各包含1个16 字节的FIFO 寄存器和移位寄存器。 S3C2410 的3个UART都有遵从1.0规范的红外传输功能, UART0、UART1有完整的握手信号,可以连接MODEM。 当发送数据的时候,数据先写到FIFO 然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO 中。,91,通用异步收发,嵌入式开发板和PC机的通讯电缆可以按照如图所示的方式连接。,串行数据传送模式: 单工 半双工 全双工 串行通信方式: 同步通信 异步通信,92,使用UART0通信,S3C2410的I/O电压为3.3V(可承受5V),连接时须注意电平的匹配。,与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。,93,RS-232-C标准采用的接口是9芯或25芯的D型插头,以常用的9芯D型插头为例,各引脚定义如下:,94,二、串行口结构和工作原理 1、串行口结构,主要有4部分构成:接收器、发送器、波特率发生器、控制逻辑等。,95,接收器/发送器的结构,96,2、工作原理 (1)串行口的操作 数据帧格式:可编程,包含1个开始位、5 到8 个数据位、1个可选的奇偶校验位、1个或2个停止位,通过线路控制器(ULCONn)来设置。 发送中止信号:迫使串口输出逻辑0 ,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,再通过这个全0 状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO 中(在不使用FIFO 模式下,将被放到输出保持寄存器)。 接收器具有错误检测功能:可以检测出溢出错误,奇偶校验错误,帧错误和中止状况,每种情况下都会将一个错误标志在接收状态寄存器置位。,97,(2)串行口的波特率发生器 每个UART 的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2410 的内部系统时钟PCLK或UCLK 中来选择。波特率数值决定于波特率除数寄存器(UBRDIVn)的值,波特率数与UBRDIVn 的关系为: UBRDIVn=(int)(CLK/( f B*16) 1 其中CLK为所选择的时钟频率, f B为波特率。 f B= CLK/16/ ( UBRDIVn 1 ) 例如,如果波特率为115200bps 且PCLK 或UCLK 为40MHz,则UBRDIVn 为: UBRDIVn =(int)(40000000)/(115200*16) 1 = (int)(21.7) 1 = 21 1 = 20,98,(3)串行口波特率误差极限 在应用中,实际波特率往往与理想波特率有差别,其误差不能超过一定的范围,其极限为:UART传输10bit数据的时间误差应该小于1.87(3/160)。 t_true = (UBRDIVn + 1)1610 / PCLK 实际的传输10bit所需时间 t_ideal = 10 / baud_rate 理想情况下传输10位需要的时间 UART error( ( t_true t_ideal ) / t_ideal )100%,99,(4)串行口的自动流控制功能 UART0和UART1不仅有完整的握手信号,而且有自动流控制功能,在寄存器UMCONn中设置实现。自动流控制是利用信号nRTS、nCTS来实现的。在接收数据时,只要接收FIFO中有两个空字节就会使nRTS有效,使对方发送数据;在发送数据时,只要nCTS有效,就会发送数据。其实现过程如下图所示。 nRTS:请求对方发送 nCTS:清除请求发送,100,(5)使用FIFO进行收发 主要是通过对FIFO状态寄存器UFSTATn的查询,确定进行收发。 使用FIFO进行发送: (1)选择发送模式(中断或者DMA模式) (2)查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn0给出,该位为1,则有请求,再查询FIFO状态寄存器UFSTATn的数据满状态位是否为1,如果不是1,可以向发送缓冲寄存器UTXHn写入发送的数据。上面二者有一个或者两个都不满足,则不发送数据。 使用FIFO进行接收(请求发送): (1)选择接收模式(中断或者DMA模式) (2)请求发送。先要查询FIFO状态寄存器UFSTATn的数据满状态位是否为1,如果不是1,则可以向对方发出“请求发送信号”,对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号;如果UFSTATn的数据满状态位是1,则不能够请求发送数据。,101,(6)不使用FIFO进行收发 主要是通过对收/发状态寄存器UTRSTATn的查询,确定进行收发。 数据发送: (1)选择发送模式(中断或者DMA模式) (2)查询对方是否有请求发送要求,由MODEM状态寄存器UMSTATn0给出,该位为1,则有请求,再查询发送/接收状态寄存器UTRSTATn1的“发送缓冲器空”状态位是否为1,如果是1,可以向发送缓冲寄存器UTXHn写入发送的数据。 数据接收(请求发送): (1)选择接收模式(中断或者DMA模式) (2)请求发送。先要查询发送/接收状态寄存器UTRSTATn0的接收缓冲器“数据就绪状态位”是否为1,如果是1,需要先读取数据,然后再请求对方发送数据,方法是对MODEM控制寄存器MCONn中的请求发送信号产生位置1,使UARTn发出nRTS信号。如果UFSTATn的数据满状态位是1,则不能够请求发送数据,102,(7)中断或DMA请求 每个UART都有3类、7种事件产生中断请求或者DMA请求。 7种中断请求事件是:溢出错误、奇偶校验错误、帧格式错误、传输中断信号、接收缓冲器数据就绪、发送缓冲器空、发送移位器空。 它们可以分成3类:错误中断请求、接收中断请求、发送中断请求。 接收中断: 非FIFO模式:当接收缓冲寄存器收到数据后,产生中断请求。 FIFO模式:Rx FIFO中数据的数目达到了触发中断的水平,或者超时(在三帧时间内未收到任何数据),均产生中断请求。 发送中断: 非FIFO模式:当发送缓冲器空时,产生中断请求。 FIFO模式:Tx FIFO中数据的数目达到了触发中断的水平。,103,错误中断: 一共有4种错误中断:溢出错误、奇偶检验错误、帧格式错误、传输中断信号错误。 说明: (1)对于“奇偶校验错误、帧格式错误、传输中断信号错误”中断,在数据接收时就产生了,但是在数据接收产生时并非出现中断请求,而是在读出错误数据时才出现中断请求。 (2)如果设置的是DMA模式,而不是中断请求模式,对于以上所出现的中断请求,应该是DMA请求。 (3)传输中断信号定义:在超出一帧的时间内,全部输出低电平。,104,(8)循环检测模式 S3C2410X的每一个UART都提供有检测功能,它是一种数据循环流动的自发、自收方式,数据从发送缓冲器传送到TXD,数据不经过引脚输出,在内部将数据传到接收引脚RXD,再传输到接收缓冲器。,105,三、UART专用寄存器 3个UART,每个都有11个专用寄存器,共31个寄存器(UART2无MODEM寄存器),NEXT,106,1、线路控制寄存器(ULCON) back,107,2、控制寄存器(UCON),108,2、控制寄存器(UCON),back,109,3、FIFO控制寄存器(UFCON),110,3、FIFO控制寄存器,back,111,4、MODEM控制寄存器(UMCON),back,112,5、发送/接收状态寄存器(UTRSTAT),back,113,6、Rx错误状态寄存器(UERSTAT),back,114,7、FIFO状态寄存器(UFSTAT),back,115,8、MODEM状态寄存器(UMSTAT),back,116,9、发送缓冲寄存器(UTxH),back,117,10、接收缓冲寄存器(URxH),back,118,11、波特率除数寄存器(UBRDIV),back,119,四、UART应用举例 例1:编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。设Pclk为50MHz。(提示:主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行数据收发,标签清除中断请求标志和中断服务标志) 解: (1)计算波特率除数: 由公式: UBRDIVn=(int)(CLK/( f B*16) 1 这里: Pclk=50MHz, f B = 125kb/s 计算得: UBRDIVn=25 -1=24 (2)UART2控制寄存器: 线路控制寄存器: ULCON2=0 0 000 0 11=0x03 含义:非红外、不校验、 1个停止位、 8个数据位,120,控制寄存器: UCON2=0b 0 0 0 0 0 0 0 01 01=0x05 含义:选Pclk、发/收中断脉冲请求、关闭接收超时中断、允许接收错误中断、不回送、不发送暂停信号、发/收用中断方式。 FIFO控制寄存器:UFCON2=0b 10 01 0 0 0 1=0x91 含义:发/收FIFO选8字节触发、保留位为0、不复位发/收FIFO、使能FIFO。 (3)引脚配置 需要设置TxD2、RxD2,它们对应GPH6、GPH7,在GPH配置寄存器GPHCON中的位置为: 0b 1 0 1 0 方法:GPHCON= GPHCON&(0xF12)|(0xA12),121,(4)中断寄存器设置 中断模式寄存器:INTMOD&=(115) INT_UART2位于第15位,将UART2设置为IRQ中断 中断屏蔽寄存器:INTMSK&=(115) 中断优先级寄存器PRIORITY: 不设置,使用固定优先级。 子中断屏蔽寄存器:INTSUBMSK&=(76) INT_ERR2、INT_TXD2、INT_RXD2位于子中断屏蔽寄存器中的8、7、6位。 (5)在中断服务程序中对寄存器的操作 清除中断标志寄存器相应位: SRCPND&=(115) 清除中断服务寄存器相应位: INTPND&=(115),122,例2:S3C2410的UART 的应用,1.电路接口和I/O口设置 S3C2410的串行应用接口占用H端口中的PH7,PH6,PH5,PH4,PH3,PH2多功能

温馨提示

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

评论

0/150

提交评论