嵌入式系统常用外设驱动编程实例综述_第1页
嵌入式系统常用外设驱动编程实例综述_第2页
嵌入式系统常用外设驱动编程实例综述_第3页
嵌入式系统常用外设驱动编程实例综述_第4页
嵌入式系统常用外设驱动编程实例综述_第5页
已阅读5页,还剩150页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1嵌入式系统原理及应用嵌入式系统原理及应用第五讲嵌入第五讲嵌入式系统常用外设驱动编程实例式系统常用外设驱动编程实例2l嵌入式系统常用外设除了存储设备以外还包括:通信嵌入式系统常用外设除了存储设备以外还包括:通信总线及接口(如总线及接口(如UART、USB、I2C、SPI等)、人机等)、人机交互设备(如交互设备(如LCD、键盘、触摸屏等)、其他输入输、键盘、触摸屏等)、其他输入输出设备(如出设备(如A/D、D/A、PWM等)。等)。 3本章提要本章提要触摸屏模块设计实例触摸屏模块设计实例UART异步串口模块实例异步串口模块实例A/D转换器应用实例转换器应用实例LCD模块设计模块设计 LPC176

2、8 简介简介 PWM控制实例控制实例GPIO与键盘实例与键盘实例45.1.1 LPC1768概述概述lLPC1768是是NXP公司推出的基于公司推出的基于ARM Cortex-M3内核的微控内核的微控制器制器LPC17XX系列中的一员。系列中的一员。LPC17XX系列系列Cortex-M3微处微处理器用于处理要求高度集成和低功耗的嵌入式应用。理器用于处理要求高度集成和低功耗的嵌入式应用。LPC1700系列微控制器的操作频率可达系列微控制器的操作频率可达100MHz(新推出的(新推出的LPC1769和和LPC1759可达可达120MHz)。)。lARM Cortex-M3 CPU具有具有3级流水

3、线和哈佛结构。级流水线和哈佛结构。LPC17XX系列微控制器的外设组件包含高达系列微控制器的外设组件包含高达512KB的的 flash存储器、存储器、64KB的数据存储器、以太网的数据存储器、以太网MAC、USB主机主机/从机从机/OTG 接口接口、8 通道通道 DMA 控制器、控制器、4 个个 UART、2 条条 CAN 通道、通道、2个个SSP控制器、控制器、SPI 接口、接口、3个个IIC接口、接口、2输入和输入和2输出的输出的IIS接口接口、8通道的通道的12位位ADC、10位位DAC、电机控制、电机控制 PWM、正交编码、正交编码器接口、器接口、4个通用定时器、个通用定时器、6输出的

4、通用输出的通用 PWM、带有独立电池、带有独立电池供电的超低功耗供电的超低功耗 RTC 和多达和多达70个的通用个的通用IO管脚。管脚。 5引脚连接模块寄存器映射引脚连接模块寄存器映射l引脚功能选择寄存器引脚功能选择寄存器0(PINSEL0) PINSEL0寄存器控制端口寄存器控制端口0低半部分的位功能。仅当引脚选低半部分的位功能。仅当引脚选择使用择使用GPIO功能时,功能时,FIO0DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引脚功能选择寄存器引脚功能选择寄存器1(PINSEL1) PINSEL1寄存器控制端口寄存器控制端口0高半部分的位功能。仅当引脚选高半部分的位功能。仅

5、当引脚选择使用择使用GPIO功能时,功能时,FIO0DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。LPC1768的引脚功能选择寄存器的引脚功能选择寄存器1的位功能描述如表的位功能描述如表3-7所所列。列。l引脚功能选择寄存器引脚功能选择寄存器2(PINSEL2) PINSEL2寄存器控制端口寄存器控制端口1低半部分的位功能,包含以太网低半部分的位功能,包含以太网相关功能引脚。仅当引脚选择使用相关功能引脚。仅当引脚选择使用GPIO功能时,功能时,FIO1DIR寄寄存器中的方向控制位才有效。存器中的方向控制位才有效。l引脚功能选择寄存器引脚功能选择寄存器3(PINSEL3) PINS

6、EL3寄存器控制端口寄存器控制端口1高半部分的位功能。仅当引脚选高半部分的位功能。仅当引脚选择使用择使用GPIO功能时,功能时,FIO1DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。6引脚连接模块寄存器映射引脚连接模块寄存器映射l引脚功能选择寄存器引脚功能选择寄存器4(PINSEL4) PINSEL4寄存器控制端口寄存器控制端口2低半部分的位功能。仅当引脚选低半部分的位功能。仅当引脚选择使用择使用GPIO功能时,功能时,FIO2DIR寄存器中的方向控制位才有效寄存器中的方向控制位才有效。l引脚功能选择寄存器引脚功能选择寄存器7(PINSEL7) PINSEL7寄存器控制端口寄存器

7、控制端口3高半部分的位功能。仅当引脚选择高半部分的位功能。仅当引脚选择使用使用GPIO功能时,功能时,FIO3DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引脚功能选择寄存器引脚功能选择寄存器9(PINSEL9) PINSEL9寄存器控制端口寄存器控制端口4高半部分的位功能。仅当引脚选择高半部分的位功能。仅当引脚选择使用使用GPIO功能时,功能时,FIO4DIR寄存器中的方向控制位才有效。寄存器中的方向控制位才有效。l引脚功能选择寄存器引脚功能选择寄存器(PINSEL10) PINSEL10寄存器用于控制寄存器用于控制P2.2P2.6的跟踪功能。的跟踪功能。7本章提要本章提要

