嵌入式系统设计与开发 部件工作原理与开发实例PPT课件_第1页
嵌入式系统设计与开发 部件工作原理与开发实例PPT课件_第2页
嵌入式系统设计与开发 部件工作原理与开发实例PPT课件_第3页
嵌入式系统设计与开发 部件工作原理与开发实例PPT课件_第4页
嵌入式系统设计与开发 部件工作原理与开发实例PPT课件_第5页
已阅读5页,还剩220页未读 继续免费阅读

下载本文档

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

文档简介

1、7.1 7.1 Flash 存储器 S3C44B0X自身不具有ROM,因此必须外接ROM器件来存储掉电后仍需要保存的代码和数据。闪速存储器(flash memory)具有非易失性,并且可轻易擦写。 Flash ROM采用标准总线接口与处理器交互,读取不需要任何特殊的代码,但需要首先在硬件上设定OMl0和大/小端,以便使处理器知道Flash ROM的数据长度和位序。 作为代码存储器,Flash ROM映射在处理器的Bank0地址空间(从系统地址0 x00000000开始)。系统上电复位时,处理器就自动从0 x00000000地址处开始取得指令运行,因此Flash ROM中要存放系统启动代码,这些

2、代码必须在系统上电时完成一系列初始化的工作。经过这些初始化,系统才可以正确启动并开始工作。 7.1.1 概述第1页/共225页7.1.2 存储器初始化 初始化存储器系统的编程对象是系统的存储器控制器。存储器控制器并不是ARM内核的一部分,不同的系统其设计不尽相同,所以应该针对具体要求来完成这部分的程序设计。 1.存储器类型和时序配置通常Flash和SRAM同属于静态存储器类型,可以合用同一个存储器端口,而DRAM因为动态刷新和地址线复用等特性,通常配有专用的存储器端口。因为一般系统运行的速度瓶颈都在于存储器访问,所以存储器访问时序应尽可能地快,但同时又要考虑由此带来的稳定性问题,所以只有根据具

3、体选定的芯片,进行多次的测试之后,才能确定最佳的时序配置。 第2页/共225页2. 存储器地址分布 一种典型的情况是启动ROM的地址重映射(remap)。 当一个系统上电后程序将自动从0地址处开始执行,因此在系统的初始状态,必须保证在0地址处存在正确的代码,即要求0地址开始处的存储器是非易失性的ROM或Flash等。但是因为ROM或Flash的访问速度相对较慢,每次中断发生后都要从读取ROM或Flash上面的向量表开始,影响了中断响应速度。因此有的系统便提供一种灵活的地址重映射方法,可以把0地址重新映射到RAM中去。在这种地址映射的变化过程当中,程序员需要仔细考虑的是程序的执行流程而不能被这种

4、变化所打断。 第3页/共225页 系统上电后从Flash内的0地址开始执行,启动代码位于地址0 x100开始的空间,当执行到地址0 x200时,完成了一次地址的重映射,把原来0开始的地址空间由Flash转给了RAM。接下去执行的指令(这里为简化起见,忽略流水线指令预取的模型)将来自从0 x204开始的RAM空间。如果预先没有对RAM内容进行正确地设置,则里面的数据都是随机的,这样处理器在执行完0 x200地址处的指令后,再往下取指执行就会出错。解决的方法就是要使RAM在使用之前准备好正确的内容,包括开头的向量表部分。 第4页/共225页启动ROM地址重映射对程序执行流程的影响 RAM rema

5、p 0 x0204 0 x0200 Vector Table Flash 0 x0200 0 x0100 (Reset_Handler) 0 x0000 B Reset_Handler (remap) (boot code) 第5页/共225页7.1.3 Flash 的调试和程序固化 1.Flash调试 当由于硬件资源限制,或者需要观察应用程序在实际硬件环境中运行的情况时,可以把在RAM调试通过的应用程序Bin代码文件烧写到Flash 芯片中进行调试。烧写到Flash芯片的程序运行不能得到正确结果或看要观察程序在Flash中的运行情况,这些都需要进行Flash调试工作。 第6页/共225页 程

6、序在Flash中调试与在RAM中调试工程配置不同:1)调试选项中不需要执行脚本文件,该工作在启动 文件中完成,需要将连接后行为选项改为无。2)调试过程也有所不同,连接仿真器后,无需再执 行下载程序操作,如果要从启动程序的入口开始 调试程序,必须先执行复位命令,此时程序将停 在零地址处。 第7页/共225页2. 程序固化 在RAM中调试通过的程序与最终固化到Flash中的程序有所区别,用户需要在汇编器的预定义选项中设置编译定义符号,或者直接在初始化文件中增加定义编译项,由启动文件自己完成存储区的重映射而不是由命令脚本完成。 在链接器的链接文件中选择flash.ld,该链接文件和启动文件配合完成最

