收藏 分享(赏)

嵌入式ppt第四章.ppt

上传人:bubibi 文档编号:20014176 上传时间:2023-12-02 格式:PPT 页数:84 大小:2.59MB
下载 相关 举报
嵌入式ppt第四章.ppt_第1页
第1页 / 共84页
嵌入式ppt第四章.ppt_第2页
第2页 / 共84页
嵌入式ppt第四章.ppt_第3页
第3页 / 共84页
嵌入式ppt第四章.ppt_第4页
第4页 / 共84页
嵌入式ppt第四章.ppt_第5页
第5页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第4章章 S5PV210微处理器与接口微处理器与接口目目 录录 4.1 4.1 基于基于S5PV210S5PV210微处理器的硬件平台体系结微处理器的硬件平台体系结构构4.2 4.2 存储系统存储系统4.3 4.3 时钟系统时钟系统4.4 4.4 GPIOGPIO接口接口4.5 4.5 串行通信接口串行通信接口4.6 4.6 A/DA/D转换器转换器4.7 4.7 本章小结本章小结S5PV210又名“蜂鸟”(Hummingbird),是三星推出的一款适用于智能手机和平板电脑等多媒体设备的应用处理器。S5PV210采用了ARMCortex-A8内核,ARMV7指令集,主频可达1GHZ,64/3

2、2位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力。该处理器同时也提供了丰富的外设,以应用于各种嵌入式系统设计之中。本章将简要介绍S5PV210处理器的硬件结构,主要外设的功能及其接口。基于基于S5PV210微处理器的硬件平台体系结构微处理器的硬件平台体系结构 Part One4.14.14.1.1 S5PV210处理器理器简介介S5PV210是一款高效率、高性能、低功耗的32位RISC处理器,它集成了ARMCortex-A8核心,实现了ARM架构V7并且支持众多外围设备。S5PV210采用64位内部总

3、线结构,为3G和3.5G通信服务保证最优化的硬件性能,并且提供了许多强大的硬件加速器,例如运动视频处理、显示控制及缩放等。它内部集成的多格式转码器支持MPEG-1/2/4、H.263和H.264等的编解码,硬件加速器支持视频会议和模拟电视输出,高清晰度多媒体接口提供NTSC和PAL模式的输出。S5PV210具有多种外部存储器接口,能够承受大内存在高端通信服务所需的带宽,例如其DRAM控制器支持LPDDR1、DDR2或LPDDR2的存储器扩展,其FLASH/ROM接口支持NAND闪存、NOR闪存、OneNAND闪存、SRAM和ROM类型的外部存储器。为了降低系统的总成本并且提高整体功能,S5PV

4、210微处理器内部集成了众多外设,如TFT真彩LCD控制器、摄像头接口、MIPIDSI显示串行接口、电源管理、ATA接口、4个通用异步收发器、24通道的DMA、4个定时器、通用I/O端口、3个I2S、IIC接口、两个HS-SPI、USBHost2.0、高速运行的USB2.0OTG、4个SDHost和高速多媒体接口等。S5PV210处理器主要由6大部分组成,分别为CPU核心、系统外设、多媒体、电源管理、存储器接口和Connectivity模块。CPU和各个部分之间通过多层次AHB/AXI总线进行通信。1.CPU内核内核(1)CortexA8处理器运行速度在600MHZ1GHZ时,CortexA8

5、处理器符合功率优化的移动设备小于300mW状态下运行的要求,同时符合性能优化的消费类应用需要2000DhrystoneMIPS的要求。支持第一个超标量处理器,用于增强代码密度和性能。支持JazelleRCT技术用于超前和即时编译的Java和其他字节语言。13级主整数流水线。(2)NEON:CortexA8处理器内部集成的可以实现复杂算法的模块,比如图像的智能分析、数学上的运算等可以通过NEON来实现。(3)32KBI/O缓存、512KBL2Cache。4.1.2 S5PV210内部各模内部各模块介介绍2系统外设系统外设(1)RTC实时时钟提供完整的时钟功能:秒、分、小时、日、月、年。使用32.

