第5章嵌入式程序设计2

上传人:公**** 文档编号:569237664 上传时间:2024-07-28 格式:PPT 页数:69 大小:2.42MB
返回 下载 相关 举报
第5章嵌入式程序设计2_第1页
第1页 / 共69页
第5章嵌入式程序设计2_第2页
第2页 / 共69页
第5章嵌入式程序设计2_第3页
第3页 / 共69页
第5章嵌入式程序设计2_第4页
第4页 / 共69页
第5章嵌入式程序设计2_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《第5章嵌入式程序设计2》由会员分享,可在线阅读,更多相关《第5章嵌入式程序设计2(69页珍藏版)》请在金锄头文库上搜索。

1、3 Sept. 2008Confidential六、嵌入式程序设计六、嵌入式程序设计2东软人才实训中心嵌入式程序设计2目标:本章向学员介绍串行总线模块,通过本课的学习,学员应该掌握如下知识: UART0/1 功率控制 LCD显示学时:6.03 Sept. 2008Confidential6.16.1 UART0 UART0特性 LPC2000系列微控制器具有两个功能强大的UART,其中 UART0具有如下的特性:16字节接收FIFO和16字节发送FIFO;符合16C550工业标准;接收FIFO触发点可设置为1、4、8或14字节;内置波特率发生器。 UART1与UART0基本功能相同,但是增加了

2、一个调制解调器(Modem)接口。所以UART1具有UART0的所有特性。3 Sept. 2008Confidential 使用UART0通信需要两个引脚,分别为:引脚名称类型描述RxD0输入串行输入,接收数据TxD0输出串行输出,发送数据6.1.1 使用UART0通信LPC2000的I/O电压为3.3V(可承受5V),连接时须注意电平的匹配。与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。LPC2000其它通信设备LPC2000PC机串口232电平转换TxD0RxD0TxD0RxD0TxD0RxD0TxD0RxD03 Sept. 2008Confident

3、ialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL1. 在使用UART之前需要设置的寄存器6.1.2 UART0内部结构示意图U0LCRU0IERU0FCRU0DLMU0DLLFIFO控制中断使能UART0格式设置波特率设置3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL2.发送数据的通道U0THRU0TSRVPB接口CPU内核通过VPB