7、初下载到Flash中的数据段的工作。 完成改动后,重新编译程序。然后使用Elf to Bin工具将.elf文件转换成二进制指令格式文件.bin。再利用Flash Programmer工具将.bin下载到Flash中。 第8页/共225页7.1.4 Flash 器件SST39VF160的应用 1.SST39VFl60介绍 SST39VF160是由SST公司推出的容量为1MB16倍的CMOS多用途Flash ROM。 第9页/共225页SST39VF160的引脚分布图 1 48 2 47 3 46 4 45 5 44 6 43 7 42 8 41 9 40 10 39 11 38 12 37 13

8、 36 14 35 15 34 16 33 17 32 18 31 19 30 20 29 21 28 22 27 23 26 24 25 A16 NC VSS DQ15 DQ7 DQ14 DQ6 DQ13 DQ5 DQ12 DQ4 VDD DQ11 DQ3 DQ10 DQ2 DQ9 DQ1 DQ8 DQ0 OE VSS CE A0 A15 A14 A13 A12 A11 A10 A9 A8 A19 NC WE NC NC NC NC A18 A17 A7 A6 A5 A4 A3 A2 A1 SST39VF160 第10页/共225页SST39VFl60引脚功能描述 引脚符号 引 脚 名 称

9、功 能 描 述 A19A0 地址输入提供存储器地址。扇区擦除中A19A11地址线用来选择擦除哪一个扇区。在块擦除中A19A15地址线用来选择擦除哪一个块 DQl5DQ0数据输入输出 在读周期输出数据,在写周期接收写入的数据。在写周期中,数据内部锁存。在 或 为高电平时,数据线输入为高阻态 片选使能 低电平有效的片选线 输出使能 低电平有效的数据输出使能线 写使能 控制写操作 VDD 电源 为SST39VFl60提供2.73.6 V电源 VSS 地 NC 浮空 不连接脚 CEOEWEOECE第11页/共225页(1)读操作 SST39VFl60的读操作是由CE和OE信号线控制的。当两者都为低时,

10、处理器就可以从SST39VFl60的输出口读取数据。 CE是SST39VFl60的片选线,当CE为高,芯片未被选中。OE是输出使能信号线。当CE或OE中某一个为高时,SST39VFl60的数据线为高阻态。第12页/共225页SST39VFl60读操作时序图 19-0ADDRESS ATTTTTTTTRCAATOHZCHZHIGH-ZDATA VALIDOHDATA VALIDCLZHIGH-ZIHDQ15-0WE#OE#CE#CEOEOLZV ADDRESS A TOE TOLZ TOHZ TOHZ TOH DQ 第13页/共225页读时序参数 符 号 描 述 SST39VFl6070 SST

11、39VFl6090 最小值 最大值 最小值 最大值 tRctcEtAAtOEtCLZtOLZtCHZtOHZtOH 整个读周期时间读周期中芯片使能时间地址操作时间输出数据使能时间从变低到动态输出时间从变低到动态输出时间从变高到数据线高阻态时间从变高到数据线高阻态时间地址改变时输出数据保持时间 70000 707035202090000 9090453030第14页/共225页(2)字写入操作 SST39VFl60的写操作主要是以一个字接一个字的方式进行写入的。在写入之前,扇区中如果有数据,则必须首先进行充分地擦除。写操作分3步进行:第1步,送出“软件数据保护”的3字节;第2步,送出地址和数据;

12、第3步,内部写入处理阶段,这个阶段在第4个WE或CE的上升沿时被初始化。被初始化后,内部写入处理将在20s时间内完成。在内部写入阶段,任何指令都将被忽略。 第15页/共225页SST39VF160的字写入流程图 开 始 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 送出写入地址 和写入数据 载入数据:XXA0h 地 址:5555h 等待内容写入结束 写入结束 第16页/共225页通过 控制的字写入时序图 INTERNAL PROGRAM OPERATION STARTSWPH15-019-0WEOEDQADDRESS ACESW0XXAATASTWPAHT

13、T5555SW1XX55TCSXXA0SW2CHT2AAA5555(ADDR/DATA)WORDDATADSTADDRTDH399 ILL F04.3BPTADDRESS A 190 DQ 150 SW0 SW1 SW2 WORD (ADDR/DATA) INTERNAL PROGRAM OPERATION STARTS TBP TDH TDS TCH TCS TAS TWPH TWPH TWP WE第17页/共225页通过 控制的字写入时序图 WEOECEADDRESS A19-05555TT2AAA5555AHADDRDHTTDSCSTTCHTASTXXAASW0XX55SW1SW2XXA

14、0DATAWORD(ADDR/DATA)399 ILL F04.3TINTERNAL PROGRAM OPERATION STARTSDQ15-0BPCPCPHCE第18页/共225页(3)整片擦除操作 扇区或块擦除操作允许SST39VFl60以一个扇区接一个扇区,或一个块接一个块地进行擦除。扇区或块的地址在WE的第6个下降沿处锁存,指令字节(30h或50h)在的第6个上升沿处锁存,之后,开始内部擦除操作。可以采用Data Polling bit或Toggle bit的方法来判定内部擦除是否结束。 SST39VFl60还提供一个整片擦除的功能,允许使用者一次性快速擦除整个存储器(存储阵列每个单

15、位都为1)。整片擦除同样通过执行6字节的指令序列来进行,6字节指令序列中包括片擦除指令(10h)和字节序列最后的地址5555h。 第19页/共225页SST39VF160的擦除操作 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 等待 tSE 时间 载入数据:XX80h 地 址:5555h 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 载入数据:XX30h 地 址:SAn 片擦除至 FFFFh 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 等待 tSCE 时间 载入数据:XX80h

