通用异步收发器UART

上传人:枫** 文档编号:567944908 上传时间:2024-07-22 格式:PPT 页数:53 大小:1.51MB
返回 下载 相关 举报
通用异步收发器UART_第1页
第1页 / 共53页
通用异步收发器UART_第2页
第2页 / 共53页
通用异步收发器UART_第3页
第3页 / 共53页
通用异步收发器UART_第4页
第4页 / 共53页
通用异步收发器UART_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《通用异步收发器UART》由会员分享,可在线阅读,更多相关《通用异步收发器UART(53页珍藏版)》请在金锄头文库上搜索。

1、LPC2103/2/1LPC2103/2/1系列系列系列系列ARMARM通用异步收发器通用异步收发器通用异步收发器通用异步收发器(UART)(UART) UART UART 功能应用功能应用功能应用功能应用2 2UART UART 基本操作基本操作基本操作基本操作3 3 UART UART 简简简简 介介介介1 1UARTUART简介简介简介简介 异步串口通信线路简单,可胜任长距离的可靠传输,因此被广异步串口通信线路简单,可胜任长距离的可靠传输,因此被广异步串口通信线路简单,可胜任长距离的可靠传输,因此被广异步串口通信线路简单,可胜任长距离的可靠传输,因此被广泛用于泛用于泛用于泛用于工业控制及

2、医疗设备、便携式器件、工业控制及医疗设备、便携式器件、工业控制及医疗设备、便携式器件、工业控制及医疗设备、便携式器件、POSPOS系统等。系统等。系统等。系统等。l 工业级的异步串口工业级的异步串口工业级的异步串口工业级的异步串口 LPC2000LPC2000系列系列系列系列ARMARM有多个有多个有多个有多个UARTUART,非常适合需要多个,非常适合需要多个,非常适合需要多个,非常适合需要多个UARTUART的应用场合。的应用场合。的应用场合。的应用场合。UART1UART1带有带有带有带有ModemModem功能功能功能功能UARTUART接口接口接口接口 | | LPC2300LPC2

3、300系列系列系列系列ARMARMUARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM UART UART 功能应用功能应用功能应用功能应用2 2UART UART 基本操作基本操作基本操作基本操作3 3 UART UART 简简简简 介介介介1 1UARTUART功能应用功能应用功能应用功能应用TxDTxDRxDRxDRxD_PCRxD_PCTxD_PCTxD_PCRS-232RS-232电平转换电平转换电平转换电平转换UARTUARTLPC2000LPC20000xAA0xAA0x550x550xAA0xAA0x550x55与与与与PCPC机进

4、行通信机进行通信机进行通信机进行通信UARTUART功能应用功能应用功能应用功能应用UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMModemModem使用使用使用使用ModemModem功能功能功能功能电话线电话线电话线电话线RSRS- -232232电话线电话线电话线电话线 网络网络网络网络ModeModemm服务器服务器服务器服务器RS-232RS-232PCPCModeModemmRS-232RS-232显示器显示器显示器显示器ModeModemmRS-232 RS-232 打印机打印机打印机打印机ModeModemmRS-232RS-

5、232LPC2300LPC2300UART1UART1UARTUART功能应用功能应用功能应用功能应用使用使用使用使用Modem,Modem,可实现远距离可实现远距离可实现远距离可实现远距离传输。传输。传输。传输。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM UART UART 功能应用功能应用功能应用功能应用2 2UART UART 基本操作基本操作基本操作基本操作3 3 UART UART 简简简简 介介介介1 1 如果我们想使用如果我们想使用如果我们想使用如果我们想使用UARTUART基本的数据收发功能,应当如何操作呢?基本的数据收发

6、功能,应当如何操作呢?基本的数据收发功能,应当如何操作呢?基本的数据收发功能,应当如何操作呢?其次,用其次,用其次,用其次,用UARTUART进行数据收发进行数据收发进行数据收发进行数据收发2 2最后,查询状态信息最后,查询状态信息最后,查询状态信息最后,查询状态信息3 3 首先,初始化首先,初始化首先,初始化首先,初始化UARTUART1 1UARTUART基本操作基本操作基本操作基本操作UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUnLCRUnLCRUnLSRUnLSRUnFCRUnFCR控制、状态寄存器控制、状态寄存器控制、状态寄存器

7、控制、状态寄存器波特率发生器波特率发生器波特率发生器波特率发生器 PCLK PCLKUARTUART初始化初始化初始化初始化波波波波特特特特率率率率发发发发生生生生器器器器接接接接收收收收单单单单元元元元发发发发送送送送单单单单元元元元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMRxRxUnRSRUnRSRRxFIFORxFIFOreceiverreceiverRBRRBRTxTxtransmittertransmitterUnTSRUnTSRTxFIFOTxFIFOTHRTHR基基基基本本本本结结结结构构构构框框框框图图图图U UA AR

8、 RT T0 0、1 1 对对对对UARTUART的初始化主要包括:的初始化主要包括:的初始化主要包括:的初始化主要包括: 引脚、波特率、引脚、波特率、引脚、波特率、引脚、波特率、通信参数、工作模式。通信参数、工作模式。通信参数、工作模式。通信参数、工作模式。 UARTUART初始化初始化初始化初始化UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信参数设置通信参数设置通信参数设置通信参数设置工作模式设置工作模式设置工作模式设置工作模式设置UARTUART状态信息状态信息

9、状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART初始化初始化初始化初始化引脚设置引脚设置引脚设置引脚设置GPIOGP

10、IOUARTUART 第一步:设置引脚连接第一步:设置引脚连接第一步:设置引脚连接第一步:设置引脚连接模块,将对应模块,将对应模块,将对应模块,将对应I/OI/O连接到连接到连接到连接到UARTUART。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态