4、接口对UART0的寄存器进行读写访问发送缓存发送移位寄存器6.1.2 UART0内部结构示意图(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL3.接收数据的通道U0RBRU0RSRVPB接口接收缓存接收移位寄存器6.1.2 UART0内部结构示意图(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DL

5、MU0DLL4.通信过程中可能影响的标志位U0LSRU0IIR中断标志UART0当前状态6.1.2 UART0内部结构示意图(续)3 Sept. 2008Confidential6.1.3 UART0相关寄存器描述-接收缓存寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0RBRU0RBR描述复位值7 : 0接收缓存寄存器,它包含了接收FIFO中最早接收到的字节未定义 U0RSR移位寄存器从RxD0引脚接收的有效数据将被送到接收FIFO中。通过读取U0RBR寄存器可以将接收FIFO中

6、最早接收到的字节读出,当FIFO中不再包含有效数据时,该寄存器反映接收到的最后一个有效字节数据。接收的数据不足8位时,高位用0填充。注意: U0RBR只读。访问该寄存器时,U0LCR的第8位(除数锁存访问位)必须为0。3 Sept. 2008Confidential6.1.4 UART0相关寄存器描述-发送器保持寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0THR描述复位值7 : 0发送缓存寄存器,写入该寄存器的值保存到发送FIFO中,当该字节到达FIFO底部时,它将被送入发送移

7、位寄存器(U0TSR)进行发送。未定义写入该寄存器的值将是发送FIFO中的最高字节。注意: U0THR只写。它的地址与U0RBR相同,通过读/写操作予以区分。访问该寄存器时,U0LCR的第8位(除数锁存访问位)必须为0。U0THR3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0THRU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLL6.1.5 UART0相关寄存器描述-除数锁存寄存器名称描述复位

8、值U0DLL7:0除数锁存寄存器低字节两个寄存器一起构成一个16位的除数,决定UART0的波特率。未定义U0DLM7:0除数锁存寄存器高字节这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的16倍。波特率计算公式如下:BaudRate = FPCLK / (U0DLM,U0DLL16)U0DLMU0DLL注意:由于U0DLL、U0DLM寄存器与其它寄存器的地址重叠,所以在访问它们时,U0LCR的第8位(除数锁存访问位)必须为1。3 Sept. 2008ConfidentialU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLL6.1.6 U

9、ART0相关寄存器描述-中断使能寄存器U0IER描述复位值0RBR中断使能。1:使能RDA、CTI中断;0:禁止RDA、CTI中断。01THRE中断使能。1:使能THRE中断;0:禁止THRE中断。该中断状态可从U0LSR.5读出。02RLS中断使能。1:禁止RLS中断;0:禁止RLS中断;该中断状态可从U0LSR4:1读出。07 : 3保留,用户软件不要向这些位写入1。未定义U0IER U0IER可以控制UART0的4个中断源。其中RBR中断使能包括两个中断,一个是接收数据可用(RDA)中断,一个是接收超时中断(CTI)。稍后将对各中断源作详细介绍。3 Sept. 2008Confident

10、ialU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLL6.1.7 UART0相关寄存器描述-中断标识寄存器U0IIR描述复位值0中断挂起。1:没有挂起的中断;0:至少有一个中断被挂起。03 : 1中断标识。这3位表示了对应于UART0 Rx FIFO的中断。未列出的其它组合作为保留值。011:接收线状态中断(RLS)0010:接收数据可用中断(RDA)0110:字符超时指示(CTI)001:发送中断(THRE)5: 4保留,用户软件不要向这些位写入1。未定义7:6FIFO使能,等效于U0FCR的bit00 U0IIR提供状态代码用于指示一个挂起中

11、断的中断源和优先级。在访问U0IIR过程中,中断被冻结。如果在访问U0IIR时产生了中断,该中断将被记录,在下次访问U0IIR时可以读出,避免了中断的丢失。U0IIR3 Sept. 2008ConfidentialU0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLL中断源和中断使能的关系U0IIRRLS中断(U0IIR3:1=011)RDA中断(U0IIR3:1=010)CTI中断(U0IIR3:1=110)THRE中断(U0IIR3:1=001)VIC中断控制器ARM7TDMI内核U0IERbit2bit0bit16.1.7 UART0相关寄存器描

12、述-中断标识寄存器(续)3 Sept. 2008Confidential优先级最高第二第二第三U0THRU0TSRTxD0RxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLLU0IIRRLS中断RDA中断CTI中断THRE中断VIC中断控制器ARM7TDMI内核U0IERbit2bit0bit1中断源和中断使能的关系6.1.7 UART0相关寄存器描述-中断标识寄存器(续)3 Sept. 2008Confidential6.1.8 UART0相关寄存器描述-FIFO控制寄存器U0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接

13、口U0FCR与CPU内核相连U0DLMU0DLL位765 : 3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOU0FCR U0FCR控制UART0接收和发送FIFO的操作。使能FIFO:FIFO使能。该位的任何变化都将清空UART0的FIFO。 1: 使能UART0的接收和发送FIFO。 0:禁止FIFO ,此时接收缓存只有1个字节。而发送FIFO不会被关闭。3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位765 : 3

14、210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOU0FCR复位RxFIFO:接收FIFO复位。当该位置位时,UART0接收FIFO中的所有字节被清零并复位。注意:该位会自动清零。6.1.8 UART0相关寄存器描述-FIFO控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位765 : 3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOU0FCR复位TxFIFO:发送FIFO复位。当该位置位

15、时,UART0发送FIFO中的所有字节被清零并复位。注意:该位会自动清零。6.1.8 UART0相关寄存器描述-FIFO控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位765 : 3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOU0FCR:这些位保留,用户程序不要向这些位写入1。6.1.8 UART0相关寄存器描述-FIFO控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TS

16、RTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位765 : 3210功能Rx触发点设置复位TxFIFO复位RxFIFO使能FIFOU0FCRRx触发点设置:通过设置这两位可以调整接收FIFO中触发RDA中断的有效字节数量。00:触发点0(1字节);01:触发点1(4字节);10:触发点2(8字节);11:触发点3(14字节);6.1.8 UART0相关寄存器描述-FIFO控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LS

17、RU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0THRU0TSRTxD0U0LCRU0LSRU0IIRU0IERU0DLMU0DLLP11D0D1D2D3D4D5D6D706.1.9 UART0相关寄存器描述-线状态控制寄存器U0LCR位765 : 4621 :0功能除数锁存间隔奇偶选择奇偶设置停止位字长UART数据帧结构停止位(12位)数据(58位)奇偶校验位(可选)起始位U0LCR寄存器: U0LCR控制发送和接收数据帧的格式。3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0LCRU0LSRU0IIRU0IERU0DLMU0

18、DLLU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位765 : 4321 :0功能除数锁存间隔奇偶选择奇偶设置停止位字长字长:这些位控制数据长度。00:5位字符长度;01:6位字符长度;10:7位字符长度;11:8位字符长度;位765 : 4621 :0功能除数锁存间隔奇偶选择奇偶设置停止位字长U0LCR6.1.9 UART0相关寄存器描述-线状态控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU

19、0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0LCR位765 : 4621 :0功能除数锁存间隔奇偶选择奇偶设置停止位字长停止位:控制每帧数据包含的停止位个数。0:1个停止位;1:2个停止位;6.1.9 UART0相关寄存器描述-线状态控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0LCR位765 : 4321 :0功能除数锁存间隔奇偶选择奇偶使能停止位字长奇偶使能:控制是否进行奇偶校验。如果

20、使能,发送时将添加一位校验位。0:禁止奇偶产生和校验;1:使能奇偶产生和校验;奇偶选择:设置奇偶校验类型。00:奇数(数据位+校验位奇数);01:偶数(数据位+校验位偶数);10:校验位强制为1;11:校验位强制为0;6.1.9 UART0相关寄存器描述-线状态控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0LCR位765 : 4621 :0功能除数锁存间隔奇偶选择奇偶使能停止位字长间隔:当该位为1时,输出引脚(TxD0)强

21、制为逻辑0,可以引起通信对方产生间隔中断。在某些通信方式中,使用间隔中断作为通信的起始信号(如:LIN Bus)。0:禁止间隔发送;1:使能间隔发送;6.1.9 UART0相关寄存器描述-线状态控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLLU0LCR位765 : 4321 :0功能除数锁存间隔奇偶选择奇偶使能停止位字长除数锁存:因为U0DLL和U0RBR/U0THR的地址重叠,通过设置该位可以指定其中某个寄存器操作。0:禁止访

22、问除数锁存寄存器;1:使能访问除数锁存寄存器;6.1.9 UART0相关寄存器描述-线状态控制寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDR U0LSR为只读寄存器,它反映了UART0接收和发送模块的状态信息。RDR:接收数据就绪。判断该位是否置1,决定能否从FIFO中读取数据。 0:接收缓存U0RBR为空; 1:U0RBR中包含有效数据。从接收FIFO中读走所有

23、数据后,恢复为0。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDROE:溢出错误标志。当U0RBR寄存器中已经有新的字符就绪,而接收FIFO已满时,该位置位。 0:接收缓存区没有溢出; 1:接收缓存区发生溢出错误。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008Confid

24、entialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDRPE:奇偶校验错误。在使能奇偶校验位之后,对所有接收的数据都进行奇偶校验,如果与U0LCR中的设置不符,将引起奇偶校验错误。 0:没有发生奇偶校验错误; 1:发生奇偶校验错误。读操作使该位恢复为0。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD

25、0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDRFE:帧错误标志。当接收字符的停止位为0时,产生帧错误。 0:没有发生帧错误; 1:发生帧错误。读取该位时恢复为0。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBI

26、FEPEOERDRBI:间隔中断标志。在发送数据时,如果RXD0引脚保持低电平,将产生间隔中断。发生间隔中断后,接收模块停止数据接收。 0:没有发生间隔中断; 1:发生间隔中断。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDRTHRE:反映U0THR是否为空,也可以认为发送FIFO是否为空。 0:不为空; 1:

27、空。对U0THR进行写操作,使该位恢复为0。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDRTEMT:当发送移位寄存器U0TSR和发送缓存U0THR均为空时,该位置位。 0:不为空; 1:空。对U0THR进行写操作,使该位恢复为0。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept

28、. 2008ConfidentialU0THRU0TSRTxD0U0RBRU0RSRRxD0U0LCRU0LSRU0IIRU0IERVPB接口U0FCR与CPU内核相连U0DLMU0DLL位76543210功能RXFETEMTTHREBIFEPEOERDRRXFE:如果一个带有接收错误(如帧错误、奇偶错误或间隔中断)的字符装入U0RBR时,该位置位。 0:U0RBR中没有接收错误,或U0FCR0为0即禁止接收FIFO; 1:U0RBR中包含至少一个接收错误。U0LSR6.1.10 UART0相关寄存器描述-线状态寄存器(续)3 Sept. 2008Confidential6.1.11 UART

29、0相关寄存器描述-中断源说明l 接收线状态RLS中断:该中断为最高优先级。它在UART0产生了四个错误条件(溢出错误(OE)、奇偶错误(PE)、帧错误(FE)和间隔中断(BI))中的任意一个时置位。通过查看U0LSR4:1可以了解到产生该中断的错误条件。读取U0LSR时清除该中断;3 Sept. 2008Confidentiall接收数据可用RDA中断:该中断与CTI中断并列为第二优先级。当接收的有效数据到达接收FIFO设置寄存器(U0FCR)中设置的触发点时,RDA被激活。当接收FIFO中的有效数据少于触发点时,RDA复位;1.移位寄存器(U0RSR)从RxD0 引脚接收串行数据后,送入接收

30、FIFO中;2.当接收FIFO中的有效数据数量到达预定的触发点时,置位RDA中断;3.从U0RBR寄存器中读取FIFO中最早到达的数据,当FIFO中的有效数据小于预定触发点时,清零RDA中断;接收FIFO12345679101112131415168触发点设置=8U0RBRU0RSRRxD0U0IIR3:1xxxU0IIR010100xxx1DATA6.1.11 UART0相关寄存器描述-中断源说明(续)3 Sept. 2008Confidentiall 字符超时CTI中断:该中断为第二优先级。当接收FIFO中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收3.54.5个字节所

31、需要的时间仍没有接收到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;接收FIFO12345679101112131415168触发点设置=8U0RBR1.移位寄存器(U0RSR)从RxD0引脚接收串行数据后,送入接收FIFO中;2.当接收FIFO中的有效数据少于触发个数,但至少有一个时,如果长时间没有数据到达,将触发CTI中断;3.从U0RBR中读取接收FIFO中的数据,或者有新的数据送入接收FIFO,都将清零CTI中断;U0RSRDATARxD0U0IIR3:1xxxU0IIR011100xxx16.1.11 UART0相关寄存器描述-中断源说明(续)3 Sept. 20

32、08Confidentiall 字符超时CTI中断:该中断为第二优先级。当接收FIFO中的有效数据少于预定的触发点数量,但至少有一个字节时,如果超过接收3.54.5个字节所需要的时间仍没有接收到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;接收FIFO12345679101112131415168触发点设置=8U0RBR说明:“3.54.5个字节的时间”,其意思是在串口当前的波特率下,发送3.54.5个字节所需要的时间;U0RSRDATARxD0U0IIR3:1xxxU0IIR011100xxx1注意:当接收FIFO中存在多个数据,从U0RBR读取数据,但是没有读完所有数据

33、,那么在经过3.54.5个字节的时间后也将触发CTI中断;6.1.11 UART0相关寄存器描述-中断源说明(续)3 Sept. 2008Confidential12345679101112131415168U0THRU0TSRTxD0U0IIR3:1xxxU0IIR01lTHRE中断:该中断为第三优先级。当发送FIFO为空并且满足一定的条件时,该中断将被触发。这些条件是:发送FIFO1.系统启动时,虽然发送FIFO为空,但不会产生THRE中断。DATA1100U0TSR2.在上一次发生THRE中断后,向发送FIFO中写入1个字节数据,将在延时一个字节加上一个停止位后发生THRE中断。这是因为

34、:如果发送移位寄存器为空,那么写入发送FIFO的数据将直接进入发送移位寄存器;此时发送FIFO仍然为空,如果立即产生THRE中断,就会影响紧接着要写入发送FIFO的数据;所以在发送完该字节以及一个停止位后,才产生THRE中断;6.1.11 UART0相关寄存器描述-中断源说明(续)3.如果在发送FIFO中有过两个字节以上的数据,但是现在发送FIFO为空时,将立即触发THRE中断。当THRE中断为当前有效的最高优先级中断时,往U0THR写数据,或者对U0IIR的读操作,将使THRE中断复位。3 Sept. 2008Confidential U0RBR与U0THR在同一地址上,但实际上是两个独立的

35、寄存器,读操作时选择U0RBR,写操作时选择U0THR; U0DLL与U0RBR/U0THR、U0DLM与U0IER在同一地址上,通过除数访问位DLAB选择。当该位为1时,选择U0DLL和U0DLM。为0时,选择U0RBR/U0THR和U0IER; 无论在U0FCR中是否使能FIFO,发送FIFO不能被禁止。关闭FIFO后,接收FIFO只有一个字节缓冲; 波特率计算公式:U0DLM、U0DLL = FPCLK/(16baud);6.1.12 使用UART0注意要点3 Sept. 2008Confidential6.1.13 UART0应用示例-操作流程设置引脚连接模块将对应IO连接到UART0

36、设置串口波特率设置串口工作模式发送或接收数据检查串口状态字或等待串口中断3 Sept. 2008Confidential6.1.14 UART0应用示例-初始化代码UART0初始化代码:#define UART_BPS 115200Void UART0_Ini(void) uint16 Fdiv; PINSEL0 = 0x00000005; U0LCR = 0x83; Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv / 256; U0LLM = Fdiv % 256; U0LCR = 0x03;定义表示波特率的宏,方便修改设置引脚连接模块8位数据、1停

37、止位、无奇偶较验、置位除数锁存位根据波特率计算分频值设置除数寄存器(除数锁存访问位必须置位)清除除数锁存位3 Sept. 2008ConfidentialUART0初始化代码:#define UART_BPS 115200Void UART0_Ini(void) uint16 Fdiv; PINSEL0 = 0x00000005; U0LCR = 0x83; Fdiv = (Fpclk / 16) / UART_BPS; U0DLM = Fdiv / 256; U0LLM = Fdiv % 256; U0LCR = 0x03;设置引脚连接模块将对应IO连接到UART0设置串口波特率设置串口工作

38、模式发送或接收数据检查串口状态字或等待串口中断6.1.14 UART0应用示例-初始化代码(续)3 Sept. 2008Confidential6.1.5 UART0应用示例-收发数据void UART0_SendByte(uint8 data) U0THR = data; while(U0LSR & 0x40) = 0);uint8 UART0_RcvByte(void) uint8 rcv_data; while(U0LSR & 0x01) = 0); rcv_data = U0RBR; return(rcv_data);查询方式发送一字节数据:查询方式接收一字节数据:将要发送的一字节数据