16、地 址:5555h 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 载入数据:XX10h 地 址:5555h 片擦除至 FFFFh 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 等待 tSE 时间 载入数据:XX80h 地 址:5555h 载入数据:XXAAh 地 址:5555h 载入数据:XX55h 地 址:2AAAh 载入数据:XX50h 地 址:BAn 片擦除至 FFFFh 片擦除指令序列 扇区擦除指令序列 块擦除指令序列 第20页/共225页2. 应用(1)ST39VF160的擦除 SST39VF160具有3种擦

17、除方式:整片擦除、 扇区擦除和块擦除。 扇区擦除子程序的主体: void SST39VF160_SectorErase(INT32U SAaddr) Writeflash(0 x5555,0 xAA); Writeflash(0 x2AAA,0 x55); Writeflash(0 x5555,0 x80); Writeflash(0 x5555,0 xAA); Writeflash(0 x2AAA,0 x55); Writeflash(SAaddr,0 x30); Waitfor_endofprg(); 第21页/共225页(2)ST39VF160的写入 整片擦除之后,就能够在Flash R

18、OM的任意地址中 进行写入操作了。 写入子程序的主体 : Int SST39VF160_WordProg(unsigned long addr,unsigned int dat) Writeflash(0 x5555,0 xAA); Writeflash(0 x2AAA,0 x55); Writeflash(0 x5555,0 xA0); Writeflash(addr,dat); Waitfor_endofprg(); 第22页/共225页7.2 SDRAM存储器7.2.1 概述 随机存取存储器RAM(random access memory)是易失性的存储器,在掉电以后数据立即消失。 与R

19、OM器件不同的是,它的随机读写速度非常快,写入数据之前也不需要进行擦除 。 常用的RAM分为SRAM(静态RAM)和DRAM(动态RAM)两种类型 。 S3C44B0X芯片本身提供了与DRAM和SDRAM进行直接接口的解决方案,因此,不需要通过编程来实现它们所需的接口时序,而只需对与存储器控制器相关的寄存器进行适当配置。这个配置工作一般在启动代码中完成,系统在每次上电后但还未开始执行C语言程序之前,配置好SDRAM的特性参数,然后再进入C程序运行。 第23页/共225页7.2.2 SRAM器件的结构特点 一个SRAM中的位单元通常由46只晶体管组成,当这个位单元被赋予0或1的状态之后,它会保持

20、这个状态直到下次被赋予新的状态,或者断电之后才会更改或消失。SRAM的速度相对比较快,而且比较省电,但是存储1位的信息需要46只晶体管,制造成本较高。第24页/共225页7.2.3 DRAM器件的结构特点 DRAM与SRAM不同,存储一个位的信息只需要1只晶体管,但是需要周期性地充电,才能使保存的信息不消失。 DRAM的一些资料显示,内存至少要每64ms刷新一次,这也就意味着内存有1%的时间要用来刷新。因为读取操作会破坏内存中的电荷,因此,内存不但要每64 ms刷新一次,而且每次读操作之后还要刷新一次,这样就增加了存取操作的周期。 DRAM的存取速度没有SRAM快,但是DRAM更容易做成大容量

21、的RAM。一般的嵌入式系统中,主存储器采用DRAM,而快速存储器(cache memory)则采用SRAM。DRAM的优点是制造成本比SRAM低得多。 第25页/共225页 DRAM结构中相对于SRAM多了两个部分:一个是由 (行地址脉冲选通器)引脚控制的行地址锁存器(row address latch),另一个是由(列地址脉冲选通器)引脚控制的列地址锁存器(column address latch)。 第26页/共225页DRAM的存储位单元结构 晶体管 行线 列线 电容 第27页/共225页DRAM中存储单元的内部结构 地址总线 数据总线 列地址锁存 列地址解码 读出更新放大器 行址存地锁

22、 行址码地解 CAS RAS 第28页/共225页DRAM读取过程按以下步骤进行:1)处理器通过地址总线将行地址传输到DRAM的地址引脚。2)引脚被激活,这样,行地址被传送到行地址锁存器中。3)行地址解码器根据接收到的数据选择相应的行。4)引脚被确定不被激活,所以DRAM知道它不会进行写入操 作。5)处理器通过地址总线将列地址传输到DRAM的地址引脚。6)引脚被激活,这样列地址被传送到列地址锁存器中。7)引脚同样还具有引脚的功能,此时Dout引脚知道需要向外 输出数据。8)和都失效,这样就可以进行下一个周期的数据操作了。 第29页/共225页7.2.4 SDRAM器件的构成原理和应用特点 SD