8、触摸屏模块设计实例触摸屏模块设计实例UART异步串口模块实例异步串口模块实例A/D转换器应用实例转换器应用实例LCD模块设计模块设计 LPC1768 简介简介 PWM控制实例控制实例GPIO与键盘实例与键盘实例85.2.1 LPC1768的的GPIO概述概述lLPC1768 GPIO简介简介LPC1768其引脚数为其引脚数为100,其中用做,其中用做GPIO功能的引脚达功能的引脚达70个。个。具体分配如下:具体分配如下:lP0端口端口28个:个:P0.0P0.11,P0.15P0.30。lP1端口端口24个:个:P1.0P1.1,P1.4,P1.8P1.10,P1.14P1.31。lP2端口端

9、口14个:个:P2.0P2.13。lP3端口端口2个:个:P3.25,P3.26。lP4端口端口2个:个:P4.27,P4.28。95.2.1 LPC1768的的GPIO概述概述LPC1768的的GPIO特性如下:特性如下:l加速加速GPIO功能:功能:GPIO寄存器被转移到外设寄存器被转移到外设AHB总线上,以实总线上,以实现高速的现高速的I/O时序;屏蔽寄存器允许将某些端口位作为一组进行时序;屏蔽寄存器允许将某些端口位作为一组进行操作,而其他位不变;所以操作,而其他位不变;所以GPIO寄存器可以以字节、半字和字寄存器可以以字节、半字和字的方式进行读的方式进行读/写操作;写操作;GPIO寄存

10、器可由寄存器可由GPDMA进行访问。进行访问。l置位和清零寄存器允许用一条指令置位和清零操作一个端口的置位和清零寄存器允许用一条指令置位和清零操作一个端口的任意位。任意位。l所有所有GPIO寄存器支持位带操作功能。寄存器支持位带操作功能。l单个端口的方向可控制。单个端口的方向可控制。l所有所有I/O端口在复位后默认为上拉输入端。端口在复位后默认为上拉输入端。lP0和和P2端口的每个引脚提供了中断功能。端口的每个引脚提供了中断功能。l每个端口的中断可被编程为上升沿、下降沿或边沿产生中断。每个端口的中断可被编程为上升沿、下降沿或边沿产生中断。l边沿检测支持异步操作。边沿检测支持异步操作。lP0和和

11、P2端口的每个引脚支持掉电唤醒功能。端口的每个引脚支持掉电唤醒功能。105.2.1 LPC1768的的GPIO概述概述2. GPIO寄存器描述寄存器描述通用名称通用名称描述描述访问访问复位值复位值PORTn寄存器名称和地址寄存器名称和地址FIODIR高速高速GPIO端口方向控制寄端口方向控制寄存器。该寄存器可单独控存器。该寄存器可单独控制每个端口引脚的方向制每个端口引脚的方向R/W0FIO0DIR:0 x2009000FIO1DIR:0 x2009020FIO2DIR:0 x2009040FIO3DIR:0 x2009060FIO4DIR:0 x2009080FIOPIN高速高速GPIO端口引

12、脚状态寄端口引脚状态寄存器。该寄存器真实反映存器。该寄存器真实反映数字端口引脚的当前状态数字端口引脚的当前状态R/W0FIO0PIN:0 x2009014FIO1PIN:0 x2009034FIO2PIN:0 x2009054FIO3PIN:0 x2009074FIO4PIN:0 x2009094FIOSET高速高速GPIO端口输出置位寄端口输出置位寄存器。写存器。写1使相应的端口引使相应的端口引脚输出高电平;写脚输出高电平;写0没有影没有影响响R/W0FIO0SET:0 x2009018FIO1SET:0 x2009038FIO2SET:0 x2009058FIO3SET:0 x200907

13、8FIO4SET:0 x2009098FIOCLR高速高速GPIO端口输出清零寄端口输出清零寄存器。写存器。写1使相应的端口引使相应的端口引脚输出低电平;写脚输出低电平;写0没有影没有影响响R/W0FIO0CLR:0 x200901CFIO1CLR:0 x200903CFIO2CLR:0 x200905CFIO3CLR:0 x200907CFIO4CLR:0 x200909CFIOMASK高速高速GPIO端口屏蔽寄存器端口屏蔽寄存器 R/W0FIO0MASK:0 x2009010FIO1MASK:0 x2009030FIO2MASK:0 x2009050FIO3MASK:0 x2009070F

14、IO4MASK:0 x2009090115.2.2 基于基于GPIO的矩阵键盘设计的矩阵键盘设计l常用键盘工作原理常用键盘工作原理(1)独立式按键接口)独立式按键接口l优点:电路配置灵活,优点:电路配置灵活,软件实现简单。软件实现简单。 l缺点:每个按键需要占缺点:每个按键需要占用一根口线,若按键数用一根口线,若按键数量较多资源浪费将比量较多资源浪费将比较严重较严重l应用:主要用于按键较应用:主要用于按键较少或对操作速度要求较少或对操作速度要求较高的场合,软件实现时高的场合,软件实现时,可以采用中断方式,可以采用中断方式,也可采用查询方式也可采用查询方式12(2)行列式按键接口)行列式按键接口