39、写入U0THR等待数据发送完毕等待数据到达从U0RBR中读出接收的数据返回接收的数据3 Sept. 2008Confidential实例目的:串行端口UART的应用。实例内容:学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。使用UART0、UART1进行串口数据的发送接收,要求利用UART1从虚拟串口接收的数据再发送给UART0。实例步骤:在Proteus中绘制原理图。在Keil for ARM中输入程序,并编译通过。加载ELF程序,观察仿真结果。采用Keil for ARM与Proteus的整合方式联调。6.1.6 实例 串口Hello World3 S

40、ept. 2008Confidential UART1收到数据?开始引脚功能配置UART初始化结束发数据到UART06.1.6 实例 原理图与软件流程3 Sept. 2008Confidential实例目的:串行端口UART中断的应用。实例内容:学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。使用串口UART1中断方式接收数据,当接收到8个连续数据后,取反LED,并将数据原封不动的发送到UART0。实例步骤:在Proteus中绘制原理图。在Keil for ARM中输入程序,并编译通过。加载ELF程序,观察仿真结果。采用Keil for ARM与Prote

41、us的整合方式联调。6.1.7 实例 串口中断3 Sept. 2008Confidential UART1收到数据?开始引脚功能配置UART初始化结束发数据到UART0使能FIFO,允许RBR中断设置向量控制寄存器6.1.7 原理图与软件流程3 Sept. 2008Confidential6.26.2 功率控制功率控制 LPC2114/2124/2210/2212/2214支持两种节电模式:空闲模式和掉电模式。另外还具有外设的功率控制特性,允许独立关闭应用中不需要的外设,这样可以进一步降低功耗。3 Sept. 2008Confidential 在该模式下,内核暂停止执行指令,直到发生复位或中断