23、RAM的存储位单元的基本原理同DRAM基本一样,但是这些存储位单元的组织和控制与DRAM却有很大的差别。 SDRAM是多Bank结构,大大提高了存储器的访问速度。 为了实现这个功能,SDRAM需要增加对多个Bank的管理,实现控制其中的Bank进行预充电。在一个具有两个以上Bank的SDRAM中,一般会多一根叫做BAn的引脚,用来实现在多个Bank之间的选择。第30页/共225页7.2.5 SDRAM器件HY57V641620HG简介 HY57V641620HG 是一个容量为64Mb的同步动态随机存储器,能很好地适应主存储器的高密度和高带宽的数据传输性能。其存储空间组织方式是:1M16bit4

24、Bank。 HY57V641620HG提供的完全动态操作涉及时钟的上升沿,所有的输入和输出都是在时钟的上升沿触发的。数据通路被做成内部装管道线以获得非常高的带宽。全部输入和输出电压电平都与LVTTL相兼容。 第31页/共225页HY57V641620HG管脚图 VSS DQ15 VSSQ DQ14 DQ13 VDDQ DQ12 DQ11 VSSQ DQ10 DQ9 VDDQ DQ8 VSS NC UDQM CLK CKE NC A11 A9 A8 A7 A6 A5 A4 VSS 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 3

25、5 34 33 32 31 30 29 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 VDD DQ0 VDDQ DQ1 DQ2 VSSQ DQ3 DQ4 VDDQ DQ5 DQ6 VSSQ DQ7 VDD LDQM WE CAS RAS CS BA0 BA1 A10/AP A0 A1 A2 A3 VDD 54pin TSOP 11 400mil875mil 0.8mm pin pitch 第32页/共225页主要特性: 单一3.30.3V电源。 更新和自我更新。 全部引脚都与LVTTL接口相

26、兼容。 4096更新循环/64ms。 针距0.88毫米的JEDEC标准,400密耳54引脚针薄型小尺寸封装。 可编程序的脉冲长度和类型:-1、2、4、8或整页连续脉冲,-1、2、4和8为插入式脉冲。 所有输入和输出都是正边沿触发的。 可编程的CAS编码潜伏23周期。 具有通过UDQM或LDQM来隐藏数据的功能。 4个Bank运行。 第33页/共225页HY57V641620HG引脚描述 引 脚 引 脚 名 称 描 述 CLK 时钟 系统时钟输入。其他输入被登记到SDRAM的 CLK上升沿上 CKE 时钟控制 时钟使能。当CKE为低时,SDRAM可能是进入掉电模式、时钟挂起模式或自刷新模式 CS

27、 片选择 除CLK、CKE和DQM之外,使全部输入有效或无效 BA0,BA1 Bank地址 Bank选择地址。在RAS 活跃期间选择Bank激活,在CAS活跃期间选择Bank可读写 A0A11 地址 行地址: RA0RA11,列地址: CA0CA7自动预充电标记: A10 , , 行地址滤波,列地址滤波,读写 、 和 功能由真值表决定 RAS CASWERASCASWE第34页/共225页引 脚 引 脚 名 称 描 述 LDQM, UDQM 数据输入/输出处理 控制I/O缓存的高地址和低地址,输入/输出屏蔽。在阅读模式中控制输出缓冲和在写入模式中处理输入数据 DQ0DQ15 数据输入/输出 多

28、路传输数据输入/输出引脚 VDD/VSS 电源/接地 为内部的电路和输入缓冲供电的电源 VDDQ /VSSQ 数据输出 为输出缓冲供电 NC 无连接 无连接 HY57V641620HG引脚描述 第35页/共225页7.2.6 SDRAM应用编程 由于S3C44B0X内部的存储控制器部件提供了专门与SDRAM的器件的控制信号线,因此,对SDRAM的读和写都不需要特殊编程操作,只需要根据所选择的存储器的特性,在系统初始化时对S3C44B0X相关的寄存器进行设置就可以了。 第36页/共225页实验参考程序/*名称: sRWramtest*功能: 使用汇编语言读/写已初始化的RAM区*/sRWramt

29、est: LDR r2,=0 x0C010000 /*字长读*/ LDR r3,=0 x55AA55AA STR r3,r2 /*字长写*/ LDR r2,=0 x0C010004 LDRH r3,r2 /*半字读*/ LDR r3,=0 x55AA STRH r3,r2,#2 /*半字写*/ STRH r3,r2 LDR r2,=0 x0C010008 LDRB r3,=0 xAA /*字节读*/ STRB r3,r2,#1 /*字节写*/ LDRB r3,=0 x55 STRB r3,r2,#1 LDRB r3,=0 xAA STRB r3,r2,#1 LDRB r3,=0 x55 STR

30、B r3,r2第37页/共225页/*名称: cRWramtest *功能: 使用高级语言读/写RAM区*/RAM 访问示例#define RWram (*(unsigned long * )0 x0C10200)void cRWramtest(void)unsigned long *ptr=0 x0C010200; /R/W RAMunsigned short *ptrh=0 x0C010200; /R/W RAMunsigned char *ptrb=0 x0C010200; /R/W RAMchar i;unsigned char tmpb;unsigned short tmph;uns