11、信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART初始化初始化初始化初始化 发送发送发送发送/ /接收数据的时候需要时钟,这个时钟是怎么产生的?接收数据的时候需要时钟,这个时钟是怎么产生的?接收数据的时候需要时钟,这个时钟是怎么产生的?接收数据的时候需要时钟,这个时钟是怎么产生的?波特率设置波特率设置波特率设置波特率设置UARTUART接口接口接口接口 | | LPC2300LPC

12、2300系列系列系列系列ARMARM波特率配置基本原则:波特率配置基本原则:波特率配置基本原则:波特率配置基本原则:波特率发生器所产生的时钟必须是波特率发生器所产生的时钟必须是波特率发生器所产生的时钟必须是波特率发生器所产生的时钟必须是目标波特率的目标波特率的目标波特率的目标波特率的1616倍。倍。倍。倍。即即即即: :16xBaud = F16xBaud = FPCLKPCLK /( /(UnDLM:UnDLLUnDLM:UnDLL) )receiverreceiver波特率发生器波特率发生器波特率发生器波特率发生器 PCLK PCLKUARTUART初始化初始化初始化初始化 LPC2000

13、LPC2000系列系列系列系列ARMARM的每个的每个的每个的每个UARTUART都有一个波特率发生器,它都有一个波特率发生器,它都有一个波特率发生器,它都有一个波特率发生器,它的时钟源是的时钟源是的时钟源是的时钟源是PCLKPCLK,通过配置波特,通过配置波特,通过配置波特,通过配置波特率发生器即可为发送率发生器即可为发送率发生器即可为发送率发生器即可为发送/ /接收单元提接收单元提接收单元提接收单元提供所需的时钟。供所需的时钟。供所需的时钟。供所需的时钟。波特率设置波特率设置波特率设置波特率设置接收单元接收单元接收单元接收单元发送单元发送单元发送单元发送单元UARTUART接口接口接口接口

14、 | | LPC2300LPC2300系列系列系列系列ARMARM自动波特率测量的两种模式:自动波特率测量的两种模式:自动波特率测量的两种模式:自动波特率测量的两种模式:模式模式模式模式0 0:测量:测量:测量:测量“ “起始位下降沿起始位下降沿起始位下降沿起始位下降沿和和和和最低有效数据位下降沿最低有效数据位下降沿最低有效数据位下降沿最低有效数据位下降沿的的的的时时时时间间隔间间隔间间隔间间隔” ”来自动设置波特率。来自动设置波特率。来自动设置波特率。来自动设置波特率。 通常可以人工计算和配置所需波特率。但是,通常可以人工计算和配置所需波特率。但是,通常可以人工计算和配置所需波特率。但是,通

15、常可以人工计算和配置所需波特率。但是,LPC2103LPC2103微微微微控制器具有自动波特率功能,可令这些麻烦被免去。控制器具有自动波特率功能,可令这些麻烦被免去。控制器具有自动波特率功能,可令这些麻烦被免去。控制器具有自动波特率功能,可令这些麻烦被免去。UARTUART初始化初始化初始化初始化 自动波特率功能自动波特率功能自动波特率功能自动波特率功能启动后,启动后,启动后,启动后,UARTUART会自动测量特定数据位所会自动测量特定数据位所会自动测量特定数据位所会自动测量特定数据位所用时间,然后自动配置波特率发生器,产生和用时间,然后自动配置波特率发生器,产生和用时间,然后自动配置波特率发

16、生器,产生和用时间,然后自动配置波特率发生器,产生和“ “发送该特定数发送该特定数发送该特定数发送该特定数据位所用波特率据位所用波特率据位所用波特率据位所用波特率” ”相同的波特率相同的波特率相同的波特率相同的波特率 。模式模式模式模式1 1:测量起始位的脉宽来自动设置波特率。:测量起始位的脉宽来自动设置波特率。:测量起始位的脉宽来自动设置波特率。:测量起始位的脉宽来自动设置波特率。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM波特率设置波特率设置波特率设置波特率设置 start bit start bit 1 11(LSB of A or

17、1(LSB of A or a)a)UART RxDUART RxD1 11 1D0D0D1D1D2D2D3D3D4D4D5D5D6D6 D7D7P Pstartstart A(0x41)A(0x41)或或或或 a(0x61)a(0x61)UART RxDUART RxD 模式模式模式模式0 0:测量起始位下降沿和最低有效数据位的下降沿的时间间隔:测量起始位下降沿和最低有效数据位的下降沿的时间间隔:测量起始位下降沿和最低有效数据位的下降沿的时间间隔:测量起始位下降沿和最低有效数据位的下降沿的时间间隔来得出波特率。来得出波特率。来得出波特率。来得出波特率。速率测量计数器速率测量计数器速率测量计数

18、器速率测量计数器检测到数据位最低有检测到数据位最低有检测到数据位最低有检测到数据位最低有效位下降沿,速率测效位下降沿,速率测效位下降沿,速率测效位下降沿,速率测量计数器停止。量计数器停止。量计数器停止。量计数器停止。当计数完毕之后当计数完毕之后当计数完毕之后当计数完毕之后, ,速率测量计数器的值装入除速率测量计数器的值装入除速率测量计数器的值装入除速率测量计数器的值装入除数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。检测到起始位的下降沿,检测到起始位的下降沿,检测到起始位的下降沿,

19、检测到起始位的下降沿,速率测量计数器对速率测量计数器对速率测量计数器对速率测量计数器对PCLKPCLK进行计数。进行计数。进行计数。进行计数。UARTUART初始化初始化初始化初始化UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM start bit start bit 1 11(LSB of A or 1(LSB of A or a)a)UART RxDUART RxD1 11 1D0D0D1D1D2D2D3D3D4D4D5D5D6D6 D7D7P Pstartstart A(0x41)A(0x41)或或或或 a(0x61)a(0x61)UA