42、为止,但系统时钟CCLK一直有效。外设功能在空闲模式下继续保持并可产生中断使处理器恢复运行。空闲模式使处理器、存储器系统和相关控制器以及内部总线不再消耗功率。空闲模式 在该模式下,振荡器关闭,这样芯片没有任何内部时钟。处理器状态和寄存器、外设寄存器以及内部SRAM值在掉电模式下被保持。芯片引脚的逻辑电平保持掉电时的状态。复位或特定的不需要时钟仍能工作的中断可终止掉电模式并使芯片恢复正常运行。由于掉电模式使芯片所有的动态操作都挂起,因此芯片的功耗降低到几乎为零。掉电模式6.2.1 空闲模式和掉电模式3 Sept. 2008Confidential功率控制寄存器(PCON):该寄存器控制芯片的节电

43、模式,下表为低两位的设置关系。位76543210功能PDIDLPD位IDL位芯片状态00正常工作01空闲模式10掉电模式11掉电模式6.2.2 空闲模式和掉电模式寄存器3 Sept. 2008Confidential外设功率控制寄存器(PCONP): 该寄存器对应位清0时允许将所选的外设功能关闭以实现节电的目的。芯片中有部分外设不能被关闭,分别为看门狗定时器、GPIO、引脚连接模块和系统控制模块。 该寄存器的每个位都控制一个外设,由于LPC2210/2212/2214具有EMC模块,而LPC2114/2114没有,所以它们的PCONP寄存器有所区别。 复位后,PCONP的值设置成使能所有接口和