6、768KHZ时钟基准。提供报警中断。提供定时器时钟节拍中断。(2)PLL锁相环芯片具有4个锁相环(PLL),分别为APLL/MPL/EPLL/VPLL。APLL产生ARM核心和MSYS时钟。EPLL生成特殊的时钟。VPLL为视频接口生成时钟。(3)具有脉宽调制功能的定时器具有4通道32位内部定时器,3通道带脉宽调制功能以及可编程工作周期、频率和极性。具有死区产生功能。支持外部时钟源。(4)看门狗定时器16位看门狗定时器。(5)DMA具有特定的指令集提供DMA传输的灵活性。内置增强型8通道的DMA。内存到内存转换DMA多达16组,外设到内存转换DMA支持多达8组。(6)Keypad支持148矩阵

7、键盘。提供内部消抖功能。(7)ADC转换器10通道多路复用ADC。支持最大500K采样率和12位的分辨率。3.多媒体多媒体(1)摄像头接口支持多输入包括ITU-RBT601/656模式、DMA模式和MIPI模式。支持多输出包括DMA模式和直接FIFO模式。支持数码变焦功能。支持图像镜像和旋转功能。支持生成各种图像格式。支持捕捉画面管理。支持图像效果。(2)多格式视频编解码器ITU-TH.264、ISO/IEC14496-10编解码支持基线/主/HighProfile的4.0级,编码支持基线/主/高属性。ITU-TH.263Profilelevel3编解码支持Profile3,限制SD分辨率每秒

8、30帧,支持基线配置文件的编码。编码支持MPEG-4简单类/高级简单类。ISO/IEC13818-2MPEG-2编解码支持主要的轮廓高度,解码支持MPEG-1。(3)JPEG编码器支持压缩/解压到65536x65536分辨率。支持的压缩格式即输入原始图像为YCbCr422或RGB565,输出JPEG文件为基线JPEG格式的YCbCr422或YCbCr420。支持的解压缩格式即输入JPEG文件为基线YCbCr444或YCbCr420或YCbCr422格式、JPEG或灰色,输出原始图像的YCbCr422或YCbCr420格式。支持通用的色彩空间转换器。(4)3D图形引擎支持3D图形、矢量图形、视频

9、编码和解码。具有通用可扩展渲染引擎、多线程引擎和顶点着色器功能。支持8000 x8000的图像尺寸。支持90/180/270度旋转。支持16/24/35bpp,24位颜色格式。(5)模拟电视接口输出视频格式为NTSC/PAL。支持的输入格式即ITU-RBT.601的YCbCr444。支持480i/p和576i协议。支持复合视频。(6)液晶显示器接口支持24/18/16bpp的并行RGB接口的LCD。支持8/6bpp串行RGB接口。支持双i80接口的LCD。支持典型的屏幕尺寸:1024x768、800 x480、640 x480、320 x240和160 x160。虚拟图像达到16M像素。ITU

10、-BT601/656格式输出。4电源管理电源管理(1)时钟门控功能。(2)各种低功耗模式可供选择,如空闲、停止、深度空闲和睡眠模式。(3)睡眠模式下唤醒源可以是外部中断、RTC报警、计时器节拍。(4)停止和深度空闲模式唤醒源可以是触摸屏人机界面、系统定时器等。5存储器接口存储器接口(1)SRAM/ROM/NOR接口8位或16位的数据总线。地址范围支持23位。支持异步接口。支持字节和半字访问。(2)OneNAND闪存接口16位的数据总线。地址范围支持16位。支持字节和半字访问。FlexOneNAND闪存支持2KB页面模式,OneNAND闪存支持4KB页面模式。支持专用的DMA。(3)NAND接口

11、支持行业标准的NAND接口。8位的数据总线。(4)LPDDR1接口32位数据总线,1.8V接口电压。每端口密度支持高达4GB(2CS)。(5)DDR2接口32位数据总线将支持400Mbps/引脚双数据速率。1.8V接口电压。每端口密度支持高达1GB(2CS,4BANK的DDR2)。每端口密度支持高达4GB(1CS,8BANK的DDR2)。6Connectivity模块模块(1)音频接口AC97音频接口:独立通道的立体声PCM输入、立体声PCM输出和单声道麦克风输入。16位立体声音频。可变采样率AC97编解码器接口。支持AC97规格。PCM音频接口:16位单声道音频接口。仅工作在主控模式。支持三