20、RT RxDUART RxD 模式模式模式模式1 1:测量起始位的脉宽来得出波特率。:测量起始位的脉宽来得出波特率。:测量起始位的脉宽来得出波特率。:测量起始位的脉宽来得出波特率。速率测量计数器速率测量计数器速率测量计数器速率测量计数器检测到起始位检测到起始位检测到起始位检测到起始位的的的的下降沿,下降沿,下降沿,下降沿,速率测量计数器对速率测量计数器对速率测量计数器对速率测量计数器对PCLKPCLK进行计数。进行计数。进行计数。进行计数。检测到起始位的上升沿,检测到起始位的上升沿,检测到起始位的上升沿,检测到起始位的上升沿,速率测量计数器停止。速率测量计数器停止。速率测量计数器停止。速率测量

21、计数器停止。UARTUART初始化初始化初始化初始化UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM当计数完毕之后当计数完毕之后当计数完毕之后当计数完毕之后, ,速率测量计数器的值装入除速率测量计数器的值装入除速率测量计数器的值装入除速率测量计数器的值装入除数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。数锁存寄存器,波特率自动切换为正常模式。UARTUART初始化初始化初始化初始化波特率设置波特率设置波特率设置波特率设置 在实际工作中,有时候可能受到晶振本身频率的限制而不

22、能得到在实际工作中,有时候可能受到晶振本身频率的限制而不能得到在实际工作中,有时候可能受到晶振本身频率的限制而不能得到在实际工作中,有时候可能受到晶振本身频率的限制而不能得到精确的串口波特率。在这种情况下,可以考虑提高分频精度,以抵消晶精确的串口波特率。在这种情况下,可以考虑提高分频精度,以抵消晶精确的串口波特率。在这种情况下,可以考虑提高分频精度,以抵消晶精确的串口波特率。在这种情况下,可以考虑提高分频精度,以抵消晶振频率的偏差,从而获得精确的波特率振频率的偏差,从而获得精确的波特率振频率的偏差,从而获得精确的波特率振频率的偏差,从而获得精确的波特率LPC2103LPC2103微控制器的微控

23、制器的微控制器的微控制器的小数小数小数小数分频器分频器分频器分频器便是为了满足该需求而设计。因此,波特率设置还包括小数分频便是为了满足该需求而设计。因此,波特率设置还包括小数分频便是为了满足该需求而设计。因此,波特率设置还包括小数分频便是为了满足该需求而设计。因此,波特率设置还包括小数分频器的使用。器的使用。器的使用。器的使用。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式

24、设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART初始化初始化初始化初始化 同一通信系统中收发双方的帧格式必须一致,否则将会造成通信出同一通信系统中收发双方的帧格式必须一致,否则将会造成通信出同一通信系统中收发双方的帧格式必须一致,否则将会造成通信出同一通信

25、系统中收发双方的帧格式必须一致,否则将会造成通信出错。下面介绍异步串行通信协议及帧格式的设置。错。下面介绍异步串行通信协议及帧格式的设置。错。下面介绍异步串行通信协议及帧格式的设置。错。下面介绍异步串行通信协议及帧格式的设置。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM通信模式设置通信模式设置通信模式设置通信模式设置UARTUART初始化初始化初始化初始化通信模式设置通信模式设置通信模式设置通信模式设置 S St ta ar rt t b bi it t L LS SB BD Da at ta a b bi it tD Da at ta a

26、 b bi it tD Da at ta a b bi it tD Da at ta a b bi it tD Da at ta a b bi it tD Da at ta a b bi it tMMS SB BP Pa ar ri it ty y b bi it tS St to op p b bi it tS St to op p b bi it t起始位起始位起始位起始位数据位(数据位(数据位(数据位(5 58 8位)位)位)位)奇偶校验位奇偶校验位奇偶校验位奇偶校验位停止位停止位停止位停止位可有可无可有可无可有可无可有可无可设置为可设置为可设置为可设置为1 1、1.51.5、2 2位停

27、止位位停止位位停止位位停止位 起始位起始位起始位起始位为低电平为低电平为低电平为低电平 先发送起始位,然后是最低有效数据位,最后是停止位。先发送起始位,然后是最低有效数据位,最后是停止位。先发送起始位,然后是最低有效数据位,最后是停止位。先发送起始位,然后是最低有效数据位,最后是停止位。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMuu 串行通信协议串行通信协议串行通信协议串行通信协议UARTUART初始化初始化初始化初始化起始位起始位起始位起始位数据位(数据位(数据位(数据位(5 58 8位)位)位)位)奇偶校验位奇偶校验位奇偶校验位奇偶校

28、验位停止位停止位停止位停止位0 01 11 11 1D0D0D1D1D2D2 D3D3D4D4 D5D5 D6D6D7D7P P帧格式是通过线控制寄存器(帧格式是通过线控制寄存器(帧格式是通过线控制寄存器(帧格式是通过线控制寄存器(UnLCRUnLCR)来设置:)来设置:)来设置:)来设置:停止位停止位停止位停止位2 2奇偶设置奇偶设置奇偶设置奇偶设置3 3奇偶选择奇偶选择奇偶选择奇偶选择5 : 45 : 4字长字长字长字长功能功能功能功能1 :01 :0位位位位UnLCRUnLCRUARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM通信模式设置通

29、信模式设置通信模式设置通信模式设置UARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM 用户在使用时可用

30、户在使用时可用户在使用时可用户在使用时可通过通过通过通过FIFOFIFO控制寄存器控制寄存器控制寄存器控制寄存器(UnUnFCRFCR)的位)的位)的位)的位0 0 来使能来使能来使能来使能/ /禁能禁能禁能禁能Rx FIFORx FIFO。UnLCRUnLCRUnLSRUnLSRUnFCRUnFCR控制、状态寄存器控制、状态寄存器控制、状态寄存器控制、状态寄存器Rx FIFORx FIFORBRRBRTx FIFOTx FIFOTHRTHRUARTUART初始化初始化初始化初始化 LPC2000LPC2000系列系列系列系列ARMARM的的的的UARTUART拥有拥有拥有拥有1616字节的接