44、外围功能。6.2.2 空闲模式和掉电模式寄存器 (续)位功能控制外设0保留1PCTIM0定时器02PCTIM1定时器13PCURT0串口04PCURT1串口15PCPWM0PWM06保留7PCI2CI2C位功能控制外设8PCSPI0SPI09PCRTCRTC10PCSPI1SPI1接口11保留12PCADA/D转换器13保留14保留15保留3 Sept. 2008Confidential实例目的:学习功率控制方法及编程。实例内容:学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。系统进入空闲状态,要求使用定时器中断唤醒。实例步骤:在Proteus中绘制原理图

45、。在Keil for ARM中输入程序,并编译通过。加载ELF程序,观察仿真结果。采用KEIL for ARM与PROTEUS的整合方式联调。6.2.3 实例:空闲模式功率控制3 Sept. 2008Confidential开始引脚功能配置定时器0初始化关闭外设进入空闲模式LED取反结束6.2.3 原理图与软件流程3 Sept. 2008Confidential要求:系统进入掉电模式,由外部中断1唤醒,唤醒后取反LED。6.2.4 练习:掉电模式功率控制3 Sept. 2008Confidential6.36.3 LCD LCD液晶显示液晶显示 在嵌入式系统应用中,如果微控制器本身带有液晶驱动