12、种PCM端口。IIS总线接口:基于DMA操作的三个I2S总线音频编解码器接口。串行8位、16位、24位每通道的数据传输。支持I2S、MSB、LSB对齐的数据格式。支持PCM5.1声道。支持不同比特时钟频率和编解码器的时钟频率。支持一个5.1通道I2S的端口和两个2通道I2S端口。SPDIF接口:线性PCM每个样本支持多达24位。支持非线性PCM格式如AC3,MPEG1、MPEG2。2x24位缓冲器交替地用数据填充。(2)存储接口HS-MMC/SDIO接口:兼容4.0多媒体卡协议版本(HS-MMC)。兼容2.0版本SD卡存储卡协议。基于128KBFIFO的TX/RX。4个HS-MMC端口或4个S

13、DIO端口。ATA控制器支持ATA/ATAPI-6接口。(3)通用接口USB2.0OTG:符合USB2.0OTG1.0a版本。支持高达480Mbps的传输速度。具有USB芯片收发器。UART:具有基于DMA和中断功能的4个UART。支持5位、6位、7位、8位的串行数据发送和接收。独立的256字节FIFO的UART0,64字节FIFO的UART1和16字节FIFO的UART2/3。可编程的传输速率。支持IrDA1.0SIR模式。支持回环模式测试。I2C总线接口:3个多主控I2C总线。8位串行面向比特的双向数据传输,在标准模式下可以达到100Kbps。快速模式下高达400Kbps。SPI接口:3个

14、符合2.11版本串行外设接口协议的接口。独立的64K字节FIFO的SPI0和16字节FIFO的SPI1。支持基于DMA和中断操作。GPIO接口:237个多功能输入/输出端口。支持178个外部中断。存储系统Part Two4.24.24.2.1 S5PV210的地址空的地址空间S5PV210的存储器地址映射如图4-2所示。S5PV210的存储器地址空间分为7各部分,从下往上分别是引导区、动态随机存储器(DRAM)区、静态只读存储器(SROM)区、Flash区、音频存储区、隔离ROM区和特殊功能寄存器区。地址地址大小大小描述描述备注备注0 x0000_00000 x1FFF_FFFF512MBBo

15、otarea系统启动配置区,此映射区域由启动模式决定0 x2000_00000 x3FFF_FFFF512MBDRAM0存 配 置 区,用 于 DDR2SDRAM寻址0 x4000_00000 x5FFF_FFFF512MBDRAM10 x8000_00000 x87FF_FFFF128MBSROMBank0外接总线型设备寻址区0 x8800_00000 x8FFF_FFFF128MBSROMBank10 x9000_00000 x97FF_FFFF128MBSROMBank20 x9800_00000 x9FFF_FFFF128MBSROMBank30 xA000_00000 xA7FF_F

16、FFF128MBSROMBank40 xA800_00000 xAFFF_FFFF128MBSROMBank50 xB000_00000 xBFFF_FFFF256MBOneNAND/NANDControllerandSFROneNAND和NAND寻址区0 xC000_00000 xCFFF_FFFF256MBMP3_SRAMoutputbufferMP3_SROM输出缓存区0 xD000_00000 xD000_FFFF64KBIROMIROM区,设备引导使用0 xD001_00000 xD001_FFFF64KBReserved保留区0 xD002_00000 xD003_7FFF96KB

17、IRAMIRAM区,设备引导使用0 xD800_00000 xDFFF_FFFF128MBDMZROM0 xE000_00000 xFFFF_FFFF512MBSFRregion特殊功能寄存器SFR区域S5PV210的引导区分为两个部分,分别是0 x0000_00000 x1FFF_FFFF和0 xD002_00000 xD003_FFFF的空间。系统上电后,从引导区开始执行BootLoader程序。S5PV210的SROM分为6个Bank,每个Bank大小都为128M。可支持8/16位的NORFlash、PROM和SDRAM,并支持8/16位的数据总线(Bank0只支持16位的数据总线)。S