31、收字节的接收字节的接收字节的接收FIFOFIFO和和和和1616字节的发送字节的发送字节的发送字节的发送FIFOFIFO。工作模式设置工作模式设置工作模式设置工作模式设置16字节字节注:发送注:发送注:发送注:发送FIFOFIFO是是是是一直使能的。一直使能的。一直使能的。一直使能的。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART初始化初始化初始化初始化设置引脚连接模块设置引脚连接模块设置引脚连接模块设置引脚连接模块 设置波特率设置波特率设置波特率设置波特率 设置通信帧格式设置通信帧格式设置通信帧格式设置通信帧格式 设置工作模

32、式设置工作模式设置工作模式设置工作模式操作示例(初始化)操作示例(初始化)操作示例(初始化)操作示例(初始化)UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMvoid UART0_Ini(void)void UART0_Ini(void) uint32 uint32 FdivFdiv = 0; = 0; PINSEL0 = (0x01 4) | (0x01 6); PINSEL0 = (0x01 4) | (0x01 6); U0LCR = 0x80; U0LCR = 0x80; FdivFdiv = ( = (FpclkFpclk / 16)

33、 / UARTBAUD; / 16) / UARTBAUD; U0DLM = U0DLM = FdivFdiv / 256; / 256; U0DLL = U0DLL = FdivFdiv % 256; % 256; U0LCR = 0x03; U0LCR = 0x03; U0FCR |= 0x81; U0FCR |= 0x81; UARTUART收发数据收发数据收发数据收发数据 数据通过串口发送引脚输出,外部数据通过接收引脚输入。数据通过串口发送引脚输出,外部数据通过接收引脚输入。数据通过串口发送引脚输出,外部数据通过接收引脚输入。数据通过串口发送引脚输出,外部数据通过接收引脚输入。其次其次

34、其次其次, ,用用用用UARTUART进行数据收发进行数据收发进行数据收发进行数据收发2 2接收单元接收单元接收单元接收单元波特率波特率波特率波特率发生器发生器发生器发生器A AP PB B总总总总线线线线RxD RxD 现在看一个简单的模型:现在看一个简单的模型:现在看一个简单的模型:现在看一个简单的模型: LPC2000LPC2000系列系列系列系列ARMARM通过通过通过通过UARTUART与其它控制器进行数据交换。与其它控制器进行数据交换。与其它控制器进行数据交换。与其它控制器进行数据交换。发送单元发送单元发送单元发送单元波特率波特率波特率波特率发生器发生器发生器发生器A AP PB

35、B总总总总线线线线TxDTxDUARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接

36、口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM接收单元接收单元接收单元接收单元波特率波特率波特率波特率发生器发生器发生器发生器A AP PB B总总总总线线线线RxDRxD发送单元发送单元发送单元发送单元波特率波特率波特率波特率发生器发生器发生器发生器A AP PB B总总总总线线线线TxDTxD 发送单元主要包括发送单元主要包括发送单元主要包括发送单元主要包括: :发送移位寄存器(发送移位寄存器(发送移位寄存器(发送移位寄存器(UnTSR)UnTSR)、发送保持寄存器、发送保持寄存器、发送保持寄存器、发送保持寄存器(UnTHRUnTHR)和发送)和发送)和发送)

37、和发送FIFO FIFO 。UARTUART收发数据收发数据收发数据收发数据uu UARTUART发送数据发送数据发送数据发送数据下面介绍发送单元的内部结构及数据发送的流向。下面介绍发送单元的内部结构及数据发送的流向。下面介绍发送单元的内部结构及数据发送的流向。下面介绍发送单元的内部结构及数据发送的流向。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUnTSRUnTSRTx FIFOTx FIFOtransmittertransmitterTHRTHRuu 发送单元结构框图发送单元结构框图发送单元结构框图发送单元结构框图UARTUART收发数

