第五章 基于裸机的程序设计方法.ppt
《第五章 基于裸机的程序设计方法.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显示器介绍
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 基于裸机的程序设计方法 第五 基于 裸机 程序设计 方法
链接地址:https://www.31ppt.com/p-2244270.html