18、5PV210支持OneNAND和FlexOneNAND存储器的外部16位总线。S5PV210具有两个独立的DRAM控制器和接口,即DMC0和DMC1,分别支持8GB和4GB大小的DRAM存储器。4.2.2 S5PV210启启动流程流程S5PV210的启动过程由BL0、BL1和BL2(BL为BootLoader的简称,在本书第七章中将有详细介绍)3部分代码实现,其中BL0在出厂时已经被固化到64KB的iROM中。图4-3S5PV210的启动流程S5PV210上电后首先执行BL0,该段代码主要的工作序列如下所示:(1)关看门狗时钟。(2)初始化指令cache。(3)初始化栈、堆。(4)初始化块设备

19、复制函数。(5)初始化PLL及设置系统时钟。(6)根据OM引脚设置,从相应启动介质复制BL1到片内SRAM的0 xD002_0000地址处(其中0 xD002_0010之前的16个字节存储的是BL1的校验信息和BL1的大小),并检查BL1的checksum信息,如果检查失败,IROM将自动偿试第二次启动(从SD/MMCchannel2启动)。(7)检查是否是安全模式启动,如果是则验证BL1完整性。(8)跳转到BL1起始地址处。从图4-3中可以看到,BL1的大小只有16KB,因而一般情况下BL1负责完成的工作较少。BL1被执行后首先初始化系统时钟、内存、串口等,然后将BL2代码拷贝到Intern

20、alSRAM的BL2区中并跳转执行。从图中可以看到SRAM的BL2区的大小有80KB,但很多情况下BL2代码的大小远远超过80KB,所以将BL2代码拷贝到SRAM中意义不大。更好的做法是直接将BL2拷贝到容量更大的内存中,不过在拷贝之前一定要先初始化好系统时钟和内存。BL2实际上是整个BootLoader的主体部分,因此它需要完成更多的初始化工作,例如初始化网卡、Flash等,之后BL2读取操作系统镜像到内存中运行。操作系统镜像的存放位置根据具体的开发平台而定,一般放到Flash上,也可以放到SD卡上。时钟系统Part Three4.34.34.3.1 S5PV210时钟概述概述图4-4S5P

21、V210的时钟域CPU的系统时钟源主要是外部晶振,内部其他部分的时钟都是将外部时钟源经过一定的分频或倍频得到的。外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL(锁相环)先进行倍频处理。S5PV210的时钟系统包括三个时钟域(Domain),分别是主系统时钟域(MSYS)、显示相关的时钟域(DSYS)、外围设备的时钟域(PSYS)。MSYS:用来给CORTEX-A8处理器、DRAM控制器、3D、内部存储器(IRAM和IROM)、芯片配置界面(SPERI)、中断控制器等提供时钟。DSYS:用来给显示相关的部件提供时钟,包括FIMC、FIMD、JPEG、IPS多媒体等。PSYS

22、:用来给外围设备(I2S、SPI、I2C、UART等)、安全子系统、低功率音频播放等提供时钟。每个总线系统操作在200MHz(最大)、166MHz和133MHz,分别由异步总线桥梁(BRG)连接两个不同的域。4.3.2 S5PV210的的时钟结构构图4-5S5PV210顶层时钟图1.外部时钟引脚外部时钟引脚S5PV210的外部时钟源的时钟输入引脚有XRTCXTI、XXTI、XUSBXTI和XHDMIXTI,也可以不使用外部时钟引脚。XRTCXTI:将一个32.768KHz晶振提供的时钟连接到XRTCXTI和XRTCXTO引脚。RTC使用这个时钟源作为实时时钟。XXTI:将一个晶振提供的时钟连接

