第五章 基于裸机的程序设计方法.ppt

上传人:laozhun 文档编号:2244270 上传时间:2023-02-06 格式:PPT 页数:161 大小:794KB
返回 下载 相关 举报
第五章 基于裸机的程序设计方法.ppt_第1页
第1页 / 共161页
第五章 基于裸机的程序设计方法.ppt_第2页
第2页 / 共161页
第五章 基于裸机的程序设计方法.ppt_第3页
第3页 / 共161页
第五章 基于裸机的程序设计方法.ppt_第4页
第4页 / 共161页
第五章 基于裸机的程序设计方法.ppt_第5页
第5页 / 共161页
点击查看更多>>
资源描述

《第五章 基于裸机的程序设计方法.ppt》由会员分享,可在线阅读,更多相关《第五章 基于裸机的程序设计方法.ppt(161页珍藏版)》请在三一办公上搜索。

1、5,C H A P T E R,基于裸机的程序设计方法,主要内容,1,3,2,4,串行口模块程序设计,红外模块设计,液晶显示模块设计,USB模块程序设计,5,SD卡模块程序设计,IIS模块程序设计,接触屏模块程序设计,PS/2模块程序设计,6,7,8,一、UART接口概述,UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是广泛使用的串行数据传输方式,用于控制计算机与串行设备的接口。S3C2410的UART提供三个独立的异步串行I/O端口,每个都可以在中断模式或DMA模式下运行。即,其UART可以产生内部中断或DMA中断请求,从而

2、在CPU和UART之间传输数据。UART在使用系统时钟的情况下,最高可以支持230.4Kbps的波特率。,二、UART特点,1 基于DMA或中断操作的RxD0、TxD0、RxD1、TxD1、RxD2和TxD2;2 UART通道0,1,2符合IrDA1.0标准,并且 具有16字节的FIFO;3 UART通道0和1具有nRTS0、nCTS0、nRTS1 和nCTS1;4 接收/发送时支持握手模式。,三、UART操作,UART的操作包括数据发送、数据接收、中断发生、波特率发生、回送模式、红外模式和自动流控制等。(1)数据发送 发送的数据帧可编程,一个起始位,58个数据位,一个可选的奇偶校验位和12个

3、停止位组成,通过行控制器(ULCONn)来设置。发送器也能产生暂停条件,使串口在一帧的发送期间连续输出若干个0。当前发送的字完全发送之后,暂停条件发送信号,这个信号发送之后,继续发送数据到Tx FIFO中。,UART操作,(2)数据接收 与数据发送一样,接收的数据帧也是可编程的,它由一个起始位,58个数据位,一个可选的奇偶校验位和12个停止位组成,这些也通过行控制器(ULCONn)来设置。接收器可以检测溢出错误和帧错误。溢出错误表示新的数据在旧的数据没有被读取的情况下,覆盖了旧的数据。帧错误表示接收的数据没有有效的停止位。,UART操作,(3)自动流控制(Auto Flow Control,A

4、FC)S3C2410的UART0和UART1通过nRTS和nCTS信号支持自动流控制,以此实现与外部UART的连接。如果用户想把UART连接到Modem上,需要禁止UMCONn的自动流控制位并且通过软件控制nRTS信号。在AFC模式下,nRTS根据接收器的状态和nCTS信号控制发送器的操作。,UART操作,(4)RS-232C接口RS-232C是EIA(美国电子工业协会)制定的一种串行通信接口标准。通常RS-232接口以9个引脚(DB-9)或25个引脚(DB-25)的形态出现,常用的一般是DB-9。简单地通过RS-232C接口进行通信时,只需要连接发送数据线、接收数据线和信号地,称为三线连接。

5、,UART操作,(5)中断/DMA请求的产生S3C2410的每一个UART有5个状态(Tx/Rx/Error)信号:溢出错误、帧错误、接收缓冲数据准备好、发送缓冲区为空和发送移位寄存器空。这些状态通过读取UART状态寄存器(UTRSTATn/UERSTATn)来获取,UART操作,在FIFO模式下,如果采用中断请求和查询模式,当发送器将发送FIFO寄存器中的数据传输到发送移位寄存器中,并且发送FIFO寄存器中剩余的数据量达到Tx FIFO的触发水平时,Tx中断产生。在非FIFO模式下,如果采用中断请求和查询模式,当把数据从发送保持寄存器中传输到发送移位寄存器时,将会引起Tx中断。如果控制寄存器