15、优点:相对于独立接口方式可优点:相对于独立接口方式可以节省很多以节省很多I/O资源,资源,相对于专用芯片键盘相对于专用芯片键盘可以节省成本,且更可以节省成本,且更为灵活;为灵活;缺点:需要用软件处理消抖、缺点:需要用软件处理消抖、重键等重键等应用:行列式按键接口适应于应用:行列式按键接口适应于按键数量较多,又不按键数量较多,又不想使用专用键盘芯片想使用专用键盘芯片的场合。的场合。13键盘扫描阵列:键盘扫描阵列:一个瞬时接触开关(按钮)放一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点置在每一行与线一列的交叉点。矩阵所需的键的数目显然根。矩阵所需的键的数目显然根据应用程序而不同。每一行由据应

16、用程序而不同。每一行由一个输出端口的一位驱动,而一个输出端口的一位驱动,而每一列由一个电阻器上拉且供每一列由一个电阻器上拉且供给输入端口一位。给输入端口一位。扫描次数扫描次数输出输出( (行行) )输入输入( (列列) )键刚按下时键刚按下时000000110110第一次扫描第一次扫描011011111111第二次扫描第二次扫描101101111111第三次扫描第三次扫描110110110110键键9按下时扫描过程按下时扫描过程143专用芯片式设计专用芯片式设计l专用键盘处理芯片一般功能比较完善芯片本身能完成对按键专用键盘处理芯片一般功能比较完善芯片本身能完成对按键的编码、扫描、消抖和重键等问

17、题的处理,甚至还集成了显示的编码、扫描、消抖和重键等问题的处理,甚至还集成了显示接口功能。接口功能。l专用键盘处理芯片的优点很明显,可靠性高,接口简单,使用专用键盘处理芯片的优点很明显,可靠性高,接口简单,使用方便,适合处理按键较多的情况。但在很多应用场合,考虑成方便,适合处理按键较多的情况。但在很多应用场合,考虑成本因素可能并不是最佳选择。本因素可能并不是最佳选择。152. 33矩阵键盘电路设计矩阵键盘电路设计(1)功能要求)功能要求l利用利用LPC1768的的P1.24P1.29引脚外接引脚外接33矩阵键盘,矩阵键盘,将键盘的值通过连接在将键盘的值通过连接在P2.0P2.5引脚上的引脚上的

18、LED按照键盘按照键盘按键的编号顺序点亮显示。按键的编号顺序点亮显示。(2)硬件电路)硬件电路l33矩阵键盘识别实例的硬件电路如图矩阵键盘识别实例的硬件电路如图5-5所示。所示。K1K9的的9个轻触式按键以个轻触式按键以3行行3列的形式分别连接到列的形式分别连接到P1.24P1.29引脚上,其中引脚上,其中P1.24P1.26引脚用于连接矩阵键盘引脚用于连接矩阵键盘的行,的行,P1.27P1.29引脚用于连接矩阵键盘的列。引脚用于连接矩阵键盘的列。8个个LED发光二极管连接到发光二极管连接到LPC1768的的P2.0P2.7引脚上显引脚上显示按键编号。示按键编号。162. 33矩阵键盘电路设计

19、矩阵键盘电路设计175.2.3键盘驱动程序设计键盘驱动程序设计 在图在图5-3中,中,KR0KR2连接到连接到P1.24P1.26作为输出,作为输出,KL3KL5连接连接到到P1.27P1.29作为输入。作为输入。如果采用了中断,还要初始化中断寄存器。如果采用了中断,还要初始化中断寄存器。 33矩阵键盘的识别过程是由以下几个步骤构成:矩阵键盘的识别过程是由以下几个步骤构成:l判断按键是否按下。判断按键是否按下。l若有键按下,则延时若有键按下,则延时510ms,消除按键抖动。,消除按键抖动。l再判断按键是否真的按下。再判断按键是否真的按下。l若确实有键按下,则执行该按键的功能事件。若确实有键按下

20、,则执行该按键的功能事件。l判断按键是否释放,若没有释放则等待按键释放。判断按键是否释放,若没有释放则等待按键释放。键号键号二进制代码二进制代码十六进制代码十六进制代码键号键号二进制代码二进制代码十六进制代码十六进制代码K1XX11 01100 x36K6XX01 11010 x1DK2XX10 11100 x2EK7XX11 00110 x33K3XX01 11100 x1EK8XX11 10110 x3BK4XX11 01010 x35K9XX01 10110 x1BK5XX10 11010 x2D 33矩阵键盘键值代码表185.2.3键盘驱动程序设计键盘驱动程序设计1. 寄存器宏定义寄存

21、器宏定义将将32位位GPIO寄存器分成寄存器分成4个个8位的子寄存器进行访问,其他例子则采用开发位的子寄存器进行访问,其他例子则采用开发板自带寄存器定义方式来访问。板自带寄存器定义方式来访问。#define rFIO1DIR3 (*(volatile unsigned char *)0 x2009C023) / P1.24P1.31口方向控制寄存器口方向控制寄存器#define rFIO1PIN3 (*(volatile unsigned char *)0 x2009C037) / P1.24P1.31口状态寄存器口状态寄存器#define rFIO1SET3 (*(volatile unsi