31、igned long tmpw;*ptr=0 xAA55AA;tmpw=*ptr; /字长读*ptrh=tmph+1; /字长写tmph=*ptrh; /半字读*ptrh=tmph+1; /半字写tmpb=*ptrb; /字节读*ptrb=tmpb+1 /字节写第38页/共225页7.3 通用I/O接口 7.3.1 S3C44B0X的I/O端口 S3C44B0X具有71个多功能I/O,这些I/O的应用是S3C44B0X处理器的基础应用,它们分为7组I/O端口: 2个9位I/O端口(端口E和F)。 2个8位I/O端口(端口D和G)。 1个16位I/O端口(端口C)。 1个10位输出端口(端口A)

32、。 1个11位输出端口(端口B)。第39页/共225页端口A引脚定义 端 口 A 引 脚 功 能 端 口 A 引 脚 功 能 端 口 A 引 脚 功 能 PA0 ADDR0 PA4 ADDRl9 PA8 ADDR23 PAl ADDRl6 PA5 ADDR20 PA9 OUTPUT 2 on - all on - 2 off - 1 off */leds_off();Delay(1000);led1_on();Delay(1000);led1_off();led2_on();Delay(1000);leds_on();Delay(1000);led2_off();Delay(1000);led

33、1_off();第53页/共225页/* name:leds_on* func:all leds on*/void leds_on() Led_Display(0 x3);/* name:leds_off* func:all leds off*/void leds_off()Led_Display(0 x0);第54页/共225页/* name:led1_on* func:led 1 on*/void led1_on()led_state = led_state | 0 x1;Led_Display(led_state);/* name:led1_off* func:led 1 off*/vo

34、id led1_off()led_state = led_state & 0 xfe;Led_Display(led_state);第55页/共225页/* name:Led_Display* func:Led Display control function* para:LedStatus - leds status*/void Led_Display(int LedStatus)led_state = LedStatus;if(LedStatus&0 x01)=0 x01)rPDATB=rPDATB&0 x5ff;elserPDATB=rPDATB|0 x200;i

35、f(LedStatus&0 x02)=0 x02)rPDATB=rPDATB&0 x3ff;elserPDATB=rPDATB|0 x400;第56页/共225页7.4 串行通信接口 7.4.1 概述 串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。采用的通信协议有两类:异步协议和同步协议。随着大规模集成电路技术的发展,通用的同步UART和异步UART接口芯片种类越来越多,采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单,从而减少成本和体积,降低了设计开发的风险和难度。 第57页/共225页 UART(un

36、iversal asynchronous receiver/transmitter)通用异步收发器是用于计算机与串行设备的接口。它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其他使用RS-232C接口的串行设备通信了。S3C44B0X内部集成的UART单元提供两个独立的异步串行I/O端口,也就是通常所说的串口。在这里,串口不仅可以用来与外部设备进行数据通信,还可以用来观察系统的运行状况。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流;将计算机外部传来的串行数据转换为字节,供给计算机内部使用并行数据的器件;在输出的串行数据

37、流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验;在输出数据流中加入启/停标记,并从接收数据流中删除启/停标记;处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备);处理计算机与外部串行设备的同步管理问题。 第58页/共225页7.4.2 S3C44B0X的串行通信单元 S3C44B0X的串行通信(UART)单元提供两个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下工作。它们支持的最高波特率为115.2kb/s。每个UART通道包含2个16位FIFO分别提供给接收和发送。S3C44B0X的UART可以进行以下参数的设置:可编程的波特率、红外收/发模式、1或2个停止位、5

38、位/6位/7位/8位数据宽度和奇偶校验。 每个UART模块包含以下几个部件:波特率发生器、发送器、接收器和控制单元。波特率发生器以MCLK作为时钟源。发送器和接收器包含16字节的FIFO和移位寄存器。要被发送的数据首先被写入FIFO,然后被复制到发送移位寄存器中,最后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从数据接收端口(RxDn)依次被移位输入到移位寄存器,然后被复制到FIFO中。第59页/共225页UART的特性如下: RxD0、TxD0、RxDl和TxDl可以以中断模式或DMA模式工作。 UART通道0符合IRDA 1.0要求,且具有16字节的FIFO。 UART通道

39、1符合IRDA 1.0要求,且具有16字节的FIFO。 支持收发时的握手模式。 第60页/共225页7.4.3 UART操作 1. 数据发送 数据发送的帧格式是可编程的,包括一个起始位、58个数据位、一个可选的奇偶位和12个停止位,这些都可以通过线控制寄存器(UCONn)来设置。发送器也能够产生发送中止条件。中止条件迫使串口输出保持在逻辑0状态,这种状态保持超过一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,再通过这个全0状态将中止信号发送给对方。中止信号发送之后,传送数据将持续地放入到输出FIFO中(在不使用FIFO模式下,将被放入输出保持寄存器)。第61页/共225页2. 数据接