6、中的接收和发送模式位设置为DMAn请求模式,则以上提到的情况下产生的中断是DMAn请求,而不是Rx或Tx中断。,UART操作,(6)波特率发生 每个UART的波特率发生器为发送器和接收器提供连续的时钟。时钟源可以选择S3C2410的内部系统时钟或者UEXTCLK。UBRDIVn的值可以通过以下表达式确定:UBRDIVn=(int)(PCLK/(bps16))-1 在这里,除数因子的值在1到216-1之间。,UART操作,(6)波特率发生 为了使UART操作精确,S3C2410还支持UEXTCLK作为被除数。UBRDIVn的值可以由以下表达式确定:UBRDIVn=(int)(UEXTCLK/(b

7、ps16)-1在这里,除数因子的值在1216-1之间,并且UEXTCLK应该小PCLK。,UART操作,(7)回送模式 S3C2410的UART提供一个测试模式,即回送模式,以解决通信链接中出现的孤立错误。这种模式在结构上可以使能UART上RXD和TXD之间的连接。因此,在这种模式下发送的数据通过RXD被接收器接收。这个特点使处理器能够检验内部的发送和接收每个SIO通道的数据路径。这种模式可以通过设置UART控制寄存器(UCONn)中的回送模式位进行选择。,UART操作,(8)红外模式 S3C2410 的UART模块支持红外发送和接收,可以通过设置UART行控制寄存器(ULCONn)中的红外模

8、式位进行选择。,四、UART特殊功能寄存器,1、UART行控制寄存器(ULCONn)UART模块中含有ULCON0、ULCON1、ULCON2三个行控制寄存器,均是可读/写的,地址分别为0 x50000000、0 x50004000、0 x50008000。行控制寄存器主要用来规定传输帧的格式。,UART特殊功能寄存器,2、UART控制寄存器(UCONn)UART模块中含有三个控制寄存器,即UCON0、UCON1和UCON2,均是可读/写的,地址分别是0 x50000004、0 x50004004、0 x50008004。UCONn主要用于定义发送数据模式和接收数据模式。,UART特殊功能寄存

9、器,3、UART FIFO控制寄存器(UFCONn)UART模块中含有三个UART FIFO控制寄存器,即UFCON0、UFCON1、UFCON2,均是可读/写的,地址分别为0 x50000008、0 x50004008、0 x50008008。,UART特殊功能寄存器,4、UART Tx/Rx状态寄存器(UTRSTATn)UART模块中含有UTRSTAT0、UTRSTAT1和UTRSTAT2三个UART Tx/Rx状态寄存器,均是只读的,地址分别为0 x50000010、0 x50004010、0 x50008010。UTRSTATn主要功能是读取相应通道的接收和发送状态。,UART特殊功能

10、寄存器,5、UART错误状态寄存器 UART模块中含有UERSTA0、UERSTAT1和UERSTAT2三个UART错误状态寄存器,均是只读的,地址分别为0 x50000014、0 x50004014、0 x50008014。,UART特殊功能寄存器,6、UART FIFO状态寄存器 UART模块中含有UFSTAT0、UFSTAT1、UFSTAT2三个UART FIFO状态寄存器,均是只读的,地址分别为0 x50000018、0 x50004018、0 x50008018。,UART特殊功能寄存器,7、UART发送/接收缓冲寄存器 UART模块中含有UTXH0、UTXH1和UTXH2三个UAR

11、T发送缓冲寄存器,均是只写的,地址分别为0 x0 x50000020、0 x50004020和0 x50008020。UART模块中还含有URXH0、URXH1、URXH2三个接收缓冲寄存器,均是只读的,地址分别为0 x50000024、0 x50004024和0 x50008024,这些发送/接收缓冲寄存器用于存放发送和接收的数据。,UART特殊功能寄存器,8、UART波特率分频寄存器 UART模块中含有UBRDIV0、UBRDIV1和UBRDIV2三个UART波特率分频寄存器,用来设置串行Tx/Rx的波特率。UBRDIVn值的计算公式如下:UBRDIVn=(int)(PCLK/(bps16

12、)-1或UBRDIVn=(int)(UEXTCLK/(bps16)-1在这里,除数因子的值在1到216-1之间,并且UEXTCLK的值应该比PCLK小。,五、UART编程实例,本实例通过编程实现了从键盘上输入字符串,通过串口发送给S3C2410的UART0,再将从UART0接收的字符串回送显示。仅实现了UART0简单的数据发送接收功能,因此UART0只需RXD0和TXD0两根接线,采用MAX3232作为电平转换器。,UART编程实例,串口电路如图所示:,UART编程实例,(1)初始化串口操作 函数uart_init()用于UART串口初始化,参数nMainClk表示源时钟的时钟频率,nBaud

13、表示波特率,nChannel表示选择的UART通道,这里选择UART0。初始化需要设置的内容主要有数据位数、停止位、奇偶校验、波特率、选择中断或查询模式、是否使用FIFO等。,UART编程实例,(2)发送字符操作 函数uart_sendbyte()用于发送一字节大小的数据nData。宏定义#define WrUTXH0(ch)(*(volatile unsigned char*)0 x50000020)=(unsigned char)(ch)用于向发送缓冲寄存器UTXH0中写入发送的数据,本实验采用查询的方式收发数据,UART编程实例,(3)接收字符操作 函数uart_getch()用于接收字

14、符操作,函数返回接收的字符,若没有接收到则返回NULL。宏定义#define RdURXH0()(*(volatile unsigned char*)0 x50000024)用于获得接收缓冲寄存器URXH0中的数据。接收操作与发送操作相似,应不断查询寄存器UTRSTAT00是否为1,以等待UART0接收数据。,六、实验操作步骤及现象,本书中不带操作系统的实验在Keil环境下进行,采用把程序下载到Flash中调试的方法。主要操作步骤如下:(1)使用串口线连接目标板上的UART0和PC机的串口COM1,在PC机上运行超级终端(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串

15、口程序。使用ULINK2仿真器连接PC机的USB接口和目标板上的JTAG接口。,实验操作步骤及现象,(2)打开uart_test工程,单击工程属性快捷键,打开工程属性设置窗口,选择C/C+标签页,设置编译器属性。选择优化选项,同时包含头文件的目录。(3)选择Asm标签页进行汇编器属性配置,选择包含头文件的目录。,实验操作步骤及现象,(4)选择Linker标签页进行链接器配置,如图5-6所示。在链接器的属性配置中,主要添加分散加载文件,即添加RuninFlash.sct路径。RuninFlash.sct中指定了代码的存储布局,将代码段、只读数据段、可读写的数据段分别存放。,实验操作步骤及现象,(

16、5)选择Debug标签页进行调试属性配置,如图5-7所示,包括选择仿真器ULINK ARM Debugger,添加调试脚本Flash.ini,设置调试方式等。调试脚本除了可以初始化软硬件的调试环境以外,还可以初始化Flash的烧写环境。,实验操作步骤及现象,(6)选择Utilities标签页进行烧写选项配置,如图5-8所示。选上“Update Target before Debugging”,并添加调试脚本Flash.ini。接下来点击“Settings”按钮,添加Flash烧写算法。已知S3C2410开发板用到的烧写算法为AM29F160DB Flash,因此,只需在点击“Add”按钮后,在

17、里面找到对应的算法即可。,实验操作步骤及现象,(7)编译链接工程,对出现的错误警告进行相应修改后重新编译。(8)点击Debug调试快捷键,将生成的.axf文件下载到Flash中进行在线调试,或者直接点击,将.asf文件下到Nor Flash中。(9)单击执行程序,通过键盘输入字符串,最后按回车,观察超级终端输出信息。实验正确结果应该是超级终端上显示输入的字符串。,主要内容,1,3,2,4,串行口模块程序设计,红外模块设计,液晶显示模块设计,USB模块程序设计,5,SD卡模块程序设计,IIS模块程序设计,接触屏模块程序设计,PS/2模块程序设计,6,7,8,一、红外数据传输概述,红外数据传输适用

18、于低成本、跨平台、点对点的高速数据传输,尤其是嵌入式系统。红外线是波长在750nm1mm之间的电磁波,是人眼看不到的光线。红外数据传输一般采用红外波段内的近红外线,波长在0.75m25m之间。红外数据协会成立以后,为保证不同厂商的红外线产品能获得最佳的通信效果,限定所用红外线波长在850nm900nm之间。,红外数据传输概述,IrDA制定了很多红外通信协议,IrDA1.0协议基于异步收发器UART,最高通信速率在115.2kbps,简称SIR(Serial Infrared,串行红外协议)。IrDA1.1协议提高通信速率到4Mbps,简称FIR(Fast Infrared,快速红外协议),同时

19、在低速时保留1.0协议规定。之后,IrDA又推出了最高通信速率在16Mbps的协议,简称VFIR(Very Fast Infrared,特速红外协议)。,红外数据传输概述,红外传输距离在几厘米到几十米,发射角度通常在015,发射强度与接收灵敏度因不同器件和不同应用设计而强弱不一。使用时只能以半双工方式进行红外通信。红外收发器件集发射与接收为一体,通常,器件的发射部分含有驱动器,接收部分含有放大器,并且内部集成了关断控制逻辑。关断控制逻辑在发送时关断接收,以避免引入干扰;不使用红外传输时,该控制逻辑通过SD引脚接收指令,关闭器件电源供应,以降耗节能。使用器件时需要在LED引脚接入适当的限流电阻。

20、,二、红外收发芯ZHX1010概述,ZHX1010 SIR收发器适用于便携式低功耗产品,比如手机、数码相机、便携式打印机、笔记本电脑或PDA等。ZHX1010在1米范围内的最高速度可达115.2kbps,供电范围较宽(2.45.5V),可方便地与各种电压的CPU进行接口。,二、红外收发芯ZHX1010概述,ZHX1010内部集成了红外发射二极管、一个红外检测二极管、一个数组AC耦合驱动、一个接收器解码电路。ZHX1010在3V供电时,电流仅有90A,非常适用于电池供电产品。它的外围电路也极其简单,只需要一个外部电阻和一个外部电容即可工作。,红外收发芯ZHX1010概述,ZHX1010有LEDA

21、、TXD、RXD、SD、Vcc和GND共6个引脚,与LEDA内部与RED红外发光二极管相连,外部接一限流电阻到Vcc,用于提供工作电流。TXD是数据发送引脚,内部带有下拉电阻,可以直接与MPU的数据发送端相连,当器件进入省电模式时,该下拉电阻开路。RXD是接收到红外数据后的输出脚,是一个三态输出引脚,该引脚无需外接电阻。SD是省电模式控制引脚,该引脚输入高电平时ZHX1010进入省电模式,此时最大电流仅有1A。,三、红外发送数据编程实例,本例实现了把红外模块ZHX1010收到的数据发送给S3C2410的UART1,保存并通过超级终端的主窗口显示。因此,UART1需工作在红外模式下,而且应使其波

22、特率可调,以适用于不同通信距离的应用场合。ZHX1010与S3C2410的具体电路连接方式如下图所示。,红外发送数据编程实例,具体电路连接方式:,红外发送数据编程实例,(1)红外发送主程序主要设置了UART的波特率和数据发收模式,开启了红外传输的RXD1和ERR1中断。当遥控器向ZHX1010发送数据时,进入中断服务程序,对数据进行接收。(2)中断服务子程序 中断服务子程序irda_rx_or_err()判断具体的中断源是RXD1中断还是ERR1中断,跳入对应的函数进行处理。如果中断源是RXD1,则接收数据保存并打印;如果中断源是ERR1,则打印错误信息。,四、实验操作步骤及现象,(1)将实验

23、箱上的跳线SW503、SW504端口(1、2、3都不接)。(2)使用串口线连接目标板上的UART0和PC机的串口COM1,在PC机上运行超级终端(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口程序。使用ULINK2仿真器连接PC机的USB接口和目标板上的JTAG接口。(3)打开irda_test工程,编译链接后下载到FLASH中,运行程序,按照提示使用PC机键盘选择红外数据传输的波特率。例如输入“2”,选择波特率为19.2Kbps,出现等待接收红外信号界面:rUBRDIV1=164 NowRx with IrDA(4)按遥控器,出现接收到信号。,主要内容,1,3,2

24、,4,串行口模块程序设计,红外模块设计,液晶显示模块设计,USB模块程序设计,5,SD卡模块程序设计,IIS模块程序设计,接触屏模块程序设计,PS/2模块程序设计,6,7,8,一、LCD显示器介绍,LCD(Liquid Crystal Display,液晶显示器)主要用于显示文本及图形信息。它具有轻薄、体积小、耗电量低、无辐射危险、平面直角显示及影像稳定不闪烁的特点,因此在许多电子应用系统中,常常使用液晶屏作为人机界面。LCD由两块玻璃板构成,其间由液晶材料分隔开。当受到外界电场影响时,液晶分子会产生精确的有序排列。对分子的排列加以适当的控制,液晶分子将会允许光线穿越。因为液晶材料本身并不发光

25、,因此在显示屏两边都设有作为光源的灯管,而在液晶显示器背面有一块背光板和反光膜,背光板是由荧光物质组成的,可以发射光线,其作用主要是提供均匀的背景光源。,LCD显示器介绍,背光板发出的光线在穿过第一层偏振过滤层后,进入液晶层。液晶层中的液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。每个单元格由一个电极控制,通过改变单元格上电极的电压状态,就能控制单元格内液晶分子的排列,从而控制光路的通断。通常,在彩色LCD面板中,每一个像素都由三个液晶单元格构成,其中每一个单元格前都分别有红色、绿色或蓝色的过滤器,通过不同单元格的光线就可以在屏幕上显示出不同的颜色。,LCD显示器介绍

26、,液晶显示屏按照显示原理分为STN-LCD(Super TN-LCD,超扭曲向列LCD)和TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)两种。STN在亮度及可视角方面受到较大限制,反应速度较慢,分辨率也不高,但成本比较低廉,因此一般用于一些对图像分辨率和要求不是很高,小尺寸电子显示的领域,例如手表、传真机、移动电话、电子词典等。TFT液晶显示器响应快,显示品质好,适用于大型动画显示,被广泛应用于笔记本电脑、计算机显示器、液晶电视等产品。,二、S3C2410的LCD控制器,S3C2410处理器集成了LCD控制器,它的主要功能是传输显示数据和产生控制信号。LC

27、D控制器可以采用时间抖动算法和帧率控制算法,支持规格每像素2位(4级灰度)或4位(16级灰度)的黑白LCD,也可以支持每像素8位(256色)、12位(4096色)的彩色STN LCD。还可以支持每像素1位、2位、4位和8位的调色板显示模式和每像素16、24位的非调色板真彩显示。LCD控制器可以通过编程支持不同LCD屏的要求,例如行和列的像素数、数据宽度、接口时序以及刷新率等,S3C2410的LCD控制器,S3C2410的LCD控制器有33个外部接口信号,包括24个数据位和9个控制位。与STN LCD相关的外部接口信号有以下几个:(1)VFRAME:LCD控制器和LCD驱动器之间的帧同步信号。(

28、2)VLINE:LCD控制器和LCD驱动器之间的同步脉冲信号(3)VCLK:LCD控制器和LCD驱动器之间的像素时钟信号。(4)VM:LCD驱动器的交流信号。,S3C2410的LCD控制器,S3C2410的LCD控制器用于传送数据和产生必要的控制信号,例如VFRAME、VLINE、VCLK和VM等。LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成,如图5-11所示。REGBANK具有17个可编程寄存器,用于配置LCD控制器。LCDCDMA是一个专用的DMA,自动将帧内存的显示数据传送到LCD驱动器中。通过使用这个专用DMA,可以在不需要CPU介入

29、的情况下显示数据。VIDPRCS从LCDCDMA中接收数据,将相应格式(比如4/8位单扫描或4位双扫描显示模式)的数据通过VD23:0端口发送到LCD驱动器。TIMEGEN模块由可编程逻辑组成,支持不同的LCD驱动器中不同接口时序和速率的要求。TIMEGEN模块产生VFRAME、VLINE、VCLK和VM等控制信号。,S3C2410的LCD控制器,LCD控制器的结构框图,三、STN LCD控制器操作,S3C2410能够支持STN LCD和TFT LCD,这两种LCD屏在显示时有很大差别,而且所涉及到的寄存器也会不同。Embest EduKit-III实验平台采用的是STN LCD。,四、点阵字

30、库原理,(1)汉字点阵字库结构及显示原理 在GB2312-80标准中,所有的汉字分为94个区,每个区有94个位可以存放94个汉字,这种汉字编码方式即为区位码。在计算机中,英文可以用ASCII码来表示,而汉字使用的是两个码值大于128的扩展ASCII码,称为汉字内码。,点阵字库原理,其中:汉字内码的第一个字节=区码+80h+20h汉字内码的第二个字节=位码+80h+20h由此可以计算出一个汉字的区位码为:区码=内码的第一个字节-128-32=内码的第一个字节-160位码=内码的第二个字节-128-32=内码的第二个字节-160,点阵字库原理,(2)英文点阵字库原理 英文点阵字库的原理与汉字基本相

31、同,唯一不同的是在点阵字库的寻址上,英文使用的就是ASCII码,码值为0127,寻址公式为:location=ASCII码一个英文字模占用的字节数。,点阵字库原理,通过以上介绍可以看出,区分中英文的关键就是标示字符的码是ASCII码还是扩展ASCII码,如果是ASCII码,则为英文字库,如果是扩展ASCII码,则与其后的另一个扩展ASCII码组成汉字内码,使用中文字库进行显示。只要正确区分ASCII码的类型并进行分别处理,也就能实现中英文字符串的混合输出了。在嵌入式系统中有时需要显示的汉字不多,可以利用字模提取软件提取所需的字模建立小字库,从而达到节省存储空间的目的。,五、S3C2410的LC

32、D相关寄存器,S3C2410的LCD控制器包含16个相关寄存器,用户通过设置相关寄存器来控制LCD的显示。下面对这些寄存器进行具体说明。(1)LCD控制寄存器1(LCDCON1)LCDCON1寄存器是可读/写的,地址为0 x4D000000,主要用于确定VCLK、VM的速率,选择显示模式,选择BPP模式和确定LCD视频输出使能。,S3C2410的LCD相关寄存器,(2)LCD控制寄存器2(LCDCON2)LCDCON2寄存器是可读/写的,地址为0 x4D000004,主要用于定义时间间隔(3)LCD控制寄存器3(LCDCON3)LCDCON3寄存器是可读/写的,地址为0 x4D000008(4

33、)LCD控制寄存器4(LCDCON4)LCDCON4寄存器是可读/写的,地址为0 x4D00000C,S3C2410的LCD相关寄存器,(5)LCD控制寄存器5(LCDCON5)LCDCON5寄存器是可读/写的,地址是0 x4D000000,主要用于确定相关信号的格式和极性(6)帧缓冲起始地址寄存器1(LCDSADDR1)LCDSADDR1寄存器是可读/写的,地址为0 x4D000014(7)帧缓冲起始地址寄存器2(LCDSADDR2)LCDSADDR2寄存器是可读/写的,地址为0 x4D000018,S3C2410的LCD相关寄存器,(8)帧缓冲起始地址寄存器3(LCDSADDR3)LCDS

34、ADDR3寄存器是可读/写的,地址为0 x4D00001C(9)红色查找表寄存器(REDLUT)REDLUT寄存器是可读/写的,地址为0 x4D000020,可以从该寄存器的位31:0中查找不同的红色值,S3C2410的LCD相关寄存器,(10)绿色查找表寄存器(GREENLUT)GREENLUT寄存器是可读/写的,地址为0 x4D000024,可以从该寄存器的位31:0中查找不同的绿色值(11)蓝色查找表寄存器(BLUELUT)BLUELUT寄存器是可读/写的,地址为0 x4D000028,可以从该寄存器的位15:0中查找不同的蓝色值,S3C2410的LCD相关寄存器,(12)抖动模式寄存器

35、(DITHMODE)DITHMODE寄存器是STN LCD显示控制器的抖动模式寄存器,可进行读/写。对于不同的LCD,此寄存器设置为0 x00000或0 x12210两个值(13)临时调色板寄存器(TPAL)TPAL寄存器主要功能包括是否开启临时调色板以及设置临时调色板的值,该寄存器是可读/写的,地址为0 x4D000050,S3C2410的LCD相关寄存器,(14)LCD中断挂起寄存器(LCDINTPND)LCDINTPND寄存器是可读/写的,地址为0 x4D000054,用于定义相关中断未决位(15)LCD源挂起寄存器(LCDSRCPND)LCDSRCPND寄存器是可读/写的,地址为0 x

36、4D000058,用于定义相关中断源未决位(16)LCD中断屏蔽寄存器(LCDINTMSK)LCDINTMSK寄存器是可读/写的,地址为0 x4D00005C,用于确定LCD FIFO的触发级别以及屏蔽相关中断,六、LCD显示的编程实例,本实验采用的是320240像素的256色STN液晶屏,通过编程控制相关寄存器,在LCD上显示字符、几何图形和图片文件。使用液晶显示屏最基本的是像素控制数据的使用,像素控制数据的存放与传输格式,决定了显示的效果,这也是所有显示控制的基本程序设计思想。实现了在LCD上的特定位置显示像素点,再通过编程对这些点进行不同排列,就能实现显示字符、几何图形和位图。,LCD显

37、示的编程实例,(1)LCD初始化 函数Lcd_Init()通过switch语句实现了对不同LCD的初始化方法,主要根据实际的LCD配置相关寄存器LCDCON1LCDCON5、LCDADDR1LCDADDR3、LCDINTMSK、DITHMODE、TPAL寄存器等。本实验中用的STN采用8位单扫描方式。,LCD显示的编程实例,(2)画点函数 画点函数是所有图形显示操作的基础,它实现了在LCD上特定位置改变像素颜色的功能。画点的实质就是修改帧缓冲区的数据,从而引起显示屏上相应位置图像的变化。(3)画线算法及代码 画出比较平直的直线,一般采用Bresenham算法。其原理是过各行各列像素中心构造一组

38、虚拟网格线,按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。,七、实验操作步骤及现象,(1)使用串口线连接目标板上的UART0和PC机的串口COM1,在PC机上运行超级终端(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口程序。使用ULINK2仿真器连接PC机的USB接口和目标板上的JTAG接口。(2)打开LCD_TEST工程,编译链接后下载到开发板FLASH上,运行程序,观察LCD液晶屏上显示的字符、几何图形和图片。,实验操作步骤及现象,(3)如果想要更换图片,需要使用软件Image2Lcd将图片转换为数组形式存放,具体方

39、法为打开Image2Lcd,如图5-12所示,点击“打开”选择要转换的图片文件,选择输出数据类型为C语言数组,扫描形式为水平扫描,输出灰度为256色,最大宽度和高度为320和240。最后选择“保存”,选择数组文件保存的路径。,主要内容,1,3,2,4,串行口模块程序设计,红外模块设计,液晶显示模块设计,USB模块程序设计,5,SD卡模块程序设计,IIS模块程序设计,接触屏模块程序设计,PS/2模块程序设计,6,7,8,一、USB基础知识,(1)USB的定义及主要特点USB(Universal Serial Bus,通用串行总线)是一种可以同时处理计算机与具有USB接口的多种外设之间通信的电缆总

40、线。USB有以下主要特点:支持即插即用。允许外设在主机和其他外设进行工作时,进行连接、配置、使用以及移除。,USB基础知识,传输速度快。USB支持三种设备传输速率:低速设备1.5Mb/s、中速设备12Mb/s和高速设备480Mb/s。可连接多个外部设备。USB可以通过串行连接或者使用集线器Hub连接127个USB设备,从而以一个串行通道取代PC上其他I/O端口如串行口、并行口等,使PC与外设之间的连接更容易。较强的纠错能力。USB系统可以实时地管理设备插拔。在USB协议中包含了传输错误管理、错误恢复等功能,同时根据不同的传输类型来处理传输错误。,USB基础知识,总线供电。USB总线可为连接在其

41、上的设备提供5V电压/100mA电流的供电,最大可提供500mA的电流。USB设备也可以采用自供电方式。低成本。USB接口电路简单,易于实现,特别是低速设备,成本比串口和并口低。,USB基础知识,(2)数据传输类型 针对设备对系统资源需求的不同,USB规范中规定了四种不同的数据传输方式:控制传输(Control),用来处理主机到USB设备的数据传输,包括设备控制、设备状态查询以及确认命令,当USB设备收到这些数据和命令后,将依据先进先出的原则处理到达的数据。端点0只可以采用控制传输的方式。批量传输(Bulk),用于进行批量的、非实时的数据传输。该方式不能保证传输的速率,但可以保证数据的可靠性,

42、当出现错误时,会要求发送方重新发送数据。通常打印机、扫描仪和数码相机以这种方式与主机连接。,USB基础知识,同步传输(Isochronous),用于那些要求连续传输数据,且对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、喇叭及电话等。同步传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据。在传输数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。同步传输方式的发送方和接收方都必须保证传输速率的匹配,否则会造成数据的丢失。中断传输(Interrupt),用来传输数据量较小,但需要及时处理,以达到实时效果的设备,如鼠标、键盘、操纵杆等。,USB基础知识,(3)

43、USB总线协议 USB总线是一种轮询方式的总线,主机控制端口初始化所有的数据传输,大部分总线事务涉及三个包的传输。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输种类、方向,USB设备地址和端点号的USB数据包,这个数据包通常称为标志包(token packet)。标志包发送后,发送端发送包含信息的数据包(data packet),或表明没有数据传送,接收端相应发送一个握手包(handshake packet),表明是否传送成功。,USB基础知识,发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个管道。管道有流和消息两种类型,消息数据具有USB所定义的结

44、构,而流数据没有。管道与数据带宽、传送服务类型,端点特性(如方向和缓冲区大小)有关。多数管道在USB设备设置完成后存在,但有一个特殊的通道缺省控制管道,它属于消息管道,当设备加电时即存在,为设备的设置、查询状况和输入控制信息提供入口。,二、S3C2410USB设备控制器,S3C2410芯片中集成有USB设备控制器,具有集成的USB收发器(12Mbit/s),批量传输的DMA接口,5个带有FIFO的端点,支持DMA接口在大端口上的接收和发送,并支持挂起和远程唤醒功能。USB设备控制器中,所有的寄存器都是通过字节或字方式进行访问,在小端和大端方式下,访问的偏移地址会有所不同。,S3C2410USB

45、设备控制器,通过操作相应的控制寄存器、状态寄存器、中断寄存器和数据寄存器,可以管理和使用USB设备控制器提供的端点。其中,控制寄存器用于设置端点的工作模式、启用端点的功能等;状态寄存器用于查询端点的当前状态;中断寄存器用于设置端点的中断触发和响应功能;数据寄存器是设备与主机交换数据用的缓冲区。,三、USB设备收发数据编程实例,本实例采用批量传输方式,实现了PC机端USB主机与实验板USB设备进行数据的接收和发送。端点1为批量输入端点,端点3为批量输出端点。端点3数据的批量传输由DMA接口实现。在所有的操作之前,必须对S3C2410的杂项控制器进行如下设置:rMISCCR=rMISCCR/使用U

46、SB端口1模式,USB设备收发数据编程实例,(1)初始化USB 在使用USB之前必须要进行初始化。USB主机和USB设备接口都需要48MHz的时钟频率。在S3C2410中,这个时钟是由UPLL(USB专用PLL)来提供的。USB初始化的第一步就是要对UPLL控制器进行设置。,USB设备收发数据编程实例,在UXB1.x规范中,规定了5种标准的USB描述符:设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端点描述符(EndPoint Descriptor)和字符串描述符(Str

47、ing Descriptor)。每个USB设备只有一个设备描述符,而一个设备中可以包含一个或多个配置描述符,即USB设备可以支持多种配置。设备的每一个配置中又可以包含一个或多个接口描述符,即USB设备可以支持多种功能(接口),接口的特性通过接口描述符提供。在Embest Edukit-III实验平台的USB设备中只有一种配置,支持一种功能。关于设备描述符表的初始化及配置由下面的两个函数实现:,USB设备收发数据编程实例,InitDescriptorTable();/初始化描述符表ConfigUsbd();/设备的配置在函数ConfigUsbd()中,将USB设备控制器的端点0设置为控制端点,端

48、点1设置为批量输入端点,端点3设置为批量输出端点,端点2和端点4暂时没有使用。同时,还使能了端点0,1,3的中断和USB的复位中断。rEP_INT_EN_REG=EP0_INT|EP1_INT|EP3_INT;rUSB_INT_EN_REG=RESET_INT;除此之外,初始化过程还对中断服务程序入口等进行了设置。,USB设备收发数据编程实例,(2)USB中断 S3C2410能够接收56个中断源的请求,当它接收到来自USB设备的中断请求时,就会将SRCPND寄存器的INT_USBD置位,经过仲裁之后,中断控制器就向内核发送IRQ中断请求。(3)USB中断服务例程 当内核接收USB设备的中断请求

49、之后,就会转入相应的中断服务程序运行。这个中断服务程序入口是在USB初始化时设置的。pISR_USBD=(unsigned)IsrUsbd;中断服务程序IsrUsbd主要判断中断类型,再转入相应的程序进行处理。,USB设备收发数据编程实例,(4)USB读写 USB设备的读写通过管道来完成,管道式USB设备和USB主机之间数据通信的逻辑通道,它的物理介质就是USB系统中的数据线。在设备端,管道的主体是端点,每个端点占据各自的管道和USB主机通信。所有的设备都需要有支持控制传输的端点,协议将端点0定义为设备默认的控制端点。在设备正常工作之前,USB主机必须为设备分配总线上唯一的设备地址,并完成读取

50、设备的各种描述符,根据描述符的需求为设备的端点配置管道,分配带宽等工作。另外,在设备的工作过程中,主机希望及时获取设备的当前状态,也是通过端点0来完成的。,四、实验步骤,本实例在运行时,需要借助USB数据传送演示软件DNW.exe一起调试并观察实验结果。具体步骤如下:(1)编译通过后,运行程序。一定要在程序下载运行正确后,才可以进行安装驱动。(2)用USB线连接目标板的USB接口到主机的USB接口,第一次运行时将会出现驱动安装对话框,将安装路径指向到USB的driver文件夹,点击确认安装。,实验步骤,(3)运行调试工具DNW.exe,进行适当配置,选择波特率为115200,使用COM1接口。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号