22、gned char *)0 x2009C03B) / P1.24 P1.31口输出置位寄存口输出置位寄存器器#define rFIO1CLR3 (*(volatile unsigned char *)0 x2009C03F) / P1.24 P1.31口输出清零寄存器口输出清零寄存器#define rFIO2DIR0 (*(volatile unsigned char *)0 x2009C020) / P2.0 P2.7口方向控制寄存器口方向控制寄存器#define rFIO2SET0 (*(volatile unsigned char *)0 x2009C058) / P2.0 P2.7口输

23、出置位寄存器口输出置位寄存器#define rFIO2CLR0 (*(volatile unsigned char *)0 x2009C058) / P2.0 P2.7口输出清零寄存器口输出清零寄存器195.2.3键盘驱动程序设计键盘驱动程序设计2键盘初始化函数键盘初始化函数 键盘初始化函数主要针对键盘所用的端口属性进行初始化。在键盘工作键盘初始化函数主要针对键盘所用的端口属性进行初始化。在键盘工作之前,根据行列键盘电路设计原理将之前,根据行列键盘电路设计原理将P1.24P1.26配置为输出,配置为输出,P1.27P1.29配置为输入。如果采用了中断,还要初始化中断寄存器。配置为输入。如果采用

24、了中断,还要初始化中断寄存器。void KeyInit () /该函数对键盘使用的端口进行初始化该函数对键盘使用的端口进行初始化rFIO1DIR3 |=0 x07; /设置设置P1.24P1.26配置为输出,配置为输出,P1.27P1.29/配置为输入;其中配置为输入;其中1为输出。为输出。rFIO1CLR3| =0 x07; /设置设置P1.24P1.26输出为输出为0。203键盘扫描程序键盘扫描程序 根据扫描原理,设置的根据扫描原理,设置的P1.24P1.26按如表按如表5-5所示的顺序所示的顺序输出,比较每次扫描输出,比较每次扫描P1.27P1.29的输入值是否等于键刚被的输入值是否等于

25、键刚被按下的输入值,如果相等,找出输出为零的行,则该行即为被按下的输入值,如果相等,找出输出为零的行,则该行即为被按下的行。按下的行。扫描次数扫描次数输出输出(行行)第一次扫描第一次扫描110第二次扫描第二次扫描101第三次扫描第三次扫描011是否等于第一次列是否等于第一次列输入值输入值将行值放入临时变量低将行值放入临时变量低4位,返回读位,返回读取结果取结果是是否否获取键盘列输入值,放入临时变量获取键盘列输入值,放入临时变量高高4位位按表按表5-5依次改变依次改变行输出值行输出值读取键盘列输入值读取键盘列输入值21BYTE GetKey() /键盘扫描子程序键盘扫描子程序 BYTE i, k

26、eytemp;keytemp= rFIO0PIN0 &0 x38; /将列的值存入将列的值存入keytemp的的36位位for(i = 1; i=4; i=1)rFIO1CLR3 |=0 x3F;rFIO1SET3 =i&0 x3F;if(rFIO0PIN0 &0 x38)= keytemp) /比较是否有低电平输入比较是否有低电平输入 keytemp=(keytemp&0 x38)|i; /将行的值存入将行的值存入keytemp的的02位位break; return keytemp;224.按键判断函数按键判断函数 该函数主要通过对输入端口是否有低电平产生来判断是否该函数主要通过对输入端口是

27、否有低电平产生来判断是否有键被按下。用于在轮询方式查询键盘时检测是否有键按下。有键被按下。用于在轮询方式查询键盘时检测是否有键按下。采用中断方式时不需要该函数。采用中断方式时不需要该函数。BYTE IsKeyPressed() /是否处于按下状态是否处于按下状态 if(rFIO1PIN3 &0 x38=0 x38) /输入端口是否出现输入端口是否出现 0return FALSE;elsereturn TRUE;235. 键盘去抖函数键盘去抖函数 由于在键盘扫描过程中有可能出现外界因素引起的键盘抖动造成按键瞬由于在键盘扫描过程中有可能出现外界因素引起的键盘抖动造成按键瞬间接触的情况,如果不进行去