38、据收发数据收发数据收发数据 UnTSR UnTSR1515141413131212111110109 98 87 76 65 54 43 32 21 10 0UnTHRUnTHR0 0TxDTxD 发送单元发送单元发送单元发送单元UnTHRUnTHR是发送是发送是发送是发送FIFOFIFO地址最地址最地址最地址最高的部分,装载最近一次进高的部分,装载最近一次进高的部分,装载最近一次进高的部分,装载最近一次进入发送入发送入发送入发送FIFOFIFO的数据。的数据。的数据。的数据。 发送过程:发送过程:发送过程:发送过程: CPUCPU向发送保持寄存向发送保持寄存向发送保持寄存向发送保持寄存器(器

39、(器(器(UnTHRUnTHR) )写数据,数写数据,数写数据,数写数据,数据进入发送据进入发送据进入发送据进入发送FIFOFIFO,再通过,再通过,再通过,再通过发送移位寄存器从发送移位寄存器从发送移位寄存器从发送移位寄存器从TxDTxD引引引引脚发送出去。脚发送出去。脚发送出去。脚发送出去。0x550x550x550x55UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART收发数据收发数据收发数据收发数据UnTSRUnTSR1515141413131212111110109 98 87 76 65 54 43 32 21 10

40、0TxDTxD 查询方式查询方式查询方式查询方式 发送的原理介绍完毕。下面介绍在查询方式是如何了解数发送的原理介绍完毕。下面介绍在查询方式是如何了解数发送的原理介绍完毕。下面介绍在查询方式是如何了解数发送的原理介绍完毕。下面介绍在查询方式是如何了解数据发送的进度的。据发送的进度的。据发送的进度的。据发送的进度的。 在在在在LPC2000LPC2000系列系列系列系列ARMARM中,可以通过查询发送中,可以通过查询发送中,可以通过查询发送中,可以通过查询发送FIFOFIFO是否为是否为是否为是否为空或查询发送移位寄存器是否为空来判断数据发送的进度。但空或查询发送移位寄存器是否为空来判断数据发送的

41、进度。但空或查询发送移位寄存器是否为空来判断数据发送的进度。但空或查询发送移位寄存器是否为空来判断数据发送的进度。但是,这两类查询是有些许区别的:是,这两类查询是有些许区别的:是,这两类查询是有些许区别的:是,这两类查询是有些许区别的: 查询到查询到查询到查询到FIFOFIFO为空,这说为空,这说为空,这说为空,这说明发送数据已经全部送入明发送数据已经全部送入明发送数据已经全部送入明发送数据已经全部送入UARTUART了,但这些数据是否了,但这些数据是否了,但这些数据是否了,但这些数据是否已发送完毕呢?不一定,已发送完毕呢?不一定,已发送完毕呢?不一定,已发送完毕呢?不一定,请看演示:请看演示

42、:请看演示:请看演示: 1 1:查询:查询:查询:查询FIFOFIFO是否为空是否为空是否为空是否为空2 2:查询移位寄存器是否为空:查询移位寄存器是否为空:查询移位寄存器是否为空:查询移位寄存器是否为空0x550x55 此时,虽然发送此时,虽然发送此时,虽然发送此时,虽然发送FIFOFIFO已空但发送移位寄已空但发送移位寄已空但发送移位寄已空但发送移位寄存器内还有数据,发送存器内还有数据,发送存器内还有数据,发送存器内还有数据,发送尚未结束。尚未结束。尚未结束。尚未结束。 相反,若查到移位寄相反,若查到移位寄相反,若查到移位寄相反,若查到移位寄存器为空,就可以认为存器为空,就可以认为存器为空

43、,就可以认为存器为空,就可以认为发送已结束或未启动。发送已结束或未启动。发送已结束或未启动。发送已结束或未启动。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态线状态线状态线状态线状态 发送单元

44、发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 UARTUART收发数据收发数据收发数据收发数据接收单元接收单元接收单元接收单元UnRSRUnRSRA AP PB B总总总总线线线线RxD RxD 发送单元发送单元发送单元发送单元波特率波特率波特率波特率发生器发生器发生器发生器A AP PB B总总总总线线线线TxDTxDuu UARTUART接收数据接收数据接收数据接收数据现在介绍接收单元

45、的内部结构及数据流向。现在介绍接收单元的内部结构及数据流向。现在介绍接收单元的内部结构及数据流向。现在介绍接收单元的内部结构及数据流向。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM 接收单元包含:接收移位寄存器(接收单元包含:接收移位寄存器(接收单元包含:接收移位寄存器(接收单元包含:接收移位寄存器(UnRSRUnRSR)和接收缓存)和接收缓存)和接收缓存)和接收缓存寄存器(寄存器(寄存器(寄存器(UnRBRUnRBR)以及接收)以及接收)以及接收)以及接收FIFOFIFO。UnRSRUnRSRRxFIFORxFIFOreceiverrec

46、eiverRBRRBRUARTUART收发数据收发数据收发数据收发数据UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMuu 接收单元结构框图接收单元结构框图接收单元结构框图接收单元结构框图UARTUART收发数据收发数据收发数据收发数据1515141413131212111110109 98 87 76 65 54 43 32 21 10 0UnRBRUnRBR0 00x550x55UnRSRUnRSR0x550x550x550x55RxDRxDRx FIFORx FIFO禁能禁能禁能禁能 当接收当接收当接收当接收FIFOFIFO禁能,接收移位

47、寄存器(禁能,接收移位寄存器(禁能,接收移位寄存器(禁能,接收移位寄存器( UnRSRUnRSR)将接收到的数)将接收到的数)将接收到的数)将接收到的数据直接送入接收缓存寄存器(据直接送入接收缓存寄存器(据直接送入接收缓存寄存器(据直接送入接收缓存寄存器(UnRBRUnRBR)中。)中。)中。)中。 UnRBRUnRBR是接收是接收是接收是接收FIFOFIFO的最高字节的最高字节的最高字节的最高字节UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM0xAA0xAAUARTUART收发数据收发数据收发数据收发数据UnRSRUnRSR15151414

48、13131212111110109 98 87 76 65 54 43 32 21 10 0UnRBRUnRBR0 00x550x550x550x55RxDRxD0x550x550x550x550xAA0xAA0xAA0xAA0xBB0xBB0xBB0xBB0xAA0xAA0xBB0xBBRx FIFORx FIFO使能使能使能使能 每读取一次每读取一次每读取一次每读取一次UnRBRUnRBR,接收,接收,接收,接收FIFOFIFO便丢失一便丢失一便丢失一便丢失一个字节。个字节。个字节。个字节。若接收若接收若接收若接收FIFOFIFO使能,使能,使能,使能,可一次接收多个字节可一次接收多个字节

49、可一次接收多个字节可一次接收多个字节0xBB0xBB0xAA0xAA UnRBRUnRBR装载了装载了装载了装载了UARTUART最早接收的字符最早接收的字符最早接收的字符最早接收的字符UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART收发数据收发数据收发数据收发数据 在数据接收过程中,如何得知是否有接收数据和在数据接收过程中,如何得知是否有接收数据和在数据接收过程中,如何得知是否有接收数据和在数据接收过程中,如何得知是否有接收数据和接收了多少个数据呢?接收了多少个数据呢?接收了多少个数据呢?接收了多少个数据呢?l l 查询方式查

50、询方式查询方式查询方式l l 中断方式中断方式中断方式中断方式UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART收发数据收发数据收发数据收发数据UnRSRUnRSR1515141413131212111110109 98 87 76 65 54 43 32 21 10 0UnRBRUnRBR0 00x550x550x550x55RxDRxD0x550x550x550x550xAA0xAA0xAA0xAA0xBB0xBB0xBB0xBB0xAA0xAA0xBB0xBB查询方式接收数据查询方式接收数据查询方式接收数据查询方式接收数据0

51、xBB0xBB0xAA0xAA 查询查询查询查询FIFOFIFO中是否含有中是否含有中是否含有中是否含有数据?数据?数据?数据?while(U0LSR & 0x01) = 0);while(U0LSR & 0x01) = 0);有数据,搬走它有数据,搬走它有数据,搬走它有数据,搬走它rcv_datarcv_data = U0RBR; = U0RBR;0x550x550xAA0xAA0xBB0xBB0xBB0xBB这样的方式太烦了这样的方式太烦了这样的方式太烦了这样的方式太烦了每次还要查询。每次还要查询。每次还要查询。每次还要查询。竟然没有数据,等等吧竟然没有数据,等等吧竟然没有数据,等等吧竟然