23、到XXTI和XXTO引脚。当USBPHY没有做有效设置时,CMU和PLL使用这个时钟生成其它的时钟模块(APLL、MPLL、VPLL和EPLL)所需要的时钟。它的输入频率范围为1250MHz。推荐使用24MHz晶振,因为IROM是基于24MHz输入时钟的。XUSBXTI:将一个晶振提供的时钟连接到XUSBXTI和XUSBXTO引脚,这个时钟提供给其它时钟模块(APLL、MPLL、VPLL、EPLL和USBPHY)。推荐使用24MHz晶振,因为IROM是基于24MHz输入时钟的。XHDMIXTI:将一个27MHz晶振提供的时钟连接到XHDMIXTI和XHDMIXTO引脚。VPLL或HDMIPHY

24、生成54MHz时钟提供给TV编码器。2.时钟管理单元(时钟管理单元(CMU)CMU使用时钟引脚(XRTCXTI、XXTI、XUSBXTI和XHDMIXTI)生成内部时钟频率、四个锁相环PLL(APLL、MPLL、EPLL和VPLL)、USBPHY和HDMIPHY。这些时钟可以选择、预分频、提供给其它扩展模块。3.时钟关系时钟关系3大类时钟域中,可以使用不同的分频,使其给不同部件输出所需要的时钟,各类时钟的关系如下:MSYS时钟域:freq(ARMCLK)=freq(MOUT_MSYS)/n,wheren=18freq(HCLK_MSYS)=freq(ARMCLK)/n,wheren=18fre

25、q(PCLK_MSYS)=freq(HCLK_MSYS)/n,wheren=18freq(HCLK_IMEM)=freq(HCLK_MSYS)/2DSYS时钟域:freq(HCLK_DSYS)=freq(MOUT_DSYS)/n,wheren=116freq(PCLK_DSYS)=freq(HCLK_DSYS)/n,wheren=18PSYS时钟域:freq(HCLK_PSYS)=freq(MOUT_PSYS)/n,wheren=116freq(PCLK_PSYS)=freq(HCLK_PSYS)/n,wheren=18freq(SCLK_ONENAND)=freq(HCLK_PSYS)/n,

26、wheren=18推荐的高性能操作频率值:freq(ARMCLK)=1000MHzfreq(HCLK_MSYS)=200MHzfreq(HCLK_IMEM)=100MHzfreq(PCLK_MSYS)=100MHzfreq(HCLK_DSYS)=166MHzfreq(PCLK_DSYS)=83MHzfreq(HCLK_PSYS)=133MHzfreq(PCLK_PSYS)=66MHzfreq(SCLK_ONENAND)=133MHz、166MHz锁相环(PLL)APLL可以驱动MSYS域和DSYS域。可以产生1GHz的时钟和49:51的占空比。MPLL可以驱动MSYS域和DSYS域。可以产生高

27、达2GHz的时钟和40:60的占空比。EPLL主要用于生成音频时钟。VPLL主要用于生成视频系统操作时钟,54MHz。通常,APLL驱动MSYS域、MPLL驱动DSYS域。具体的各个时钟域的配置可参见图4-6S5PV210时钟配置图。GPIO接口Part Four4.44.44.4.1 GPIO概述概述GPIO(General-PurposeInput/OutputPorts)全称是通用编程I/O端口。它们是CPU的引脚,可以通过它们向外输出高低电平,或者读入引脚的状态,这里的状态也是通过高电平或低电平来反应的,所以GPIO接口技术可以说是CPU众多接口技术中最为简单、常用的一种。每个GPIO

28、端口至少需要两个寄存器,一个是用于控制的“通用I/O端口控制寄存器”,一个是存放数据的“通用I/O端口数据寄存器”。控制和数据寄存器的每一位和GPIO的硬件引脚相对应,由控制寄存器设置每一个引脚的数据流向,数据寄存器设置引脚输出的高低电平或读取引脚上的电平。除了这两个寄存器以外,还有其它相关寄存器,比如上拉/下拉寄存器设置GPIO输出模式是高阻、带上拉电平输出还是不带上拉电平输出等。S5PV210共有237个GPIO端口,分成15组:GPA0:8输入/输出引脚。GPA1:4输入/输出引脚。GPB:8输入/输出引脚。GPC0:5输入/输出引脚。GPC1:5输入/输出引脚。GPD0:4输入/输出引

29、脚。GPD1:6输入/输出引脚。GPE0、GPE1:13输入/输出引脚。GPF0、GPF1、GPF2、GPF3:30输入/输出引脚。GPG0、GPG1、GPG2、GPG3:28输入/输出引脚。GPH0、GPH1、GPH2、GPH3:32输入/输出引脚。GPP1:低功率I2S、PCM。GPJ0、GPJ1、GPJ2、GPJ3、GPJ4:35输入/输出引脚。MP0_1、MP_2、MP_3:20输入/输出引脚。MP0_4、MP_5、MP_6、MP_7:32输入/输出存储器引脚。GPIO的15组引脚除了作为输入、输出引脚外,一般都还有其它功能,称为引脚复用。具体要使用引脚的哪个功能,需要通过相关的控制寄

30、存器来设置。图4-7GPIO端口功能框图4.4.2 GPIO寄存器寄存器每组GPIO端口都有两类控制寄存器,分别工作在正常模式和掉电模式(STOP、DEEP-STOP、睡眠模式)。S5PV210处理器工作在正常模式下时,正常寄存器(如GPA0控制寄存器GPA0CON,GPA0数据寄存器GPA0DAT,GPA0上拉/下拉寄存器GPA0PUD,GPA0驱动能力控制寄存器GPA0DRV)工作;进入掉电模式时,所有配置和上拉/下拉控制由掉电寄存器(如GPA0的掉电模式配置寄存器GPA0CONPDN,GPA0的掉电模式上拉/下拉寄存器GPA0PUDPDN)控制。GPIO主要的相关寄存器:GPIO控制寄存

31、器GPxnCON。用于控制GPIO的引脚功能,向该寄存器写入数据来设置相应引脚是输入/输出,还是其它功能。该寄存器中每4位控制一个引脚,写入0000设置为输入IO口,从引脚上读入外部输入的数据;写入0001设置为输出IO口,向该位写入的数据被发送到对应的引脚上;写入其它值可设置引脚的第二功能,具体功能可查阅S5PV210处理器的芯片手册。GPIO数据寄存器GPxnDAT。用于读写引脚的状态,即该端口的数据。当引脚被设置为输出引脚,写该寄存器的对应位为1,设置该引脚输出高电平,写入0设置该引脚输出低电平;当引脚被设置为输入引脚,读取该寄存器对应位中的数据可得到端口电平状态。GPIO上拉/下拉寄存

32、器GPxnPUD,用于控制每个端口上拉/下拉电阻的使能/禁止。对应位为0时,该引脚使用上拉/下拉电阻;对应位为1时,该引脚不使用上拉/下拉电阻。GPIO掉电模式上拉/下拉寄存器GPxnPUDPDN,用于掉电模式下使用。每两位对应一个引脚,为00时输出0,01时输出1,10时为输入功能,11时保持原有状态。4.4.3 GPIO操作步操作步骤S5PV210处理器GPIO端口操作步骤如下:首先,确定所使用的GPIO端口的功能,如作为输入/输出引脚使用时,是否需要设置上拉/下拉电阻;作为其它功能使用时,对应S5PV210处理器的芯片手册进行设置。其次,确定GPIO端口的输入/输出方向,通过端口设置寄存

33、器完成端口的输入/输出功能或其它功能设置。最后,对数据寄存器操作。如果设置为输入引脚,读取数据寄存器对应位值,实现引脚状态的读取;如果设置为输出引脚,通过写数据寄存器对应位值,实现引脚状态的设置。4.4.4 一个一个LED灯的例子灯的例子IO口的操作是硬件控制的基础,本例子是一个最简单的IO口操作。8个LED灯分别用8个GPIO口来进行单独控制,通过I/O控制发光二极管的亮和灭。图4-8GPIO与LED灯的连接通过电路原理图可以得到的物理连接如下表所示:原理图led灯标识ARM芯片接口标识Led1XEINT16/GPH2_0Led2XEINT17/GPH2_1Led3XEINT18/GPH2_

34、2Led4XEINT19/GPH2_3Led5XEINT24/GPH3_0Led6XEINT25/GPH3_1Led7XEINT26/GPH3_2Led8XEINT27/GPH3_3查看GPH2相关的寄存器:GPH2相关的寄存器有:GPH2CON,GPH2DAT,GPH2PUD以及GPH2DRV。通过对不同寄存器的操作,可以配置GPIO的功能。寄存器寄存器物理地址物理地址读读/写属性写属性描述描述初始值初始值GPH2CON0Xe020_0C40R/WGPH2CON端口配置寄存器0 x00000000GPH2DAT0Xe020_0C44R/WGPH2DAT端口数据寄存器0 x00GPH2PUD0

35、Xe020_0C48R/WGPH2PUD端口上拉寄存器0 x5555GPH2DRV0Xe020_0C4CR/WGPH2DRV端口驱动能力寄存器0 x0000表4-3GPH2寄存器族GPH2CON位位描述描述初始值初始值GPH2CON03:00000=Input0001=Output0010=Reserved0011=KP_COL001001110=Reserved1111=EXT_INT160000表4-4GPH2CON端口配置寄存器表4-5GPH2DAT端口数据寄存器GPH2DAT位位描述描述初始值初始值GPH2DAT7:07:08位数据输入或者输出0 x00表4-6GPH2PUD端口上拉寄

36、存器GPH2PUD位位描述描述初始值初始值GPH2PUD n2n+1:2nN=0700=禁止上拉/下拉01=下拉使能10=上拉使能11=Reserved0 x5555表4-7GPH2DRV端口驱动能力寄存器GPH2DRV位位描述描述初始值初始值GPH2DRV n2n+1:2nN=0700=1x01=2x10=3x11=4x0 x00本例通过使用mmap方法实现不经过内核驱动直接在用户区映射的方式来控制寄存器,从而最终控制LED灯的功能。由于在应用程序中不能直接操作物理地址,因此通过mmap将一个文件或者其它对象映射进物理地址,应用程序就可以直接操作地址,从而达到控制寄存器的目的。在向端口写函数

37、port_write中我们可以看到mmap方法。intport_write(unsignedintn,unsignedintfd,volatileunsignedintADDR_CON_OFFSET,volatileunsignedintGPIO_WR_CON,volatileunsignedintGPIO_WR_DAT)ADDR_START=(volatileunsignedchar*)mmap(NULL,1024*n,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0 xE0200000);if(ADDR_START=NULL)printf(mmaperr!n);re

38、turn-1;*(volatileunsignedint*)(ADDR_START+ADDR_CON_OFFSET)=GPIO_WR_CON;GPIO_DAT=(volatileunsignedint*)(ADDR_START+ADDR_CON_OFFSET+0 x04);*(volatileunsignedchar*)GPIO_DAT=GPIO_WR_DAT;return0;port_write中的mmap函数有如下说明:void*mmap(void*start,size_tlength,intprot,intflags,intfd,off_toffset);start:映射到进程空间的虚拟

39、地址;length:映射空间的大小;prot:映射到内存的读写权限;flagsflags:可取MAP_SHARED,MAP_PRIVATE,MAP_FIXED,如果是MAP_SHARED。此进程对映射空间的内容修改会影响到其它的进程,即对其它的进程可见,而MAP_PRIVATE,此进程修改的内容对其它的进程不可见;fd:要映射文件的文件标识符;offset:映射文件的位置,一般从头开始。而在设备文件中,表示映射物理地址的起始地址。程序中另外的主要调用的函数定义分别如下:intopen_port_device(void)intfd;fd=open(DEV_NAME,O_RDWR);if(fd0)

40、printf(Opendeviceerr!n);return-1;returnfd;intclose_port_device(intfd)close(fd);return0;intfree_port_device(void)munmap(void*)ADDR_START,1024*16);return0;LED灯分别用8个GPIO接口进行独立控制,实现一个一个连续单独亮起,程序名称为led8,工程文件列表makefile文件内容如下:CC=arm-linux-gccINSTALL=installTARGET=led8all:$(TARGET)$(TARGET):led8.cled8.h$(CC

41、)-static$-o$clean:rm-rf*.o$(TARGET)主程序如下:/CORTEX-A8LEDTEST#include#include#include#include#include#include#includeled8.hintmain(void)intfd;if(fd=open_port_device()0)exit(0);while(1)if(port_write(16,fd,GPH2CON_OFFSET,0 x00001111,0 xff)0)exit(0);else*(volatileunsignedchar*)GPIO_DAT=0 x0e;printf(LED1n)