28、抖可能造成按键的误输入。通常是采用程序延间接触的情况,如果不进行去抖可能造成按键的误输入。通常是采用程序延时来消抖时来消抖BYTE ScanKey() BYTE key; key=GetScanKey(); OSTimeDly(50); /延时延时50毫秒毫秒 if(key!=GetScanKey() /延时延时50毫秒毫秒 return 0; /返回错误代码返回错误代码246. 键盘扫描与键盘扫描与LED灯显示控制主程序灯显示控制主程序将在键盘按键编号显示到对应的将在键盘按键编号显示到对应的LED灯上,灯上,其他灯熄灭。其他灯熄灭。LED灯显示值送到灯显示值送到P2.0P2.7引脚上即可驱动

29、点亮相应引脚上即可驱动点亮相应LED灯。灯。按键编号按键编号二进制代码二进制代码十六进制代码十六进制代码00000 00010110000 00100220000 01000430000 10000840001 00001050010 00002060100 00004071000 00008081111 1111FF25int main(void) int i;unsigned char temp;rFIO2DIR0=0 xFF;/配置配置P2.0P2.7为输出方向为输出方向 rFIO2CLR0=0 xFF;/使使P2.0P2.7输出全为低电平输出全为低电平KeyInit () while(

30、1) if(IsKeyPressed()/检测是否有键按下检测是否有键按下 temp=ScanKey()for(i=0;isizeof(KEYTAB);i+)/查查KEYTAB表表if( temp=KEYTABi ) rFIO2CLR0=0 xFF; /先清零先清零rFIO2SET0=LEDi; /若找到显示键值若找到显示键值 26本章提要本章提要触摸屏模块设计实例触摸屏模块设计实例UART异步串口模块实例异步串口模块实例A/D转换器应用实例转换器应用实例LCD模块设计模块设计 LPC1768 简介简介 PWM控制实例控制实例GPIO与键盘实例与键盘实例275.3.1异步串行通信概述异步串行通

31、信概述lUART(Universal Asynchronous Receiver and Transmitter,通用异步收发器)接口。,通用异步收发器)接口。l而而RS232、RS499、RS423、RS422和和RS485等,等,是物理接口标准规范和总线标准规范,对应各种异步是物理接口标准规范和总线标准规范,对应各种异步串行通信口的接口标准和总线标准,它规定了通信口串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性的电气特性、传输速率、连接特性和接口的机械特性等内容。等内容。 281异步串行通信协议异步串行通信协议 异步串行方式是将传输数据的每个字

32、符一位接一位异步串行方式是将传输数据的每个字符一位接一位(例如先例如先低位、后高位低位、后高位)地传送。数据的各不同位可以分时使用同一传输地传送。数据的各不同位可以分时使用同一传输通道,因此串行通道,因此串行I/O可以减少信号连线,最少用一对线即可进行可以减少信号连线,最少用一对线即可进行。 1111/01/01/01/01/01/01/01/01100D0D0D0D3D4D5D6第第n个字符个字符空空闲闲位位空空闲闲位位空空闲闲位位停停止止位位奇奇偶偶位位起起始始位位数据位数据位微机异步串行通信中,常用的波特率为微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1

33、200,2400,4800,9600 ,115200等等。29接收方按约定的格式接收数据,并进行检查,一般可以查出接收方按约定的格式接收数据,并进行检查,一般可以查出以下三种错误:以下三种错误:1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。状态和约定不符。2)帧格式错:一个字符从起始位到停止位的总位数不对。)帧格式错:一个字符从起始位到停止位的总位数不对。3)溢出错:若先接收的字符尚未被微机读取,后面的字符)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。又传送过来,则产生溢出错。 302异步串行

34、通信接口定义异步串行通信接口定义一般一般UART接口定义四根引脚,分别如下:接口定义四根引脚,分别如下:1)RxD(Transmit Data)数据接收引数据接收引脚,用于串行通信数据接收;脚,用于串行通信数据接收;2)TxD(Receive Data)数据发送引脚数据发送引脚,用于串行通信数据发送;,用于串行通信数据发送;3)RTS(Request to Send)请求数据请求数据发送引脚,用于标明接收设备有没有准备发送引脚,用于标明接收设备有没有准备好接收数据,即当终端要发送数据时,使好接收数据,即当终端要发送数据时,使该信号有效;该信号有效;4)CTS(Clear to Send)允许数

35、据发允许数据发送引脚,用于送引脚,用于CTS来起动和暂停来自计算来起动和暂停来自计算机的数据流,用来表示从设备准备好接收机的数据流,用来表示从设备准备好接收主设备发来的数据,是对请求发送信号主设备发来的数据,是对请求发送信号RTS的响应信号。的响应信号。UART AUART BTxDRxDCTSRTSTxDRxDCTSRTS313、 RS-232-C 目前目前RS-232RS-232是是PCPC机与通信工业中应用最广泛的种串行接口机与通信工业中应用最广泛的种串行接口。RS-232RS-232被定义为一种在低速率串行通信中增加通信距离的单被定义为一种在低速率串行通信中增加通信距离的单端标准。端标

36、准。RS-232RS-232遵循遵循RS-232-CRS-232-C标准,美国电子工业协会标准,美国电子工业协会(Electronic Industries Association(Electronic Industries Association,EIA)EIA)把把RS-232-CRS-232-C定定义为:义为:“在数据终端设备和数据通俏设备之间使用串行二进制在数据终端设备和数据通俏设备之间使用串行二进制数据交换的接口数据交换的接口”。 RS-232-CRS-232-C标准是一种硬件协议,用于连标准是一种硬件协议,用于连接接DIE(Data Terminal EquipmentDIE(Da

37、ta Terminal Equipment,数据终端设备,数据终端设备) )和和DCE(Data Communications EquipmentDCE(Data Communications Equipment,数据通信设备,数据通信设备) )两种两种设备。设备。 RS-232-CRS-232-C定义包括以下几个方面:定义包括以下几个方面:l接口的机械特性;接口的机械特性;l电气信号特征;电气信号特征;l交换功能特性。交换功能特性。32 RS-232-CRS-232-C采用采用2525针连接器,阳极针连接器,阳极( (插头插头) )接接DTEDTE,阴极,阴极( (插座插座) )接接DCED

38、CE。虽然本标准没有规定连接器的实际类型,但工业上对。虽然本标准没有规定连接器的实际类型,但工业上对D-25D-25类型类型的连接器实行了标准化。的连接器实行了标准化。 在电气方向,在电气方向, RS-232-CRS-232-C作了以下规定:作了以下规定:l驱动器上的负载电容不超过驱动器上的负载电容不超过2500pF2500pF。l驱动器上的负载电阻在驱动器上的负载电阻在30003000欧欧-7000-7000欧之间。欧之间。l在指定负载下,数据信号传输率在指定负载下,数据信号传输率( (或波特率或波特率) )低于低于2000bps2000bps。l相对于信号地线,相对于信号地线,RS-232

