《嵌入式系统设计与开发 部件工作原理与开发实例.pptx》由会员分享,可在线阅读,更多相关《嵌入式系统设计与开发 部件工作原理与开发实例.pptx(226页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式系统设计与开发嵌入式系统设计与开发 部件工作原理与部件工作原理与开发实例开发实例7.1 Flash 存储器 S3C44B0XS3C44B0X自身不具有自身不具有ROMROM,因此必须外接,因此必须外接ROMROM器件来存器件来存储掉电后仍需要保存的代码和数据。闪速存储器(储掉电后仍需要保存的代码和数据。闪速存储器(flash flash memorymemory)具有非易失性,并且可轻易擦写。)具有非易失性,并且可轻易擦写。Flash ROMFlash ROM采用标准总线接口与处理器交互,读取不需要采用标准总线接口与处理器交互,读取不需要任何特殊的代码,但需要首先在硬件上设定任何特殊的代
2、码,但需要首先在硬件上设定OMlOMl0 0和大和大/小小端,以便使处理器知道端,以便使处理器知道Flash ROMFlash ROM的数据长度和位序。的数据长度和位序。作为代码存储器,作为代码存储器,Flash ROMFlash ROM映射在处理器的映射在处理器的Bank0Bank0地址地址空间(从系统地址空间(从系统地址0 x000000000 x00000000开始)。系统上电复位时,开始)。系统上电复位时,处理器就自动从处理器就自动从0 x000000000 x00000000地址处开始取得指令运行,因地址处开始取得指令运行,因此此Flash ROMFlash ROM中要存放系统启动代
3、码,这些代码必须在系中要存放系统启动代码,这些代码必须在系统上电时完成一系列初始化的工作。经过这些初始化,系统上电时完成一系列初始化的工作。经过这些初始化,系统才可以正确启动并开始工作。统才可以正确启动并开始工作。7.1.1 概述第1页/共225页7.1.2 7.1.2 存储器初始化存储器初始化 初始化存储器系统的编程对象是系统的存储器控制器。存储器初始化存储器系统的编程对象是系统的存储器控制器。存储器控制器并不是控制器并不是ARMARM内核的一部分,不同的系统其设计不尽相内核的一部分,不同的系统其设计不尽相同,所以应该针对具体要求来完成这部分的程序设计。同,所以应该针对具体要求来完成这部分的
4、程序设计。1.1.存储器类型和时序配置存储器类型和时序配置 通通常常FlashFlash和和SRAMSRAM同同属属于于静静态态存存储储器器类类型型,可可以以合合用用同同一一个存储器端口,而个存储器端口,而DRAMDRAM因为动态刷新和地址线复用等特性,因为动态刷新和地址线复用等特性,通常配有专用的存储器端口。通常配有专用的存储器端口。因因为为一一般般系系统统运运行行的的速速度度瓶瓶颈颈都都在在于于存存储储器器访访问问,所所以以存存储器访问时序应尽可能地快,但同时又要考虑由此带来的稳定储器访问时序应尽可能地快,但同时又要考虑由此带来的稳定性问题,所以只有根据具体选定的芯片,进行多次的测试之性问
5、题,所以只有根据具体选定的芯片,进行多次的测试之后,才能确定最佳的时序配置。后,才能确定最佳的时序配置。第2页/共225页2.2.存储器地址分布存储器地址分布 一种典型的情况是启动一种典型的情况是启动ROMROM的地址重映射(的地址重映射(remapremap)。)。当一个系统上电后程序将自动从当一个系统上电后程序将自动从0 0地址处开始执行,因此在地址处开始执行,因此在系统的初始状态,必须保证在系统的初始状态,必须保证在0 0地址处存在正确的代码,即地址处存在正确的代码,即要求要求0 0地址开始处的存储器是非易失性的地址开始处的存储器是非易失性的ROMROM或或FlashFlash等。等。但
6、是因为但是因为ROMROM或或FlashFlash的访问速度相对较慢,每次中断发的访问速度相对较慢,每次中断发生后都要从读取生后都要从读取ROMROM或或FlashFlash上面的向量表开始,影响了上面的向量表开始,影响了中断响应速度。因此有的系统便提供一种灵活的地址重映中断响应速度。因此有的系统便提供一种灵活的地址重映射方法,可以把射方法,可以把0 0地址重新映射到地址重新映射到RAMRAM中去。在这种地址中去。在这种地址映射的变化过程当中,程序员需要仔细考虑的是程序的执映射的变化过程当中,程序员需要仔细考虑的是程序的执行流程而不能被这种变化所打断。行流程而不能被这种变化所打断。第3页/共2
7、25页 系统上电后从系统上电后从FlashFlash内的内的0 0地址开始执行,启动代码位于地址地址开始执行,启动代码位于地址0 x1000 x100开始的空开始的空间,当执行到地址间,当执行到地址0 x2000 x200时,完成了一次地址的重映射,把原来时,完成了一次地址的重映射,把原来0 0开始的地址开始的地址空间由空间由FlashFlash转给了转给了RAMRAM。接下去执行的指令(这里为简化起见,忽略流水线。接下去执行的指令(这里为简化起见,忽略流水线指令预取的模型)将来自从指令预取的模型)将来自从0 x2040 x204开始的开始的RAMRAM空间。如果预先没有对空间。如果预先没有对
8、RAMRAM内内容进行正确地设置,则里面的数据都是随机的,这样处理器在执行完容进行正确地设置,则里面的数据都是随机的,这样处理器在执行完0 x2000 x200地址处的指令后,再往下取指执行就会出错。解决的方法就是要使地址处的指令后,再往下取指执行就会出错。解决的方法就是要使RAMRAM在使在使用之前准备好正确的内容,包括开头的向量表部分。用之前准备好正确的内容,包括开头的向量表部分。第4页/共225页启动启动ROMROM地址重映射对程序执行流程的影响地址重映射对程序执行流程的影响 第5页/共225页7.1.3 Flash 7.1.3 Flash 的调试和程序固化的调试和程序固化 1.Flas
9、h1.Flash调试调试 当由于硬件资源限制,或者需要观察应用程序在实际硬件环境当由于硬件资源限制,或者需要观察应用程序在实际硬件环境中运行的情况时,可以把在中运行的情况时,可以把在RAMRAM调试通过的应用程序调试通过的应用程序BinBin代码文代码文件烧写到件烧写到Flash Flash 芯片中进行调试。烧写到芯片中进行调试。烧写到FlashFlash芯片的程序运行芯片的程序运行不能得到正确结果或看要观察程序在不能得到正确结果或看要观察程序在FlashFlash中的运行情况,这些中的运行情况,这些都需要进行都需要进行FlashFlash调试工作。调试工作。第6页/共225页 程序在程序在F
10、lashFlash中调试与在中调试与在RAMRAM中调试工程配置不同:中调试工程配置不同:1 1)调试选项中不需要执行脚本文件,该工作在启动)调试选项中不需要执行脚本文件,该工作在启动 文件中完成,需要将连接后行为选项改为无。文件中完成,需要将连接后行为选项改为无。2 2)调试过程也有所不同,连接仿真器后,无需再执)调试过程也有所不同,连接仿真器后,无需再执 行下载程序操作,如果要从启动程序的入口开始行下载程序操作,如果要从启动程序的入口开始 调试程序,必须先执行复位命令,此时程序将停调试程序,必须先执行复位命令,此时程序将停 在零地址处。在零地址处。第7页/共225页2.2.程序固化程序固化
11、 在在RAMRAM中调试通过的程序与最终固化到中调试通过的程序与最终固化到FlashFlash中的中的程序有所区别,用户需要在汇编器的预定义选项中程序有所区别,用户需要在汇编器的预定义选项中设置编译定义符号,或者直接在初始化文件中增加设置编译定义符号,或者直接在初始化文件中增加定义编译项,由启动文件自己完成存储区的重映射定义编译项,由启动文件自己完成存储区的重映射而不是由命令脚本完成。而不是由命令脚本完成。在链接器的链接文件中选择在链接器的链接文件中选择flash.ldflash.ld,该链接文件,该链接文件和启动文件配合完成最初下载到和启动文件配合完成最初下载到FlashFlash中的数据段
12、中的数据段的工作。的工作。完成改动后,重新编译程序。然后使用完成改动后,重新编译程序。然后使用Elf to BinElf to Bin工具将工具将.elf.elf文件转换成二进制指令格式文文件转换成二进制指令格式文件件.bin.bin。再利用。再利用Flash ProgrammerFlash Programmer工具将工具将.bin.bin下载下载到到FlashFlash中。中。第8页/共225页7.1.4 Flash 7.1.4 Flash 器件器件SST39VF160SST39VF160的应用的应用 1.SST39VFl601.SST39VFl60介绍介绍 SST39VF160SST39V
13、F160是由是由SSTSST公司推出的容量为公司推出的容量为1MB161MB16倍的倍的CMOSCMOS多多用途用途Flash ROMFlash ROM。第9页/共225页SST39VF160SST39VF160的引脚分布图的引脚分布图 第10页/共225页SST39VFl60SST39VFl60引脚功能描述引脚功能描述 引脚符号 引 脚 名 称 功 能 描 述 A19A0 地址输入提供存储器地址。扇区擦除中A19A11地址线用来选择擦除哪一个扇区。在块擦除中A19A15地址线用来选择擦除哪一个块 DQl5DQ0数据输入输出 在读周期输出数据,在写周期接收写入的数据。在写周期中,数据内部锁存。
14、在 或 为高电平时,数据线输入为高阻态 片选使能 低电平有效的片选线 输出使能 低电平有效的数据输出使能线 写使能 控制写操作 VDD 电源 为SST39VFl60提供2.73.6 V电源 VSS 地 NC 浮空 不连接脚 第11页/共225页(1 1)读操作)读操作 SST39VFl60SST39VFl60的读操作是由的读操作是由CECE和和OEOE信号线控制的。信号线控制的。当两者都为低时,处理器就可以从当两者都为低时,处理器就可以从SST39VFl60SST39VFl60的的输出口读取数据。输出口读取数据。CECE是是SST39VFl60SST39VFl60的片选线,的片选线,当当CEC
15、E为高,芯片未被选中。为高,芯片未被选中。OEOE是输出使能信号线。是输出使能信号线。当当CECE或或OEOE中某一个为高时,中某一个为高时,SST39VFl60SST39VFl60的数据的数据线为高阻态。线为高阻态。第12页/共225页SST39VFl60SST39VFl60读操作时序图读操作时序图 第13页/共225页读时序参数读时序参数 符 号 描 述 SST39VFl6070 SST39VFl6090 最小值 最大值 最小值 最大值 tRctcEtAAtOEtCLZtOLZtCHZtOHZtOH 整个读周期时间读周期中芯片使能时间地址操作时间输出数据使能时间从变低到动态输出时间从变低到
16、动态输出时间从变高到数据线高阻态时间从变高到数据线高阻态时间地址改变时输出数据保持时间 70000 707035202090000 9090453030第14页/共225页(2 2)字写入操作)字写入操作 SST39VFl60SST39VFl60的写操作主要是以一个字接一个字的方式进行写入的。的写操作主要是以一个字接一个字的方式进行写入的。在写入之前,扇区中如果有数据,则必须首先进行充分地擦除。在写入之前,扇区中如果有数据,则必须首先进行充分地擦除。写操作分写操作分3 3步进行:第步进行:第1 1步,送出步,送出“软件数据保护软件数据保护”的的3 3字节;第字节;第2 2步,送出地址和数据;第
17、步,送出地址和数据;第3 3步,内部写入处理阶段,这个阶段在第步,内部写入处理阶段,这个阶段在第4 4个个WEWE或或CECE的上升沿时被初始化。被初始化后,内部写入处理将的上升沿时被初始化。被初始化后,内部写入处理将在在20s20s时间内完成。在内部写入阶段,任何指令都将被忽略。时间内完成。在内部写入阶段,任何指令都将被忽略。第15页/共225页SST39VF160SST39VF160的字写入流程图的字写入流程图 第16页/共225页通过通过 控制的字写入时序图控制的字写入时序图 第17页/共225页通过通过 控制的字写入时序图控制的字写入时序图 第18页/共225页(3 3)整片擦除操作)
18、整片擦除操作 扇区或块擦除操作允许扇区或块擦除操作允许SST39VFl60SST39VFl60以一个扇区接以一个扇区接一个扇区,或一个块接一个块地进行擦除。扇区或一个扇区,或一个块接一个块地进行擦除。扇区或块的地址在块的地址在WEWE的第的第6 6个下降沿处锁存,指令字节个下降沿处锁存,指令字节(30h30h或或50h50h)在的第)在的第6 6个上升沿处锁存,之后,开个上升沿处锁存,之后,开始内部擦除操作。可以采用始内部擦除操作。可以采用Data Polling bitData Polling bit或或Toggle bitToggle bit的方法来判定内部擦除是否结束。的方法来判定内部擦
19、除是否结束。SST39VFl60SST39VFl60还提供一个整片擦除的功能,允许使还提供一个整片擦除的功能,允许使用者一次性快速擦除整个存储器(存储阵列每个单用者一次性快速擦除整个存储器(存储阵列每个单位都为位都为1 1)。整片擦除同样通过执行)。整片擦除同样通过执行6 6字节的指令字节的指令序列来进行,序列来进行,6 6字节指令序列中包括片擦除指令字节指令序列中包括片擦除指令(10h10h)和字节序列最后的地址)和字节序列最后的地址5555h5555h。第19页/共225页SST39VF160SST39VF160的擦除操作的擦除操作 第20页/共225页2.2.应用应用(1 1)ST39V
20、F160ST39VF160的擦除的擦除 SST39VF160SST39VF160具有具有3 3种擦除方式:整片擦除、种擦除方式:整片擦除、扇区擦除和块擦除。扇区擦除和块擦除。扇区擦除子程序的主体:扇区擦除子程序的主体:void SST39VF160_SectorErase(INT32U SAaddr)void SST39VF160_SectorErase(INT32U SAaddr)Writeflash(0 x5555,0 xAA);Writeflash(0 x5555,0 xAA);Writeflash(0 x2AAA,0 x55);Writeflash(0 x2AAA,0 x55);Wri
21、teflash(0 x5555,0 x80);Writeflash(0 x5555,0 x80);Writeflash(0 x5555,0 xAA);Writeflash(0 x5555,0 xAA);Writeflash(0 x2AAA,0 x55);Writeflash(0 x2AAA,0 x55);Writeflash(SAaddr,0 x30);Writeflash(SAaddr,0 x30);Waitfor_endofprg();Waitfor_endofprg();第21页/共225页(2 2)ST39VF160ST39VF160的写入的写入 整片擦除之后,就能够在整片擦除之后,就
22、能够在Flash ROMFlash ROM的任意地址中的任意地址中 进行写入操作了。进行写入操作了。写入子程序的主体写入子程序的主体 :Int SST39VF160_WordProg(unsigned long addrInt SST39VF160_WordProg(unsigned long addr,unsigned int dat)unsigned int dat)Writeflash(0 x5555,0 xAA);Writeflash(0 x5555,0 xAA);Writeflash(0 x2AAA,0 x55);Writeflash(0 x2AAA,0 x55);Writeflas
23、h(0 x5555,0 xA0);Writeflash(0 x5555,0 xA0);Writeflash(addr,dat);Writeflash(addr,dat);Waitfor_endofprg();Waitfor_endofprg();第22页/共225页7.2 SDRAM存储器7.2.1 概述 随机存取存储器随机存取存储器RAMRAM(random access memoryrandom access memory)是易失)是易失性的存储器,在掉电以后数据立即消失。性的存储器,在掉电以后数据立即消失。与与ROMROM器件不同的是,它的随机读写速度非常快,写入数器件不同的是,它的随机
24、读写速度非常快,写入数据之前也不需要进行擦除据之前也不需要进行擦除 。常用的常用的RAMRAM分为分为SRAMSRAM(静态(静态RAMRAM)和)和DRAMDRAM(动态(动态RAMRAM)两种类型)两种类型 。S3C44B0XS3C44B0X芯片本身提供了与芯片本身提供了与DRAMDRAM和和SDRAMSDRAM进行直接接进行直接接口的解决方案,因此,不需要通过编程来实现它们所需的口的解决方案,因此,不需要通过编程来实现它们所需的接口时序,而只需对与存储器控制器相关的寄存器进行适接口时序,而只需对与存储器控制器相关的寄存器进行适当配置。这个配置工作一般在启动代码中完成,系统在每当配置。这个
25、配置工作一般在启动代码中完成,系统在每次上电后但还未开始执行次上电后但还未开始执行C C语言程序之前,配置好语言程序之前,配置好SDRAMSDRAM的特性参数,然后再进入的特性参数,然后再进入C C程序运行。程序运行。第23页/共225页7.2.2 SRAM器件的结构特点 一个一个SRAMSRAM中的位单元通常由中的位单元通常由4 46 6只晶体管组成,当这个只晶体管组成,当这个位单元被赋予位单元被赋予0 0或或1 1的状态之后,它会保持这个状态直到下的状态之后,它会保持这个状态直到下次被赋予新的状态,或者断电之后才会更改或消失。次被赋予新的状态,或者断电之后才会更改或消失。SRAMSRAM的
26、速度相对比较快,而且比较省电,但是存储的速度相对比较快,而且比较省电,但是存储1 1位的位的信息需要信息需要4 46 6只晶体管,制造成本较高。只晶体管,制造成本较高。第24页/共225页7.2.3 DRAM器件的结构特点 DRAMDRAM与与SRAMSRAM不同,存储一个位的信息只需要不同,存储一个位的信息只需要1 1只晶体管,只晶体管,但是需要周期性地充电,才能使保存的信息不消失。但是需要周期性地充电,才能使保存的信息不消失。DRAMDRAM的一些资料显示,内存至少要每的一些资料显示,内存至少要每64ms64ms刷新一次,这刷新一次,这也就意味着内存有也就意味着内存有1%1%的时间要用来刷
27、新。因为读取操作会的时间要用来刷新。因为读取操作会破坏内存中的电荷,因此,内存不但要每破坏内存中的电荷,因此,内存不但要每64 ms64 ms刷新一次,刷新一次,而且每次读操作之后还要刷新一次,这样就增加了存取操而且每次读操作之后还要刷新一次,这样就增加了存取操作的周期。作的周期。DRAMDRAM的存取速度没有的存取速度没有SRAMSRAM快,但是快,但是DRAMDRAM更容易做成更容易做成大容量的大容量的RAMRAM。一般的嵌入式系统中,主存储器采用。一般的嵌入式系统中,主存储器采用DRAMDRAM,而快速存储器(,而快速存储器(cache memorycache memory)则采用)则采
28、用SRAMSRAM。DRAMDRAM的优点是制造成本比的优点是制造成本比SRAMSRAM低得多。低得多。第25页/共225页 DRAMDRAM结构中相对于结构中相对于SRAMSRAM多了两个部分:一个是由多了两个部分:一个是由 (行(行地址脉冲选通器)引脚控制的行地址锁存器(地址脉冲选通器)引脚控制的行地址锁存器(row address row address latchlatch),另一个是由(列地址脉冲选通器)引脚控制的列),另一个是由(列地址脉冲选通器)引脚控制的列地址锁存器(地址锁存器(column address latchcolumn address latch)。)。第26页/共
29、225页DRAMDRAM的存储位单元结构的存储位单元结构 第27页/共225页DRAMDRAM中存储单元的内部结构中存储单元的内部结构 第28页/共225页DRAMDRAM读取过程按以下步骤进行读取过程按以下步骤进行:1 1)处理器通过地址总线将行地址传输到)处理器通过地址总线将行地址传输到DRAMDRAM的地址引脚。的地址引脚。2 2)引脚被激活,这样,行地址被传送到行地址锁存器中。)引脚被激活,这样,行地址被传送到行地址锁存器中。3 3)行地址解码器根据接收到的数据选择相应的行。)行地址解码器根据接收到的数据选择相应的行。4 4)引脚被确定不被激活,所以)引脚被确定不被激活,所以DRAMD
30、RAM知道它不会进行写入操知道它不会进行写入操 作。作。5 5)处理器通过地址总线将列地址传输到)处理器通过地址总线将列地址传输到DRAMDRAM的地址引脚。的地址引脚。6 6)引脚被激活,这样列地址被传送到列地址锁存器中。)引脚被激活,这样列地址被传送到列地址锁存器中。7 7)引脚同样还具有引脚的功能,此时)引脚同样还具有引脚的功能,此时DoutDout引脚知道需要向外引脚知道需要向外 输出数据。输出数据。8 8)和都失效,这样就可以进行下一个周期的数据操作了。)和都失效,这样就可以进行下一个周期的数据操作了。第29页/共225页7.2.4 SDRAM7.2.4 SDRAM器件的构成原理和应
31、用特点器件的构成原理和应用特点 SDRAMSDRAM的存储位单元的基本原理同的存储位单元的基本原理同DRAMDRAM基本一样,但是这些存储位单元的基本一样,但是这些存储位单元的组织和控制与组织和控制与DRAMDRAM却有很大的差别。却有很大的差别。SDRAMSDRAM是多是多BankBank结构,大大提高了存储器的访问速度。结构,大大提高了存储器的访问速度。为了实现这个功能,为了实现这个功能,SDRAMSDRAM需要增加对多个需要增加对多个BankBank的管理,实现控制其中的的管理,实现控制其中的BankBank进行预充电。在一个具有两个以上进行预充电。在一个具有两个以上BankBank的的
32、SDRAMSDRAM中,一般会多一根叫中,一般会多一根叫做做BAnBAn的引脚,用来实现在多个的引脚,用来实现在多个BankBank之间的选择。之间的选择。第30页/共225页7.2.5 SDRAM7.2.5 SDRAM器件器件HY57V641620HGHY57V641620HG简介简介 HY57V641620HG HY57V641620HG 是一个容量为是一个容量为64Mb64Mb的同步动态随机存储器,能很好地适的同步动态随机存储器,能很好地适应主存储器的高密度和高带宽的数据传输性能。其存储空间组织方式是:应主存储器的高密度和高带宽的数据传输性能。其存储空间组织方式是:1M16bit4Ban
33、k1M16bit4Bank。HY57V641620HGHY57V641620HG提供的完全动态操作涉及时钟的上升沿,所有的输入和输提供的完全动态操作涉及时钟的上升沿,所有的输入和输出都是在时钟的上升沿触发的。数据通路被做成内部装管道线以获得非常高出都是在时钟的上升沿触发的。数据通路被做成内部装管道线以获得非常高的带宽。全部输入和输出电压电平都与的带宽。全部输入和输出电压电平都与LVTTLLVTTL相兼容。相兼容。第31页/共225页HY57V641620HGHY57V641620HG管脚图管脚图 第32页/共225页主要特性:主要特性:单一单一3.30.3V3.30.3V电源。电源。更新和自我
34、更新。更新和自我更新。全部引脚都与全部引脚都与LVTTLLVTTL接口相兼容。接口相兼容。40964096更新循环更新循环/64ms/64ms。针距针距0.880.88毫米的毫米的JEDECJEDEC标准,标准,400400密耳密耳5454引脚针薄型小尺引脚针薄型小尺寸封装。寸封装。可编程序的脉冲长度和类型:可编程序的脉冲长度和类型:-1-1、2 2、4 4、8 8或整页连续脉冲,或整页连续脉冲,-1-1、2 2、4 4和和8 8为插入式脉冲。为插入式脉冲。所有输入和输出都是正边沿触发的。所有输入和输出都是正边沿触发的。可编程的可编程的CASCAS编码潜伏编码潜伏2 23 3周期。周期。具有通
35、过具有通过UDQMUDQM或或LDQMLDQM来隐藏数据的功能。来隐藏数据的功能。4 4个个BankBank运行。运行。第33页/共225页HY57V641620HGHY57V641620HG引脚描述引脚描述 引 脚 引 脚 名 称 描 述 CLK 时钟 系统时钟输入。其他输入被登记到SDRAM的 CLK上升沿上 CKE 时钟控制 时钟使能。当CKE为低时,SDRAM可能是进入掉电模式、时钟挂起模式或自刷新模式 CS 片选择 除CLK、CKE和DQM之外,使全部输入有效或无效 BA0,BA1 Bank地址 Bank选择地址。在RAS 活跃期间选择Bank激活,在CAS活跃期间选择Bank可读写
36、 A0A11 地址 行地址:RA0RA11,列地址:CA0CA7自动预充电标记:A10 ,行地址滤波,列地址滤波,读写 、和 功能由真值表决定 第34页/共225页引 脚 引 脚 名 称 描 述 LDQM,UDQM 数据输入/输出处理 控制I/O缓存的高地址和低地址,输入/输出屏蔽。在阅读模式中控制输出缓冲和在写入模式中处理输入数据 DQ0DQ15 数据输入/输出 多路传输数据输入/输出引脚 VDD/VSS 电源/接地 为内部的电路和输入缓冲供电的电源 VDDQ/VSSQ 数据输出 为输出缓冲供电 NC 无连接 无连接 HY57V641620HG引脚描述 第35页/共225页7.2.6 SDR
37、AM7.2.6 SDRAM应用编程应用编程 由于由于S3C44B0XS3C44B0X内部的存储控制器部件提供了专门与内部的存储控制器部件提供了专门与SDRAMSDRAM的器件的控制信的器件的控制信号线,因此,对号线,因此,对SDRAMSDRAM的读和写都不需要特殊编程操作,只需要根据所选择的读和写都不需要特殊编程操作,只需要根据所选择的存储器的特性,在系统初始化时对的存储器的特性,在系统初始化时对S3C44B0XS3C44B0X相关的寄存器进行设置就可相关的寄存器进行设置就可以了。以了。第36页/共225页实验参考程序实验参考程序/*/*名称:名称:sRWramtestsRWramtest*功
38、能:功能:使用汇编语言读使用汇编语言读/写已初始化的写已初始化的RAMRAM区区*/sRWramtest:sRWramtest:LDR r2,=0 x0C010000 LDR r2,=0 x0C010000 /*/*字长读字长读*/LDR r3,=0 x55AA55AA LDR r3,=0 x55AA55AA STR r3,r2 STR r3,r2 /*/*字长写字长写*/LDR r2,=0 x0C010004 LDR r2,=0 x0C010004 LDRH r3,r2 LDRH r3,r2 /*/*半字读半字读*/LDR r3,=0 x55AA LDR r3,=0 x55AA STRH r
39、3,r2,#2 STRH r3,r2,#2 /*/*半字写半字写*/STRH r3,r2 STRH r3,r2 LDR r2,=0 x0C010008 LDR r2,=0 x0C010008 LDRB r3,=0 xAA LDRB r3,=0 xAA /*/*字节读字节读*/STRB r3,r2,#1 STRB r3,r2,#1 /*/*字节写字节写*/LDRB r3,=0 x55 LDRB r3,=0 x55 STRB r3,r2,#1 STRB r3,r2,#1 LDRB r3,=0 xAA LDRB r3,=0 xAA STRB r3,r2,#1 STRB r3,r2,#1 LDRB r
40、3,=0 x55 LDRB r3,=0 x55 STRB r3,r2 STRB r3,r2第37页/共225页/*/*名称:名称:cRWramtest cRWramtest*功能:功能:使用高级语言读使用高级语言读/写写RAMRAM区区*/RAM /RAM 访问示例访问示例#define RWram (*(unsigned long*)0 x0C10200)#define RWram (*(unsigned long*)0 x0C10200)void cRWramtest(void)void cRWramtest(void)unsigned long *ptr=0 x0C010200;/R/W
41、 RAMunsigned long *ptr=0 x0C010200;/R/W RAMunsigned short *ptrh=0 x0C010200;/R/W RAMunsigned short *ptrh=0 x0C010200;/R/W RAMunsigned char *ptrb=0 x0C010200;/R/W RAMunsigned char *ptrb=0 x0C010200;/R/W RAMchar i;char i;unsigned char tmpb;unsigned char tmpb;unsigned short tmph;unsigned short tmph;uns
42、igned long tmpw;unsigned long tmpw;*ptr=0 xAA55AA;*ptr=0 xAA55AA;tmpw=*ptr;tmpw=*ptr;/字长读字长读*ptrh=tmph+1;ptrh=tmph+1;/字长写字长写tmph=*ptrh;tmph=*ptrh;/半字读半字读*ptrh=tmph+1;ptrh=tmph+1;/半字写半字写tmpb=*ptrb;tmpb=*ptrb;/字节读字节读*ptrb=tmpb+1 ptrb=tmpb+1 /字节写字节写 第38页/共225页7.3 通用I/O接口 7.3.1 S3C44B0X的I/O端口 S3C44B0XS3
43、C44B0X具有具有7171个多功能个多功能I/OI/O,这些,这些I/OI/O的应的应用用是是S3C44B0XS3C44B0X处理器的基础应用,它们分为处理器的基础应用,它们分为7 7组组I/OI/O端口:端口:2 2个个9 9位位I/OI/O端口(端口端口(端口E E和和F F)。)。2 2个个8 8位位I/OI/O端口(端口端口(端口D D和和GG)。)。1 1个个1616位位I/OI/O端口(端口端口(端口C C)。)。1 1个个1010位输出端口(端口位输出端口(端口A A)。)。1 1个个1111位输出端口(端口位输出端口(端口B B)。)。第39页/共225页端口端口A A引脚定
44、义引脚定义 端 口 A 引 脚 功 能 端 口 A 引 脚 功 能 端 口 A 引 脚 功 能 PA0 ADDR0 PA4 ADDRl9 PA8 ADDR23 PAl ADDRl6 PA5 ADDR20 PA9 OUTPUT 2 on-all on-2 off-1 off*/*1 on-2 on-all on-2 off-1 off*/leds_off();leds_off();Delay(1000);Delay(1000);led1_on();led1_on();Delay(1000);Delay(1000);led1_off();led1_off();led2_on();led2_on()
45、;Delay(1000);Delay(1000);leds_on();leds_on();Delay(1000);Delay(1000);led2_off();led2_off();Delay(1000);Delay(1000);led1_off();led1_off();第53页/共225页/*/*name:*name:leds_onleds_on*func:*func:all leds onall leds on*/*/void leds_on()void leds_on()Led_Display(0 x3);Led_Display(0 x3);/*/*name:*name:leds_of
46、fleds_off*func:*func:all leds offall leds off*/*/void leds_off()void leds_off()Led_Display(0 x0);Led_Display(0 x0);第54页/共225页/*/*name:*name:led1_onled1_on*func:*func:led 1 onled 1 on*/*/void led1_on()void led1_on()led_state=led_state|0 x1;led_state=led_state|0 x1;Led_Display(led_state);Led_Display(l
47、ed_state);/*/*name:*name:led1_offled1_off*func:*func:led 1 offled 1 off*/*/void led1_off()void led1_off()led_state=led_state&0 xfe;led_state=led_state&0 xfe;Led_Display(led_state);Led_Display(led_state);第55页/共225页/*/*name:*name:Led_DisplayLed_Display*func:*func:Led Display control functionLed Displa
48、y control function*para:*para:LedStatus-leds statusLedStatus-leds status*/*/void Led_Display(int LedStatus)void Led_Display(int LedStatus)led_state=LedStatus;led_state=LedStatus;if(LedStatus&0 x01)=0 x01)if(LedStatus&0 x01)=0 x01)rPDATB=rPDATB&0 x5ff;rPDATB=rPDATB&0 x5ff;elseelserPDATB=rPDATB|0 x200
49、;rPDATB=rPDATB|0 x200;if(LedStatus&0 x02)=0 x02)if(LedStatus&0 x02)=0 x02)rPDATB=rPDATB&0 x3ff;rPDATB=rPDATB&0 x3ff;elseelserPDATB=rPDATB|0 x400;rPDATB=rPDATB|0 x400;第56页/共225页7.4 串行通信接口 7.4.1 概述 串行通信接口电路一般由可编程的串行接口芯片、波特率串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、发生器、EIAEIA与与TTLTTL电平转换器以及地址译码电路组成。采电平转换器以及地址译码电路组成
50、。采用的通信协议有两类:异步协议和同步协议。随着大规模用的通信协议有两类:异步协议和同步协议。随着大规模集成电路技术的发展,通用的同步集成电路技术的发展,通用的同步UARTUART和异步和异步UARTUART接口接口芯片种类越来越多,采用这些芯片作为串行通信接口电路芯片种类越来越多,采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单,从而减少成本和体的核心芯片,会使电路结构比较简单,从而减少成本和体积,降低了设计开发的风险和难度积,降低了设计开发的风险和难度。第57页/共225页 UARTUART(universal asynchronous receiver/transmitt