42、;sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0d;printf(LED2n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0b;printf(LED3n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x07;printf(LED4n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0f;if(port_write(16,fd,GPH3CON_OFFSET,0 x00001111,0 xff)0)exit(0);el

43、se*(volatileunsignedchar*)GPIO_DAT=0 x0e;printf(LED5n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0d;printf(LED6n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0b;printf(LED7n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x07;printf(LED8n);sleep(1);*(volatileunsignedchar*)GPIO_DAT=0 x0f;free_port_d

44、evice();close_port_device(fd);return0;除在开发板可看到LED亮灯结果外,在调试终端中显示结果如下:串行通信接口Part Five4.54.5在数据通信中有两种常用的通信方式:串行通信和并行通信。并行通讯是指数据的各位同时进行传送(例如数据和地址总线),其优点是传送速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。串行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适宜于远距离传输,缺点是传送速度较慢。串行通讯中又分为异步传送和同步传送。异步传送时,数据在线路上是以一个字(或称字符)为单位来传送的,各

45、个字符之间可以是连续传送,也可以是间断传送,这完全由发送方根据需要来决定。另外,在异步传送时,发送方和接收方各用自己的时钟源来控制发送和接收。4.5.1 串行通信方式串行通信方式S5PV210处理器中采用的是异步串行通信(UART)方式。所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。1.异步串行通信数据格式异步串行通信数据格式异步串行通信发送的数据帧(字符帧)由4个部分组成,分别是起始位、数据位、奇偶校验位、停止位。数据帧格式如图4-10所示,起始位:位于字符帧的开头,只占一位,始终为逻辑“0”低电平,表示发送端开始发送一帧数据。数据

46、位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。奇偶校验位:占一位,用于对字符传送作正确性检查。奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。空闲位:处于逻辑“1”高电平,表示当前线路上没有数据传输。2.波特率波特率串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特,即:1波特1bps(位/秒)。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时

47、钟频率低,波特率就低,通信速度就慢。例如每秒传送的速率为960字符/秒,而每个字符又包含10位,(1位起始位,7位数据位,1位奇偶校验位,1位停止位),则波特率为:960字符/秒10位/字符=9600位/秒=9600波特4.5.2 RS-232C串行接口串行接口RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(recommendedstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、

48、电气特性、信号功能及传送过程。常用物理标准还有EIA-RS-422A、EIA-RS-423A、EIA-RS-485。这里只介绍EIA-RS-232C(简称232,RS232)。1.RS-232C串行接口引脚定义串行接口引脚定义由于RS-232C标准并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。现在常用的是9针的DB-9接口,DB-9引脚顺序和定义如图4-10和表4-2所示。图4-11DB-9串口针脚图针脚针脚信号信号定义定义1DCD载波检测2RXD接收数据3TXD发送数据4DTR数据终端准备好5SGND信号地6DSR数据准备好7

49、RTS请求发送8CTS清除发送9RI振铃提示表4-8DB-9引脚定义2.RS-232C串行接口电气特性串行接口电气特性EIA-RS-232C对电气特性、逻辑电平和各种信号线功能都作了规定:在TxD和RxD上:逻辑1=-3V-15V,逻辑0=+3+15V;在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V+15V;信号无效(断开,OFF状态,负电压)=-3V-15V。以上规定说明了RS-232C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V;对于控制信号:接通状态(ON)即信号有效的电平高于+3V,断开

50、状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来。介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。因此,实际工作时,应保证电平在-3V-15V或+3V+15V之间。EIA-RS-232C与TTL转换:EIARS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MAX232芯片可

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 前端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报