39、-CRS-232-C线的最高电压不超过线的最高电压不超过15v15vl驱动器能产生驱动器能产生+5- +15v(+5- +15v(逻辑逻辑0)0)和和-5- -15v(-5- -15v(逻辑逻辑1)1)的电压。的电压。l输入端能接收输入端能接收+5- +15v(+5- +15v(逻辑逻辑0)0)和和-5- -15v(-5- -15v(逻辑逻辑1)1)的信号。的信号。33 在在RS-232-CRS-232-C标准建议信号的传输速度控制在标准建议信号的传输速度控制在20kbps20kbps内,在内,在高速传输时,建议电缆长度不超过高速传输时,建议电缆长度不超过5050英尺。简单的计算公式为英尺。简

40、单的计算公式为:2525英尺英尺( (半负载量半负载量) )时数据信号传输率增加到时数据信号传输率增加到40kbps40kbps、12.512.5英英尺时数据信号传输率增加到尺时数据信号传输率增加到80kbps80kbps、6 6英尺时数据信号传输率增英尺时数据信号传输率增加到加到160kbps160kbps。事实上,许多通信包能使两台计算机之间的数据。事实上,许多通信包能使两台计算机之间的数据信号传输率达到信号传输率达到115.2kbps115.2kbps。注意,。注意, RS-232-CRS-232-C标准并没有定义标准并没有定义“标推标推”波特率。波特率。 RS-232-CRS-232-

41、C标准允许数据在同一时刻收发,也标准允许数据在同一时刻收发,也就是全双工通信方式。就是全双工通信方式。 RS-232-CRS-232-C标准定义的标准定义的2525针实际上仅用了其中针实际上仅用了其中9 9针。针。RS-232-CRS-232-C通信所保留的通信所保留的9 9针见表针见表6-76-7。注意,。注意,PCPC机上的通信端口一般是作机上的通信端口一般是作为为DTEDTE连接连接 ( (即阳性连接器即阳性连接器) ) 。 在实际的应用中,利用在实际的应用中,利用RS-232-CRS-232-C的通信通常只使用其中的的通信通常只使用其中的3 3根线,即根线,即RdRd、TxDTxD和和

42、 GNDGND。34说明说明编写词编写词DTE DB-25M针脚号针脚号DTE DB-9M针脚号针脚号方向方向DTE DB-9F针脚号针脚号DTE DB-25F针脚号针脚号发送发送TxD2333接收接收RxD3222发送请求发送请求RTS4785清除发送清除发送CTS5874数据设置数据设置准备好准备好DSR66420数据载波数据载波准备好准备好DCD8118数据终端数据终端准备好准备好DTR20466振铃检测振铃检测IndicatorTL2299信号地信号地GroundSG75535 4RS-422 RS-422由由RS-232发展而来。为改进发展而来。为改进RS-232通信距离短、通信距离

43、短、速度低的缺点,速度低的缺点,RS-422定义了一种平衡通信接口,将传输定义了一种平衡通信接口,将传输速率提高到速率提高到10Mbps,允许在一条平衡总线上连接最多,允许在一条平衡总线上连接最多10个个接收器。接收器。RS-422是一种单机发送、多机接收的单向、平衡是一种单机发送、多机接收的单向、平衡传输规范。传输规范。RS-422的数据信号采用差分传输方式,也称做的数据信号采用差分传输方式,也称做平衡传输。它使用一对双绞线进行数据传输。平衡传输。它使用一对双绞线进行数据传输。 驱动器能产生驱动器能产生+2- +6v(+2- +6v(逻辑逻辑0)0)和和-2- -6v(-2- -6v(逻辑逻

44、辑1)1)36 RS-422标准全称是标准全称是“平衡电压数字接口电路的电气特性平衡电压数字接口电路的电气特性”。由于接收器采用高输入阻抗并且发送驱动器具有比由于接收器采用高输入阻抗并且发送驱动器具有比RS-232更更强的驱动能力,故允许在相同传输线上连接多个接收节点,强的驱动能力,故允许在相同传输线上连接多个接收节点,最最多可接多可接10个节点个节点,即一个主设备,即一个主设备(Master),其余为从设备,其余为从设备(Slave),从设备之间不能通信,所以,从设备之间不能通信,所以RS-422支持点对多的双支持点对多的双向通信。向通信。RS-422四线接口由于采用单独的发送和接收通道,四

45、线接口由于采用单独的发送和接收通道,因此不必控制数据方向,备装置之间任何必须的信号交换均可因此不必控制数据方向,备装置之间任何必须的信号交换均可以按软件方式以按软件方式(XON/XOFF握手握手)或硬件方式或硬件方式(一对单独的双绞一对单独的双绞线线)实现。实现。37 RS-422的最大传输距离为的最大传输距离为4000英尺英尺(约约1219米米),最大,最大传输速率为传输速率为1Mbps。其平衡双绞线的长度与传输速率成反比。其平衡双绞线的长度与传输速率成反比,在,在100Kbps速率以下,才可能达到最大传输距离。只有在速率以下,才可能达到最大传输距离。只有在很短的距离厂才能获得最高传输速率。