46、控制功能,则可以直接对点阵式液晶显示屏进行连接控制;如果微控制器本身没有液晶驱动控制功能,则需要外扩液晶驱动板来连接液晶显示屏,或者使用点阵式图形液晶显示模块。 由于点阵式液晶显示屏的引脚较多,生产厂家通常会将液晶显示屏和驱动电路装配在一起,形成液晶模块,即LCM。液晶模块在很大程度上方便了用户的使用,用户只要将其与微控制器连接,即可进行图形的显示输出控制。3 Sept. 2008Confidential6.3.1 液晶接口 这里以SMG240128A点阵图形液晶模块为例,介绍如何与LPC2000系列微控制器连接使用。 SMG240128A点阵图形液晶模块的点像素为240128点,黑色字/白色

47、底,STN液晶屏,视角为6:00,内嵌控制器为东芝公司的T6963C,外部显示存储器为32K字节。液晶模块采用8位总线接口与微控制器连接,内部集成了负压DC-DC电路(LCD驱动电压),使用时只需提供单5V电源即可。3 Sept. 2008Confidential引脚符号说明备注1FG显示屏框架外壳地接地2Vss电源地3Vdd电源(+5V)4VoLCD驱动电压(对比度调节负电压输入)5Wr写操作信号,低电平有效6Rd读操作信号,低电平有效7CE片选信号,低电平有效8C/DC/D=H时,Wr=L :写命令;Rd=L :读状态C/D=L时,Wr=L :写数据;Rd=L :读数据9Reset复位,低

