您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 大学课件 > 第4章-嵌入式系统的IO模块-2
▲第4章嵌入式系统的I/O模块Part2▲4.3通用输入/输出接口通用输入/输出接口GPIO可提供输入、输出及双向功能,用于连接芯片硬件不支持的通信(总线)协议的外设,比如7段LED、按键矩阵、并行接口外设等。也就是说,这些通信(总线)协议需要通过软件编程来实现GPIO也可以通过软件编程,来模拟实现SPI等标准通信协议/总线嵌入式处理器芯片不可能将其内部电路的所有I/O端口都引出到封装引脚(由于成本问题,芯片封装引脚数量极为有限),因此大多数嵌入式处理器芯片的GPIO可能与其他功能的I/O端口复用引脚(引脚可编程配置)4.3通用输入/输出接口▲4.3通用输入/输出接口4.3.1GPIO功能概述S3C44BOX有71个通用可编程多功能I/O引脚(GPIO引脚),分为7类一个10位I/O端口(PortA)一个11位I/O端口(PortB)一个16位I/O端口(PortC)两个8位I/O端口(PortD&PortG)两个9位I/O端口(PortE&PortF)每个GPIO端口均可通过软件进行编程配置,以满足各种不同的要求,端口配置通常在程序开始时就进行如何配置:通过软件来设置GPIO端口的特殊功能寄存器以S3C44B0X32位MCU的GPIO为例▲4.3通用输入/输出接口端口的特殊功能寄存器每个端口对应一个端口配置寄存器PCONn,决定端口每一个引脚的功能每个端口对应一个端口数据寄存器PDATn,存放接收/发送的数据每个端口对应一个端口上拉寄存器PUPn,决定端口每一个引脚的上拉电阻的使能(是否接上拉电阻)外部中断控制寄存器EXTINT:PortG可以配置为外部中断EINT0-7,EXTINT为外部中断设置信号触发方法(低/高电平、上/下降沿、双沿触发)外部中断挂起寄存器EXTINTPND▲4.3通用输入/输出接口4.3.2编程实例1、GPIO端口的初始化I/O端口配置步骤:设置端口数据寄存器设置端口控制寄存器,确定各端口的具体功能设置端口上拉寄存器01111111111▲4.3通用输入/输出接口4.3.2编程实例2、端口的读写:示例函数:GPIO端口B(11位-11个引脚)中的9/10两个引脚通过输出高/低电平,控制与这两个引脚连接的LED灯亮和熄灭voidleddisplay(intLedStatus){led_state=LedStatus;if((LedStatus&0x1)==0x01)rPDATB=rPDATB&0x5ff;//10111111111elserPDATB=rPDATB|200;//01000000000if((LedStatus&0x2)==0x02)rPDATB=rPDATB&0x3ff;//01111111111elserPDATB=rPDATB|400;//10000000000}▲4.3通用输入/输出接口4.3.3并行接口标准使用GPIO通过软件编程,来实现如下并行接口标准Centronics标准:并行打印机IEEE488GPIB:通用仪器总线SCSI:计算机连接外围设备的标准▲4.4LCD接口4.4LCD接口4.4.1内部结构作用:传送视频数据、产生必要的控制信号。组成:寄存器组、DMA、数据转换、时序发生器。图4.9LCD控制器的内部结构图LCD驱动器LCD屏从位于系统内存的帧缓冲区(显示缓存)中读取视频数据▲4.4.1内部结构LCD控制器的外部接口信号VFRAME:LCD控制器与LCD驱动器之间的帧同步信号VLINE:LCD控制器与LCD驱动器之间的行同步信号VCLK:LCD控制器与LCD驱动器之间的像素时钟信号VM:LCD驱动器所使用的交流信号行/列电压的极性VD:LCD像素数据的传输端口VM[3:0]:4位(指像素值)单扫描时的数据;8位单扫描或4位双扫描时的高4位数据VM[7:4]:8位单扫描或4位双扫描时的低4位数据4.4LCD接口▲4.4.1内部结构LCD控制器中的寄存器组(P82)三个控制寄存器(LCDCON1~3)三个帧缓冲起始地址寄存器(LCDSADDR1~3)三个查找表寄存器(REDLUT、GREENLUT、BLUELUT)4.4LCD接口▲4.4.2基本操作1.色彩模式(显示模式)4级灰度模式16级灰度模式8位彩色模式:256中颜色以上所有的彩色或灰度级都记录在称为“查找表”的调色板中单色模式:不使用查找表2.扫描模式4位单扫描:扫描线从左上角开始逐行显示数据,数据fromVM[3:0]4位双扫描:显示器分为高度相等的上下两部分,每部分一条扫描线从左上角开始逐行显示数据:先上部分一条扫描线显示数据fromVM[3:0],再下部分一条扫描线显示数据fromVM[7:4]8位单扫描:扫描线从左上角开始逐行显示数据,数据fromVM[3:0]+VM[7:4]4.4LCD接口▲4.4.2基本操作1.色彩选择通过设置帧缓冲起始地址寄存器1(LCDSADDR1)的MODESEL字段,可以指定色彩模式(显示模式)通过设置三个查找表寄存器(32位REDLUT、32位GREENLUT、16位BLUELUT),可以在查找表中指定色彩模式(显示模式)所对应的颜色或灰度级:因为有红、绿、蓝三张查找表,每张查找表共存有16项颜色或灰度级(4位地址寻址),那么到底三张查找表中的哪一项是对应的颜色或灰度级?4级灰度模式:蓝查找表16项中的4项对应4级灰度级。如何指定这4项?16位的BLUELUT被划分为4个字段,每个字段(4位)作为蓝查找表的4位地址选中的项,就是对应的灰度级16级灰度模式:蓝查找表16项刚好对应16级灰度级,不需要指定8位色彩模式:在红、绿、蓝三张查找表(16项颜色)中分别指定8种红色、8种绿色、4种蓝色,组成256种颜色。如何指定这8种红色、8种绿色、4种蓝色?32位的REDLUT、GREENLUT被划分为8个字段,16位的BLUELUT被划分为4个字段,每个字段(4位)作为红、绿、蓝查找表的4位地址选中的项,就是对应的颜色4.4LCD接口▲4.4.2基本操作2.扫描模式选择通过设置控制寄存器1(LCDCON1)的DISMOD字段,可指定扫描模式4位单扫描4位双扫描8位单扫描4.4LCD接口▲4.4.2基本操作3.数据的存放与显示4.4LCD接口视频数据存放在系统内存的帧缓冲区(显示缓存)中,LCD接口中的DMA读取视频数据,经转换后数据由VM[7:0]传送给LCD驱动器/LCD屏数据记录了显示像素的颜色/灰度级:4级灰度模式2个数据位表示一个像素,16级灰度4个数据位表示一个像素,8位彩色8个数据位(R3G3B2)表示一个像素▲4.4.3应用实例初始化基本流程:P841.初始化抖动模式寄存器2.初始化帧缓冲起始地址寄存器3.初始化BLUELUT查找表寄存器(因为例子中是16级灰度模式)4.4LCD接口▲定时器和计数器电路一样,差别在于定时器使用内部的系统时钟作为计数脉冲,而计数器使用外部事件脉冲作为计数脉冲。常设计在一起,通过控制开关让它工作在定时或计数状态主要用于:定时中断实时操作系统的时间片任务调度实时时钟RTC看门狗时钟WatchDogDRAM刷新定时器/计数器通常包括控制寄存器、计数初值寄存器、计数器、计数输出寄存器、状态寄存器等图4.5定时器/计数器的基本结构4.5定时器/计数器4.5定时器/计数器▲4.5.1内部结构6个16位定时器,每个都可以产生中断请求和DMA请求定时器0-5具有脉冲宽度调制(PWM)功能。定时器0具有死区发生器特性(适合大电流设备应用)6个定时器共用3个配置寄存器和控制寄存器,每个定时器均有3个寄存器:定时器计数缓冲寄存器TCNTBn:存放计数初值,计数(递减)到0会产生中断请求定时器比较缓冲寄存器TCMPBn:当计数(递减)到TCMPBn的值,TOUTn输出高电平定时器观察缓冲寄存器TCNTOn:存放计数器当前值图4.6定时器内部结构4.5定时器/计数器以S3C44B0X的Timer为例▲1.预定标器和分频器定时器输入时钟频率=MCLK/(预定标值+1)*分频值预定标值为8位,取值范围为0-255;分频值为1/2、1/4、1/8、1/16、1/32。定时间隔=TCNTBn/(MCLK/(预定标值+1)*分频值))P77表4.2表明了预定标器、分频器与定时间隔的关系。假设系统主时钟MCLK为66MHz,定时器初值取值最大值TCNTBn=65535(16位)4.5.2基本操作4.5定时器/计数器定时器计数缓冲寄存器(存放计数初值的寄存器)▲4.5.2基本操作2.定时器的基本操作图4.7定时器的基本操作定时器内部计数器为TCNTn,递减计数,启动时TCNTnTCNTBn当计数到TCMPBn值(TCNTn=TCMPBn)时,TOUTn输出高电平当计数到0(TCNTn=0),且中断使能,则会产生中断请求当计数到0(TCNTn=0)时,TCNTn当前TCNTBn(自动重装,TCNTBn的值可以在定时器计算过程中改变)如果自动重装被设为无效,则当本次计数结束,定时器将停止工作4.5定时器/计数器123▲4.5.2基本操作3.双缓冲器和自动重装图4.8定时器的自动重装计数器(本身):TCNTn双缓冲器:定时器的计数初值保存在TCNTBn中,计数器当前值保存在寄存器TCNTOn中自动重装:当TCNTn的值为0时,自动将TCNTBn的值拷贝到TCNTn中(自动重装),并重新开始下一次定时4.5定时器/计数器▲4.5.2基本操作4.手动更新初始化定时器初始时TCNTBn没有加载初值,如自动重装会出错,所以必须设手动更新为有效启动定时器的步骤:将计数初值写入寄存器TCNTBn和TCMPBn。将定时器的手动更新位置位以加载计数初值。设置相应定时器的启动位来启动定时器,同时将手动更新位清0.4.5定时器/计数器▲4.5.3应用实例以定时器5为例。要求产生1ms定时间隔,主时钟频率MCLK为60mhz,预定标器采样默认设置0,分频器也采用默认设置1/2。计数器初值为:定时间隔*MCLK/(预定标值+1)*分频器=0.001*60000000*1/2=30000TCNTB5为16位寄存器(65535),可以装下计数器初值4.5定时器/计数器▲4.5.3应用实例4.5定时器/计数器▲4.5.3应用实例4.5定时器/计数器▲4.9其他接口由于嵌入式系统工作常常会受到来自外界电磁场的干扰,造成程序的跑飞而陷入死循环,程序的正常运行被打断,造成整个系统的陷入停滞状态。出于对嵌入式系统运行状态进行实时监测的考虑,嵌入式处理器芯片中需要有一种专门用于监测程序运行状态的看门狗定时器(WDT)电路CPU先给看门狗WDT一个初值,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位(喂狗),重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位4.5.4看门狗定时器(WDT)WatchDogTimer输出到处理器芯片的RST端▲4.9其他接口实时时钟RTC器件是一种可以提供日历/时钟及数据存储等功能的专用集成电路S3C44BOX处理器内集成了RTC单元,其结构如图RTC可用备用电池驱动。当系统电源关闭时,CPU和RTC间的接口关闭4.5.5实时时钟RTC若中断使能可产生滴答时钟中断正常模式下,一段时间内产生一个告警信号ALMINT(告警中断)断电模式下,电源管理器唤醒信号PMWKUP和告警信号ALMINT均有效▲4.6中断控制器中断是一种重要的I/O机制,几乎所有的外围接口和设备都要通过中断来实现或管理与CPU(处理器核)之间的数据交换引起中断的事件或原因称为中断源,分内部中断和外部中断内部中断:CPU执行指令所引起的,也叫软件中断外部中断:CPU以外的硬件(外围接口和设备)所引起的,也叫硬件中断中断子系统是为了处理中断请求而设置的各种硬件和软件,完
本文标题:第4章-嵌入式系统的IO模块-2
链接地址:https://www.777doc.com/doc-8623841 .html