40、收 与发送一样,接收的数据帧格式同样是可编程的,包括一个起始位、58个数据位、一个可选的奇偶校验位和12个停止位,这些都可以通过线控制寄存器来设置。接收器还可以检测到溢出错误、奇偶校验错误、帧错误和中止状况,每种情况下都会将一个错误标志置位,检测到的各种错误描述如下:溢出错误表示新的数据已经覆盖了旧的数据,因为旧的数据没有及时被读入。奇偶校验错误表示接收器检测到了意料之外的奇偶校验结果。帧错误表示接收到的数据没有有效的停止位。中止状况表示RxDn的输入被保持为0状态的时间超过了一个帧传输的时间。在FIFO模式下,接收FIFO不应为空,但当接收器在3个字时间内都没有接收到任何数据时,就认为发生了

41、接收超时状况。第62页/共225页3.自动流控制 S3C44B0X的UART通过nRTS和nCTS信号支持自动流控制(AFC),在这种情况下必须是UART与UART连接。如果用户将UART连接到调制解调器,就应该在UMCONn寄存器中禁止自动流控制位,并通过软件控制nRTS。在AFC中,nRTS由接收器的接收情况来控制,nCTS则控制了发送器的工作。UART发送器在nCTS信号被置1的时候发送FIFO中的数据(在AFC中,nCTS意味着对方UART的FIFO已经准备好接收数据)。在UART接收数据时,如果它的接收FIFO中还有多于2个字节的剩余空间就必须将nRTS置1,以便告诉对方“接收准备好

42、”;当接收FIFO的剩余空间少于1字节时,必须将nRTS清0,说明“不能再接收”。 第63页/共225页UART AFC接口 UARTB RxD nRTS UARTA TxD nCTS UARTB TxD nCTS UARTA RxD nRTS 第64页/共225页4.非自动流控制非自动流控制是指通过软件nRTS和nCTS。(1)接收操作步骤 1)选择接收模式(中断或BDMA模式)。 2)检查UFSTATn寄存器中接收FIFO计数器的值。如果值小于15,用 户必须设置UMCONn第0位的值为1(即激活nRTS);如果它等于 或大于15,用户必须设置该位的值为0(即失活Nrts)。 3)重复第2

43、)步。(2)发送操作步骤 1)选择发送模式(中断或BDMA模式)。 2)检查UMSTATn第0位的值,如果为1(nCTS被激活),用户就可以 写数据到输出缓冲区或输出数据到FIFO寄存器中。第65页/共225页5. 调制解调器接口 如果用户要连接到调制解调器接口,就需要用nRTS、nCTS、nDSR、nDTR、DCD和nRI信号。在这种情况下,用户可以使用其他I/O口由软件控制这些信号,因为AFC是不支持RS-232C接口的。第66页/共225页6.中断/DMA请求产生器 S3C44B0X的每个UART都有7个状态信号:接收FIFO/缓冲区数据准备好、发送FIFO/缓冲区空、发送移位寄存器空、

44、溢出错误、奇偶校验错误、帧错误和中止,所有这些状态都由对应的UART状态寄存器(UTRSTATn/UERSTATn)中的相应位来表现。 当接收器要将接收移位寄存器的数据送到接收FIFO,它会激活接收FIFO满状态信号,如果控制寄存器中的接收模式选为中断模式,就会引发接收中断。 当发送器从发送FIFO中取出数据送到发送移位寄存器,那么FIFO空状态信号将会被激活。如果控制寄存器中的发送模式选为中断模式,就会引发发送中断。 如果接收/发送模式被选为DMA模式,“接收FIFO满”和“发送FIFO空”状态信号同样可以产生DMA请求信号。第67页/共225页与FIFO有关的中断 类 型 FIFO 类 型

45、 非FIFO模式 Rx中断 每当接收数据达到接收FIFO触发的水平,就产生接收中断如果FIFO非空且连续3个字时间没有接收到任何数据,就产生超时中断 每当接收数据满,接收移位寄存器将产生一个中断 Tx中断 每当发送数据达到发送FIFO触发的水平,就产生发送中断 每当发送数据空,发送保持寄存器将产生一个中断 错误中断 帧错误、奇偶校验错误和被检测到并按字节接收的中止信号,都将产生错误中断当达到接收FIFO的顶部,就会产生溢出错误中断 所有错误都会立即产生一个错误中断。但是如果另一个错误同时发生,只有一个中断会产生 第68页/共225页7. UART错误状态FIFO 除了接收FIFO寄存器之外,U