46、一般很短的距离厂才能获得最高传输速率。一般100米长的双绞线米长的双绞线上所能获得的最大传输速率仅为上所能获得的最大传输速率仅为1Mbps。 RS-422需要一终接电阻,要求其阻值约等于传输电缆的特需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在短距离传输时可不需终接电阻,即一般在性阻抗。在短距离传输时可不需终接电阻,即一般在300米以米以下不需终接电阻。终接电阻接在传输电缆的最远端。下不需终接电阻。终接电阻接在传输电缆的最远端。38 5RS-485串行总线接口串行总线接口 为扩展应用范围,为扩展应用范围,EIA在在RS-422的基础上制定了的基础上制定了RS-485标标准,增加了多点、

47、双向通信能力,通常在要求通信距离为几十准,增加了多点、双向通信能力,通常在要求通信距离为几十米至上千米时,广泛采用米至上千米时,广泛采用R5-485收发器。收发器。 RS-485收发器采用平衡发送和差分接收,即在发送端,驱收发器采用平衡发送和差分接收,即在发送端,驱动器将动器将TTL电平信号转换成差分信号输出;在接收端,接收器电平信号转换成差分信号输出;在接收端,接收器将差分信号变成将差分信号变成TTL电平,因此具有抑制共模干扰的能力,加电平,因此具有抑制共模干扰的能力,加上接收器具有高的灵敏度,能检测低达上接收器具有高的灵敏度,能检测低达200mV的电压,故数的电压,故数据传输可达千米以外。

48、据传输可达千米以外。39 RS-485许多电气规定与许多电气规定与RS-422相仿,如都采用平衡传输相仿,如都采用平衡传输方式、都需要在传输线上接终接电阻等。方式、都需要在传输线上接终接电阻等。RS-485可以采用二可以采用二线与四线方式,二线制可实现真正的多点双向通信。而采用四线与四线方式,二线制可实现真正的多点双向通信。而采用四线连接时,与线连接时,与RS-422一样只能实现点对多的通信,即只能有一样只能实现点对多的通信,即只能有一个主一个主(Master)设备,其余为从设备,但它比设备,其余为从设备,但它比RS-422有所改有所改进。无论四线还是二线连接方式总线上都可连接进。无论四线还是

49、二线连接方式总线上都可连接多达多达32个设个设备备。40 RS-485与与RS-422的共模输出电压是不同的。的共模输出电压是不同的。RS-485共共模输出电压在模输出电压在-7V至至+12V之间,而之间,而RS-422在在-7V至至+7V之间,之间,RS-485接收器最小输入阻抗为接收器最小输入阻抗为12千欧;千欧;RS-422是是4千欧;千欧;RS-485满足所有满足所有RS-422的规范,所以的规范,所以RS-485的驱动器可以的驱动器可以在在RS-422网络中应用,但网络中应用,但RS-422的驱动器并不完全适用于的驱动器并不完全适用于RS-485网络。网络。 RS-485与与RS-4

50、22一样,最大传输速率为一样,最大传输速率为10Mb/s。当波特。当波特率为率为1.2kbps时,最大传输距离理论上可达时,最大传输距离理论上可达15千米。平衡双绞千米。平衡双绞线的长度与传输速率成反比,在线的长度与传输速率成反比,在100kbps速率以下,才可能使速率以下,才可能使用规定最长的电缆长度。用规定最长的电缆长度。 RS-485需要需要2个终接电阻,接在传输总线的两端,其阻值个终接电阻,接在传输总线的两端,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在阻,即一般在300米以下不需终接电阻。米以下不需终接