52、没有数据,等等吧while(U0LSR & 0x01) = 0);while(U0LSR & 0x01) = 0);等待中等待中等待中等待中while(U0LSR & 0x01) = 0);while(U0LSR & 0x01) = 0); 没有收到数据的没有收到数据的没有收到数据的没有收到数据的话,就要一直等待了。话,就要一直等待了。话,就要一直等待了。话,就要一直等待了。如果可以在数据接收如果可以在数据接收如果可以在数据接收如果可以在数据接收完毕时产生中断,来完毕时产生中断,来完毕时产生中断,来完毕时产生中断,来通知通知通知通知CPUCPU,就省时间,就省时间,就省时间,就省时间了。了。了

53、。了。线状态寄存器(线状态寄存器(线状态寄存器(线状态寄存器(UnLSRUnLSR)反映了发送和接收模块的反映了发送和接收模块的反映了发送和接收模块的反映了发送和接收模块的状态。状态。状态。状态。UnLSRUnLSR0 0 通过查询通过查询通过查询通过查询UnLSR0UnLSR0来判断来判断来判断来判断FIFOFIFO中是否包含数据。中是否包含数据。中是否包含数据。中是否包含数据。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARM等待等待等待等待3.53.54.54.5个字节的时间个字节的时间个字节的时间个字节的时间 仍然没有仍然没有仍然没有仍然

54、没有 新的数据新的数据新的数据新的数据 UnRSR UnRSR1515141413131212111110109 98 87 76 65 54 43 32 21 10 0UnRBRUnRBR0 0RxDRxD中断方式接收数据中断方式接收数据中断方式接收数据中断方式接收数据收到收到收到收到8 8个字符,到达预设个字符,到达预设个字符,到达预设个字符,到达预设值,产生值,产生值,产生值,产生RDARDA中断中断中断中断可以一次读取可以一次读取可以一次读取可以一次读取多个数据多个数据多个数据多个数据, ,当对当对当对当对UnRBRUnRBR执行读执行读执行读执行读操作,中断标操作,中断标操作,中断标

55、操作,中断标志被清除。志被清除。志被清除。志被清除。UARTUART收发数据收发数据收发数据收发数据 通过设置通过设置通过设置通过设置FIFOFIFO控制寄存器控制寄存器控制寄存器控制寄存器UnFCR7:6UnFCR7:6设定中断触发点设定中断触发点设定中断触发点设定中断触发点产生字符超时中断(产生字符超时中断(产生字符超时中断(产生字符超时中断(CTICTI)设置为设置为设置为设置为8 8个字符触发个字符触发个字符触发个字符触发例如:例如:例如:例如:接收数据可用中断接收数据可用中断接收数据可用中断接收数据可用中断字符超时中断(字符超时中断(字符超时中断(字符超时中断(CTICTI)UART

56、UART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART收发数据收发数据收发数据收发数据操作示例操作示例操作示例操作示例(查询方式数据收发)(查询方式数据收发)(查询方式数据收发)(查询方式数据收发)void UART0_SendByte(uint8 data)void UART0_SendByte(uint8 data) U0THR = data; U0THR = data; while(U0LSR & 0x40) = 0); while(U0LSR & 0x40) = 0); uint8 UART0_RcvByte(void)uint8 U

57、ART0_RcvByte(void) uint8 uint8 rcv_datarcv_data = 0; = 0; while(U0LSR & 0x01) = 0); while(U0LSR & 0x01) = 0); rcv_datarcv_data = U0RBR; = U0RBR; return(rcv_datareturn(rcv_data); ); 查询方式发送一字节数据:查询方式发送一字节数据:查询方式发送一字节数据:查询方式发送一字节数据:查询方式接收一字节数据:查询方式接收一字节数据:查询方式接收一字节数据:查询方式接收一字节数据:将要发送的一字节数据写入将要发送的一字节数据写

58、入将要发送的一字节数据写入将要发送的一字节数据写入U0THRU0THR查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完查询查询查询查询U0RBRU0RBR是否含有数据是否含有数据是否含有数据是否含有数据从从从从U0RBRU0RBR中读取接收到的数据中读取接收到的数据中读取接收到的数据中读取接收到的数据返回接收到的数据返回接收到的数据返回接收到的数据返回接收到的数据UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART收发数据收发数据收发数据收发数据操作示例

59、操作示例操作示例操作示例(中断方式数据收发)(中断方式数据收发)(中断方式数据收发)(中断方式数据收发)void _void _irqirq IRQ_UART0(void) IRQ_UART0(void) while (IIR = U0IIR) & 0x01) = 0) while (IIR = U0IIR) & 0x01) = 0) switch (IIR & 0x0e) switch (IIR & 0x0e) case 0x02: case 0x02: 发送数据发送数据发送数据发送数据; ; break; break; case 0x04: case 0x04: 读取数据读取数据读取数据读

60、取数据; ; break break; case 0x06: case 0x06: 读取读取读取读取U0LSR;U0LSR; break break case 0x0c: case 0x0c: break; break; default: default: break; break; VICVectAddrVICVectAddr = 0x00; = 0x00; 查询是否含有未处理的中断查询是否含有未处理的中断查询是否含有未处理的中断查询是否含有未处理的中断 发生发生发生发生THRETHRE中断中断中断中断发生发生发生发生RDARDA中断中断中断中断发生发生发生发生RLSRLS中断中断中断中断发

61、生发生发生发生CTICTI中断中断中断中断判断中断类型判断中断类型判断中断类型判断中断类型UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态 线状态线状态线状态线状态 发送单元发送单元发送单元发送

62、单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息最后,查询状态信息最后,查询状态信息最后,查询状态信息最后,查询状态信息3 3 每个每个每个每个UARTUART都只有一个中断通道,所以需要通过查询中断标都只有一个中断通道,所以需要通过查询中断标都只有一个中断通道,所以需要通过查询中断标都只有一个中断通道,所以需要通过查询中断标志(志(志(志(UnIIR3:1UnIIR3:1)来识别中断的类型。)来识别中断的类型。)来识别中断的类型。)来识别中断的类型。 UAR

63、TUART的中断有以下类型:的中断有以下类型:的中断有以下类型:的中断有以下类型:4. 4. ModemModem中断中断中断中断 注:只有注:只有注:只有注:只有UART1UART1具有具有具有具有ModemModem中断。中断。中断。中断。 a a:接收数据可用中断(:接收数据可用中断(:接收数据可用中断(:接收数据可用中断(RDARDA)b b:字符超时中断(:字符超时中断(:字符超时中断(:字符超时中断(CTICTI)2.2.3. 3. 发送中断(发送中断(发送中断(发送中断(THRETHRE)1.1.接收线状态中断(接收线状态中断(接收线状态中断(接收线状态中断(RLSRLS)UAR

64、TUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息中断状态中断状态中断状态中断状态最高最高最高最高第二第二第二第二第二第二第二第二第三第三第三第三RLSRLS中断中断中断中断RDARDA中断中断中断中断CTICTI中断中断中断中断THRETHRE中断中断中断中断VICVIC中断控制器中断控制器中断控制器中断控制器ARM7TDMIARM7TDMI内核内核内核内核ModemModem中断中断中断中断第四第四第四第四注意:只有注意:只有注意:只有注意:只有UART1UART1才有才有才有才有ModemModem

65、中断。中断。中断。中断。UARTUART中断优先级中断优先级中断优先级中断优先级优先级优先级优先级优先级 当某一当某一当某一当某一UARTUART的几种中断同时产生,的几种中断同时产生,的几种中断同时产生,的几种中断同时产生,CPUCPU将将将将根据中断优先级决定先处理哪一个中断根据中断优先级决定先处理哪一个中断根据中断优先级决定先处理哪一个中断根据中断优先级决定先处理哪一个中断。UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息 初始化初始化初始化初始化1 1引脚设置引脚设置引脚设置引脚设置波特率

66、设置波特率设置波特率设置波特率设置通信模式设置通信模式设置通信模式设置通信模式设置工作模式设置工作模式设置工作模式设置工作模式设置收发数据收发数据收发数据收发数据2 2状态信息状态信息状态信息状态信息3 3中断状态中断状态中断状态中断状态线状态线状态线状态线状态 发送单元发送单元发送单元发送单元 接收单元接收单元接收单元接收单元UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息线状态线状态线状态线状态 之前介绍了之前介绍了之前介绍了之前介绍了THRETHRE中断、中断、中断、中断、RDARDA中断、

67、中断、中断、中断、CTICTI中断。下面对触发中断。下面对触发中断。下面对触发中断。下面对触发线状态中断(最高优先级的中断)的几个错误进行介绍。线状态中断(最高优先级的中断)的几个错误进行介绍。线状态中断(最高优先级的中断)的几个错误进行介绍。线状态中断(最高优先级的中断)的几个错误进行介绍。 在置位奇偶校验位后,在置位奇偶校验位后,在置位奇偶校验位后,在置位奇偶校验位后,UARTUART对所有接收的数据都进行奇偶校对所有接收的数据都进行奇偶校对所有接收的数据都进行奇偶校对所有接收的数据都进行奇偶校验,如果与设定的奇偶校验方式不符,将触发奇偶错误。验,如果与设定的奇偶校验方式不符,将触发奇偶错

68、误。验,如果与设定的奇偶校验方式不符,将触发奇偶错误。验,如果与设定的奇偶校验方式不符,将触发奇偶错误。1 1奇偶错误奇偶错误奇偶错误奇偶错误PEPE(Parity Parity ErrorError)UARTUART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUARTUART状态信息状态信息状态信息状态信息当接收的字符的停止位为当接收的字符的停止位为当接收的字符的停止位为当接收的字符的停止位为0 0,触发帧错误。,触发帧错误。,触发帧错误。,触发帧错误。接收缓存区溢出。接收缓存区溢出。接收缓存区溢出。接收缓存区溢出。 发送整个字符的过程里,发送整个字符的

69、过程里,发送整个字符的过程里,发送整个字符的过程里,RxDRxD引脚都保持低电平,将触发间引脚都保持低电平,将触发间引脚都保持低电平,将触发间引脚都保持低电平,将触发间隔中断,并且数据接收停止。隔中断,并且数据接收停止。隔中断,并且数据接收停止。隔中断,并且数据接收停止。3 3 3间隔中断间隔中断间隔中断间隔中断BIBI(Break Break InterruptInterrupt)2 2 2溢出错误溢出错误溢出错误溢出错误OEOE(Overrun Overrun ErrorError)4 4 4帧错误帧错误帧错误帧错误 FEFE( Frame Error Frame Error )UARTU

70、ART接口接口接口接口 | | LPC2300LPC2300系列系列系列系列ARMARMUART实例应用实例应用注意:串口连接好,短路注意:串口连接好,短路JP6两个跳线帽。两个跳线帽。题目要求:查询方式发送接收数据题目要求:查询方式发送接收数据题目要求:查询方式发送接收数据题目要求:查询方式发送接收数据题目分析:查询方式发送:题目分析:查询方式发送:题目分析:查询方式发送:题目分析:查询方式发送:UART0_SendByte()UART0_SendByte() 查询接收数据:查询接收数据:查询接收数据:查询接收数据:UART0_RcvByte()UART0_RcvByte()功能功能功能功能

71、描述描述描述描述0 0接收数据就接收数据就接收数据就接收数据就绪绪绪绪(RDRRDR)0 0:UnRBRUnRBR为为为为空空空空1 1:Un0RBRUn0RBR包含有效数据包含有效数据包含有效数据包含有效数据5 5发发发发送保持寄存器空送保持寄存器空送保持寄存器空送保持寄存器空(THRETHRE)0 0:UnTHRUnTHR包含有效数据包含有效数据包含有效数据包含有效数据1 1:UnTHRUnTHR空空空空6 6发发发发送器空送器空送器空送器空(TEMTTEMT)0 0:UnTHRUnTHR和和和和/ /或或或或UnTSRUnTSR包含有效数据包含有效数据包含有效数据包含有效数据1 1:Un

72、THRUnTHR和和和和UnTSRUnTSR空空空空U0LSR寄存器寄存器UARTUART操作实例一操作实例一操作实例一操作实例一void UART0_SendByte(uint8 data)void UART0_SendByte(uint8 data) U0THR = data; U0THR = data; while(U0LSR & 0x40) = 0); while(U0LSR & 0x40) = 0); 查询方式发送一字节数据:查询方式发送一字节数据:查询方式发送一字节数据:查询方式发送一字节数据:将要发送的一字节数据写入将要发送的一字节数据写入将要发送的一字节数据写入将要发送的一字节

73、数据写入U0THRU0THR查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完查询移位寄存器是否为空,等发送完UARTUART操作实例一操作实例一操作实例一操作实例一uint8 UART0_RcvByte(void)uint8 UART0_RcvByte(void) uint8 rcv_data = 0; uint8 rcv_data = 0; while(U0LSR & 0x01) = 0); while(U0LSR & 0x01) = 0); rcv_data = U0RBR; rcv_data = U0RBR; return(rcv_data

74、); return(rcv_data); 查询方式接收一字节数据:查询方式接收一字节数据:查询方式接收一字节数据:查询方式接收一字节数据:查询查询查询查询U0RBRU0RBR是否含有数据是否含有数据是否含有数据是否含有数据从从从从U0RBRU0RBR中读取接收到的数据中读取接收到的数据中读取接收到的数据中读取接收到的数据返回接收到的数据返回接收到的数据返回接收到的数据返回接收到的数据UARTUART操作实例一操作实例一操作实例一操作实例一设置引脚连接模块设置引脚连接模块设置引脚连接模块设置引脚连接模块 设置波特率设置波特率设置波特率设置波特率 设置通信帧格式设置通信帧格式设置通信帧格式设置通信

75、帧格式 设置工作模式设置工作模式设置工作模式设置工作模式void UART0_Ini(void)void UART0_Ini(void) uint32 uint32 FdivFdiv = 0; = 0; PINSEL0 = (0x01 4) | (0x01 6); PINSEL0 = (0x01 4) | (0x01 6); U0LCR = 0x80; U0LCR = 0x80; FdivFdiv = ( = (FpclkFpclk / 16) / UARTBAUD; / 16) / UARTBAUD; U0DLM = U0DLM = FdivFdiv / 256; / 256; U0DLL

76、= U0DLL = FdivFdiv % 256; % 256; U0LCR = 0x03; U0LCR = 0x03; U0FCR |= 0x87; U0FCR |= 0x87; UARTUART操作实例一操作实例一操作实例一操作实例一题目要求:中断方式接收数据题目要求:中断方式接收数据题目要求:中断方式接收数据题目要求:中断方式接收数据题目分析:查询方式发送:题目分析:查询方式发送:题目分析:查询方式发送:题目分析:查询方式发送:UART0_SendByte()UART0_SendByte() 中断接收数据:中断接收数据:中断接收数据:中断接收数据:_irqirq UART0_IRQ UA

77、RT0_IRQ功能功能功能功能描述描述描述描述0 0接收数据就接收数据就接收数据就接收数据就绪绪绪绪(RDRRDR)0 0:UnRBRUnRBR为为为为空空空空1 1:Un0RBRUn0RBR包含有效数据包含有效数据包含有效数据包含有效数据5 5发发发发送保持寄存器空送保持寄存器空送保持寄存器空送保持寄存器空(THRETHRE)0 0:UnTHRUnTHR包含有效数据包含有效数据包含有效数据包含有效数据1 1:UnTHRUnTHR空空空空6 6发发发发送器空送器空送器空送器空(TEMTTEMT)0 0:UnTHRUnTHR和和和和/ /或或或或UnTSRUnTSR包含有效数据包含有效数据包含有效数据包含有效数据1 1:UnTHRUnTHR和和和和UnTSRUnTSR空空空空U0LSR寄存器寄存器UARTUART操作实例二(提高)操作实例二(提高)操作实例二(提高)操作实例二(提高)

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

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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