46、ART还具有一个状态FIFO。状态FIFO中表示在FIFO寄存器中,哪一个数据被毫无 错误地接收。 第69页/共225页UART接收字符示例图 状态 FIFO E D C B A URXHn 错误状态发生单元 中断错误 奇偶校验错误 帧错误 接收 FIFO 第70页/共225页8. 波特率发生器 每个UART的波特率发生器都为传输提供了串行移位时钟。波特率发生器的时钟源可以通过S3C44B0X的内部系统时钟来选择。波特率时钟由通过时钟源的16分频及一个由UART波特率除数寄存器(UBRDIVn)指定的16位除数决定。UBRDIVn的值可以按照下式确定:UBRDIVn (取整)(MCLK/(波特

47、率16)-1除数的范围为12161。例如,如果波特率为115 200b/s,且系统主频(MCLK)为64MHz,则UBRDIVn的值为:UBRDIVn=(取整)(4 000 000/(11520016)-1第71页/共225页9. 回送模式 S3C44B0X的UART提供一个测试模式,即回送模式。在这种模式下,发送出的数据会立即被接收,这一特性用于校验运行处理器内部发送和接收通道的功能。这种模式可以通过设置UART控制寄存器(UCONn)中的回送位来实现。第72页/共225页10. 红外通信模式 S3C44B0X的UART模块支持红外线(IR)发送和接收,可以通过设置UART控制寄存器(ULC

48、ONn)中的红外模式位来选择这一模式。 在IR发送模式下,发送阶段是通过正常串行发送占空比3/16的脉冲波进行调制(当传送的数据位为0值);在IR接收模式下,接收必须通过检测3/16脉冲波来识别0值。 第73页/共225页通常情况下传输帧的时序 数据位 传输帧 起始位 停止位 0 1 0 1 0 0 1 1 0 1 第74页/共225页(a)红外线接收模式时序图(b)红外线发送模式时序图 数据位 IR 接收帧 起始位 停止位 0 1 0 1 0 0 1 1 0 1 数据位 传输帧 起始位 停止位 0 1 0 1 0 0 1 1 0 1 一位 时间 一位时间 的 3/16 第75页/共225页7

49、.4.4 UART寄存器 寄存器名称中的n表示0或1,例如ULCONn对应串口0为ULCON0,对应串口1为ULCONl。1. UART线控制寄存器 线控制寄存器(ULCONn),它的作用是用来规定传输帧的格式。 第76页/共225页ULCONn 位 描 述 初 始 状 态 7 保留 0 红外线模式 6 是否采用红外通信模式0:正常模式操作 1:红外收发模式 0 奇偶校验模式 53 奇偶校验位设置 0XX:无校验位 100:奇校验 10l:偶校验 110:校验位强制检测为1111:校验位强制检测为0 000 停止位的数量 2 每帧中停止位的个数0:每帧有一位停止位1:每帧有两位停止位 0 数据

50、位长度 10 每帧中数据位的个数00:5位 01:6位10:7位 11:8位 00 线控制寄存器位定义 第77页/共225页2. UART控制寄存器UCONn 位 描 述 初始化状态 发送中断类型 9 中断请求类型0:脉冲(在发送缓冲区变空时立即引发中断)1:电平(在发送缓冲区为空时引发中断) 0 接收中断类型 8 中断请求类型0:脉冲(接收缓冲区接收到数据时立即引发中断)1:电平(接收缓冲区正在接收数据时引发中断) 0 接收超时中断使能 7 在UART的FIFO使能的情况下,使能禁止接收超时中断0:禁止 1:使能 0 接收错误状态中断使能 6 使能UART在接收操作中发生错误时的错误中断响应

51、0:不产生错误状态中断;1:产生错误状态中断 0 UART控制寄存器位定义 第78页/共225页UCONn 位描 述 初始化状态 回送模式 5设置该位,UART自动进入回送模式0:正常操作 1:回送模式 0发送中止信号4设置该位,将引发UART在一帧时间内发送中止信号,该信号发送完后,该位自动被清除0:正常操作 1:发送中止信号 0发送模式32 这几位决定当前哪个功能项能够向UART发送保持寄存器写入发送数据00:禁止 01:中断请求或轮流检测模式10:BDMA0请求(仅对UART0)11:BDMAl请求(仅对UARTl)00 接收模式10 这几位决定当前哪个功能项能够从UART接收保持寄存器

52、中读出接收数据00:禁止 01:中断请求或轮流检测模式10:BDMA0请求(仅对UART0)00 UART控制寄存器位定义 第79页/共225页3. FIFO控制寄存器 UFCONn 位 描 述 初 始 状 态 发送FIFO的触发水平 76 决定发送FIFO的触发水平00:空 01:4字节10:8字节 11:12字节 00 接收FIFO的触发水平 54 决定接收FIFO的触发水平00:4字节 01:8字节10:12字节 11:16字节 00 保留 3 0 发送FIFO复位 2 在复位FIFO之后自动清零0:正常 1:发送FIFO复位 0 接收FIFO复位 1 在复位FIFO之后自动清零0:正常

53、 1:接收FIFO复位 0 FIFO使能 0 0:禁能FIFO 1:FIFO使能 0 FIFO控制寄存器位定义 第80页/共225页4. UART的Modem控制寄存器 UMCONn 位 描 述 初 始 状 态 保留 75 这些位必须为0 00 AFC(自动流控制) 4 0:禁止 1:使能 0 保留 3l 这些位必须为0 00 请求发送 0 如果AFC使能,这位的值将被忽略。在这种情下S3C44B0X将自动控制nRTS如果AFC禁止,必须由软件来控制nRTS0:高电平(失活nRTS) 1:低电平(激活nRTS) 0 Modem控制寄存器位定义 第81页/共225页5. UART发送/接收状态寄

54、存器UTRSTATn 位 描 述 初 始 状 态 发送移位寄存器为空 2 当发送移位寄存器中不包含有效数据,或移位寄存器为空时,这一位将自动被置位0:非空 1:发送保持和移位寄存器为空 1 发送缓冲器为空 1 当发送缓冲区寄存器中不包含有效数据,这一位将自动被置位0:缓冲区寄存器非空 1:空如果使用了FIFO,则用户不用检测这个位,而应当检测UFSTAT中发送FIFO计数器位和FIFO满位1接收缓冲器数据准备好 0 当接收缓冲器寄存器中包含了有效数据,这一位将自动被置位0:完全为空 1:缓冲区寄存器中包含有效数据如果使用了FIFO,则用户不用检测这个位,而应当检测UFSTAT中接收FIFO计数

55、器位 0 UART发送/接收状态寄存器位定义 第82页/共225页6. UART错误状态寄存器UERSTATn 位 描 述 初 始 状 态 中止检测 3 如果接收到某个中止信号,该位将自动置10:未接收到中止信号 1:接收到中止信号 0 帧错误 2 如果在接收操作中发生了帧错误,该位将自动置10:接收中没有发生帧错误 1:帧错误 0 奇偶校验错误 l 如果在接收操作中发生了奇偶校验错误,该位将自动置10:接收中没有发生奇偶校验错误 1:奇偶校验错误 0 溢出错误 0 如果在接收操作中发生了溢出错误,该位将自动置10:接收中没有发生溢出错误 1:溢出错误 0 UART错误状态寄存器位定义 第83

56、页/共225页7. UART的FIFO状态寄存器UFSTATn 位 描 述 初 始 状 态 保留 1510 0 发送FIFO满 9 当FIFO满时,置10:0字节发送FIF0的数据个数15字节 1:满 0 接收FIFO满 8 当FIFO将要满时,置10:0字节接收FIFO的数据个数15字节 1:满 0 发送FIFO计数器 74 发送FIFO中数据的个数 0 接收FIFO计数器 30 接收FIFO中数据的个数 0 FIFO状态寄存器位定义 第84页/共225页8. UART的Modem状态寄存器UMSTATn 位 描 述 初 始 状 态 CTS状态 4 表明输入到S3C4480 x的nCTS信号

57、从上一次被读以后已经改变过 0:未改变 1:改变 0 保留 31 保留 CTS为低电平时发送 0 0:CTS信号未激活(nCTS脚为高电平)1:CTS信号已经激活(nCTS脚为低电平) 0 Modem状态寄存器位定义 第85页/共225页9. UART发送/接收保持寄存器UTXHn 位 描 述 初 始 状 态 TXDATAn 70 UARTn要发送的数据字节 UART发送保持寄存器位定义 URXHn 位 描 述 初 始 状 态 RXDATAn 70 从UARTn接收的数据字节 UART接收保持寄存器位定义 第86页/共225页10. UART波特率除数寄存器 UBRDIVn 位 描 述 初 始

58、 状 态 UBRDIV 150 波特率除数的值UBRDIVn0 UART波特率除数寄存器位定义 第87页/共225页7.4.5 串行通信的应用与编程 1.电路接口和I/O口设置GPE1 GPE2 PC12 PC10 PC15 PC13 PC11 PC8 PC9 PC14 TIN TOUT ROUT RIN MAX3221E 2 3 DB9 UART0 44B0X T1IN T1OUT T2IN T2OUT T3IN T3OUT R1OUT R1IN R2OUT R2IN R3OUT R3IN R4OUT R4IN R5OUT R5IN DB9 UART1 MAX3243E 串口电路 第88页/

59、共225页2. 串行通信函数库函数(1)初始化程序static int whichUart=0void Uart_Init(int mclk,int baud)int i;if(mclk=0)mclk=MCLK;rUFCON0=0 x0; / FIFO disablerUFCON1=0 x0;rUMCON0=0 x0;rUMCON1=0 x0;/UART0rULCON0=0 x3; /Normal,no parity,1 stop,8bitrUCON0=0 x245; /rx=edge,tx=level,disable timeout int.,enable rx error int.,nor

60、mal, / interrupt or pollingrUBRDIV0=(int)(mclk/16./baud+0.5)-1);/UART1rULCON1=0 x3;rUCON1=0 x245;rUBRDIV1=(int)(mclk/16./baud+0.5-1);for(i=0;i100;i+); 第89页/共225页(2)收字符函数char Uart_Getch(void)if(whichUart= =0) while(!(rUTRSTAT0 & 0 x1); /Receive data ready return RdURXH0();else while(!(rUTRSTAT1 & 0 x1); / Receive data ready return

温馨提示

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

评论

0/150

提交评论