51、电阻。415.3.2 LPC1768 UART串口简介及接口电路设计串口简介及接口电路设计 LRC1768微控制器内置为微控制器内置为4路异步串口通信收发器(路异步串口通信收发器(UART):UART0、UART1、UART2和和UART3。它们的主要特征如下:。它们的主要特征如下:l支持支持5、6、7和和8位的数据长度;位的数据长度;l支持支持4种类型的奇偶校验;种类型的奇偶校验;l支持支持1位和位和2位的停止位;位的停止位;l16字节收发字节收发FIFO;l内置波特率发生器;内置波特率发生器;l支持支持MDA的发送和接受;的发送和接受;l用于精确控制波特率的小数分频器,并拥有实现软件流控用

52、于精确控制波特率的小数分频器,并拥有实现软件流控制的自动波特率检测能力和机制;制的自动波特率检测能力和机制;l多处理器地址模式;多处理器地址模式;lUART3还包含一种支持红外通信的还包含一种支持红外通信的IRDA模式;模式;lUART1还具有还具有Modem接口信号和接口信号和RS-485/EIA-485模式。模式。42接收器接收器缓冲寄存器接收器FIFO接收器移位寄存器接收器DMA接口波特率发送器小数因子分频器主分频器(DLM,DLL)FIFO控制和状态线控制和状态IrDA和自动波特检测中断控制和状态发送器发送器保持寄存器发送器FIFO发送器移位寄存器发送器DMA接口TX_DMA_REQT

53、X_DMA_CLRPCLKUARTn interruptRX_DMA_REQRX_DMA_CLRUn_RXDUn_OEUn_TXD433.寄存器描述寄存器描述(1)UART接收器缓冲寄存器(接收器缓冲寄存器(UnRBR) 接收器缓冲寄存器(接收器缓冲寄存器(UnRBR)是)是UART接收接收FIFO的最的最高字节,包含了最早接收到的字符,并且可通过总线接口进高字节,包含了最早接收到的字符,并且可通过总线接口进行读取。行读取。LSB(位位0)表示最早接收的数据位。要正确的成对读表示最早接收的数据位。要正确的成对读出有效的接收字节及其状态位,应先读取线状态寄存器出有效的接收字节及其状态位,应先读取

54、线状态寄存器(LSR)的内容,然后再读取接收器缓冲寄存器()的内容,然后再读取接收器缓冲寄存器(RBR)中中的字节。的字节。(2)UART发送保持寄存器(发送保持寄存器(UnTHR) 发送保持寄存器(发送保持寄存器(UnTHR)是)是UART发送发送FIFO单元的单元的最高字节,是发送最高字节,是发送FIFO单元中的最新字符,可通过总线接单元中的最新字符,可通过总线接口进行写入。口进行写入。LSB代表第一个要发送出去的位。代表第一个要发送出去的位。 如果要访问发送保持寄存器(如果要访问发送保持寄存器(THR),线控制寄存器),线控制寄存器(LCR)中的除数锁存器访问位()中的除数锁存器访问位(

55、DLAB)必须为)必须为0。发送。发送保持寄存器(保持寄存器(THR)为只写寄存器。)为只写寄存器。44(3)UART除数锁存器(除数锁存器(UxDLL/UxDLM) UART除数锁存器由除数锁存器由DLL和和DLM构成,是构成,是UART波特率发波特率发生器的一部分,它与小数分频器一同使用,保持产生波特率时生器的一部分,它与小数分频器一同使用,保持产生波特率时钟的钟的APB时钟(时钟(PCLK)分频值,波特率时钟必须使波特率的)分频值,波特率时钟必须使波特率的16倍。倍。(4)UART中断使能寄存器(中断使能寄存器(UnIER) UART中断使能寄存器(中断使能寄存器(UnIER)用于使能)

56、用于使能UARTN的中断的中断源,包含的源,包含的UART中断使能有接收数据有效中断使能、发送中中断使能有接收数据有效中断使能、发送中断使能、线状态中断使能、自动波特率的结束和超时中断使能断使能、线状态中断使能、自动波特率的结束和超时中断使能等。等。(5)UART中断标识寄存器(中断标识寄存器(UnIIR) UART中断标识寄存器(中断标识寄存器(UnIIR)提供状态代码,用于指示)提供状态代码,用于指示一个挂起处理中断的优先级别和中断源。在访问一个挂起处理中断的优先级别和中断源。在访问UART中断标中断标识寄存器(识寄存器(UnIIR)过程中,中断被冻结。如果在访问)过程中,中断被冻结。如果

57、在访问UART中断标识寄存器(中断标识寄存器(UnIIR)过程中产生了中断,该中断会被记)过程中产生了中断,该中断会被记录,下次访问录,下次访问UnIIR时可读出该中断。时可读出该中断。45 (6)UART FIFO 控制寄存器(控制寄存器(UnFCR) UART FIFO 控制寄存器用于配置控制寄存器用于配置FIFO单元的操作,主要单元的操作,主要有有FIFO使能、使能、FIFO复位、复位、DMA模式选择和接收触发点选择。模式选择和接收触发点选择。(7)UART线控制寄存器(线控制寄存器(U0LCRU3LCR) UART线控制寄存器用于设置发送或数据字符的格式。线控制寄存器用于设置发送或数据

58、字符的格式。(8)UART线状态寄存器(线状态寄存器(UnLSR) UART线状态寄存器是一个只读寄存器,提供了线状态寄存器是一个只读寄存器,提供了UARTn的的发送和接收模块的状态信息。发送和接收模块的状态信息。(9)UART小数分频器寄存器(小数分频器寄存器(UnFDR) UART的小数分频器寄存器控制产生波特率的时钟预分频的小数分频器寄存器控制产生波特率的时钟预分频器,并且用户可自由对该寄存器进行读器,并且用户可自由对该寄存器进行读/写操作。写操作。波特率计算公式如下:波特率计算公式如下:)1(25616MULVALDIVADDVALUNDLLLUNDLMPCLKUART )(波特率波特

59、率)1(25616MULVALDIVADDVALUNDLLLUNDLMPCLKUART )(波特率波特率465.3.3串口硬件电路设计串口硬件电路设计475.3.4串口驱动程序设计串口驱动程序设计与与PC机通信的软件编程涉及的内容如下:机通信的软件编程涉及的内容如下:l初始化程序。主要包括系统时钟配置初始化和初始化程序。主要包括系统时钟配置初始化和UART0初始化初始化。在。在UART0初始化中主要包括引脚的配置、初始化中主要包括引脚的配置、FIFO缓冲器的使缓冲器的使用、波特率的配置和数据帧格式的设置。用、波特率的配置和数据帧格式的设置。l串口的收发程序。主要包括字节接收与发送,字符串发送函

60、数串口的收发程序。主要包括字节接收与发送,字符串发送函数。lMain()主程序。除了实现初始化函数的调用之外,在主程序。除了实现初始化函数的调用之外,在while(1)无限循环程序实现字符串的定时输出。)无限循环程序实现字符串的定时输出。481. 常量宏声明常量宏声明#define FOSC 12000000 /* 振荡器频率振荡器频率 */#define FCCLK (FOSC* 8) /* 主时钟频率主时钟频率=100Mhz , FOSC的整数倍的整数倍 */#define FCCO (FCCLK * 3) /* PLL频率频率(275Mhz550Mhz) */ /* 与与FCCLK相同,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论