48、电平有效10-17DB0-7数据总线位0-718FS字体选择,为高时6*8字体,为低时8*8字体 19VoutDC-DC负电源输出 20、21LED+/-背光灯电源正/负端 SMG240128A点阵图形液晶模块引脚说明 6.3.1 液晶接口(续)3 Sept. 2008Confidential T6963C是东芝公司的点阵式图形液晶控制器,T6963C常用于中规模的单色点阵图形液晶的显示控制器,其最大特点是具有独特的硬件初始化值设置功能,显示驱动所需的参数如占空比系数、驱动传输的字节数/行、字符的字体选择等均由引脚电平设置。相关参数如下:工作电压:5.0V最大驱动液晶点阵:单色640128(单

49、屏)支持存储器大小:64K字节SRAMMCU接口:8位并行数据接口显示方式:图形方式、文本方式、图形文本混合方式字符发生器:128种58、68、78、88字符(CGROM)可管理外部2K字节的CGRAM(88字符)驱动LCD占空比: 1/161/128低功耗:显示期间电流典型值3.3mA 6.3.1 液晶接口(续)3 Sept. 2008ConfidentialT6963C读写操作时序图 6.3.1 液晶接口(续)3 Sept. 2008ConfidentialSMG240128A液晶模块与LPC2100 连接使用8位数据总线使用P0.0区别数据/命令6.3.1 液晶接口(续)3 Sept.

50、2008ConfidentialSMG240128A液晶模块与LPC2200 连接使用8位数据总线使用地址线A1区别数据/命令数据操作地址:0x83000000命令操作地址:0x830000026.3.1 液晶接口(续)3 Sept. 2008Confidential实例目的:学习字符型液晶原理及驱动编程。实例内容:学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。在字符型LCD中显示字符。实例步骤:在Proteus中绘制原理图。在Keil for ARM中输入程序,并编译通过。加载ELF程序,观察仿真结果。采用KEIL for ARM与PROTEUS的整合

51、方式联调。6.3.2 实例:字符LCD3 Sept. 2008Confidential开始引脚功能配置LCD初始化第一行显示字符第二行显示字符结束6.3.2 原理图与软件流程3 Sept. 2008Confidential实例目的:学习图形点阵型液晶原理及驱动编程。实例内容:学习使用Proteus、ADS、Keil for ARM软件,掌握绘制原理及编译程序。在图形点阵LCD中显示汉字和字符。实例步骤:在Proteus中绘制原理图。在Keil for ARM中输入程序,并编译通过。加载ELF程序,观察仿真结果。采用KEIL for ARM与PROTEUS的整合方式联调。6.3.3 实例:图形点阵LCD3 Sept. 2008Confidential开始引脚功能配置LCD初始化在指定位置处显示汉字结束在指定位置处显示字符6.3.3 原理图与软件流程3 Sept. 2008Confidential要求:(1) 在图形点阵LCD屏上,显示全像素图片。 (2) 在图形点阵LCD屏上,在指定位置显示任意大小图片。6.3.4 练习:BMP图片显示3 Sept. 2008Confidential缩略语、术语术语英文全称 解 释 Copyright 2008 版权所有版权所有 东软集团东软集团

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号