第八章异步串口_第1页
第八章异步串口_第2页
第八章异步串口_第3页
第八章异步串口_第4页
第八章异步串口_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、 UART简介1 UART功能应用2UART基本操作3 通用异步收发器(UART)是实现设备间异步串行通信的关键模块,LPC1700系列ARM具有4个符合16C550工业标准的异步串口。16字节收发FIFO 内置小数分频器 支持DMA发送接收UART1增加Modem和RS-485/EIA-485模式UART0、UART2、UART3增加IrDA接口 UART简介1 UART功能应用2UART基本操作3 RS-232是PC机与设备通信里应用最广泛的一种串行接口。它被定义为一种在低速率串行通讯中增加通讯距离的单端标准,由于其最大通信距离的限制,因此它常用于本地设备之间的通信。 最高速率约为20kb

2、/s 传输最大距离约为15m 共模抑制比能力差RS-232特性打印机PCRS-232电平转换 与TTL电平兼容 传输距离实际达1200m 共模抑制比能力强 RS-485是一种常用远距离和多机通信的串行接口。RS-485只是定义电压和阻抗,编程方式和普通串口类似,与RS-232主要区别在于其特性。RS-485特性 成本低 体积小、功耗低 数据传输干扰较小 LPC1700系列ARM的UART0/2/3可以工作在UART模式,也可以工作在IrDA模式,这两种不同的工作模式不能在各自的应用里互换。IrDA是一种利用红外进行点对点无线通信的技术。IrDA的优点 LPC1700系列ARM仅有UART1具有

3、Modem接口,通过该接口可以接入电话线网络实现远距离通信。 UART简介1 UART功能应用2UART基本操作3引脚配置引脚配置波特率设置波特率设置帧格式设置帧格式设置FIFO设置设置UnLCR字符长度停止位、校验位UART的初始化的初始化 1UnDLL、UnDLM、手动波特率 UnFCRFIFO自动复位 Rx触发点选择波特率设置波特率设置 PCLKUnDLL波特率发生器UnDLMUnFDR目标波特率:Baud = FPCLK / (16xUnDLM:UnDLL)假设APB时钟为24MHz,UART0要得到的目标波特率为9600:U0LCR = 0 x83;usFdiv = (FPCLK /

4、 16) / 9600;U0DLM = usFdiv / 256;U0DLL = usFdiv % 256;U0LCR = 0 x03;操作示例:允许设置波特率设置波特率锁存波特率手动波特率配置模式:手动波特率配置模式: UART波特率发生器的时钟源是波特率发生器的时钟源是APB时钟,时钟,APB时钟经过时钟经过16分频后将该值保存在除数锁存寄分频后将该值保存在除数锁存寄存器存器DLM与与DLLusFdiv/256对256取模是完成将16位数拆分为两个8位,就是对低8位取模,低8位最大存放255,加上0为256,即进制为256进制帧格式设置帧格式设置 UART通信时需保证收发两端的帧格通信时需

5、保证收发两端的帧格式一致,否则会出现通信错误式一致,否则会出现通信错误停止位2奇偶设置3奇偶选择5 : 4字长功能1 :0位UnLCR可有可无 12位操作示例:要求UART0的工作模式为:8位字符长度,1个停止位,无奇偶校验U0LCR = 0 x03;FIFO设置设置位75:3210功能Rx触发选择保留Tx FIFO复位Rx FIFO复位FIFO使能 FIFO的初始化比较简单,主要设置包的初始化比较简单,主要设置包括括Rx的触发深度,的触发深度,Tx FIFO与与Rx FIFO的复的复位,以及位,以及FIFO的使能。的使能。UnFCR操作示例:U0FCR = 0 x87; UART0接收缓冲区

6、触发点为8字节,同时使能并复位发送和接收FIFOUART的数据收发的数据收发2UART数据收发UnLSR UnIIR查询发送状态查询接收状态UnLSR UnIIR接收数据UnRBR 发送数据UnTHR发送过程接收过程 在数据收发的过程中,通常采用查询和中断两种方式来进行。它们的基本原理如下:中断方式:通过中断实现对数据的收发,然后查询中断标志寄存器(UnIIR)来进行不同处理。查询方式:通过查询线状态寄存器(UnLSR)来获得数据发送和接收的状态,然后进行相应操作。 UART数据收发原理 UART发送单元 UnTHR是发送FIFO的最高字节。它包含了TX FIFO中的最新字符,可以通过总线接口

7、对其操作UnTSRTxFIFO发送单元内部结构发送单元内部结构THR发送单元u发送移位寄存器(UnTSR)u发送保持寄存器(UnTHR)u发送FIFO UART查询方式发送 UnTSR151413121110987654321UnTHRFIFOCPU向发送保持寄存器(UnTHR)写数据,数据进入发送FIFO,然后通过发送移位寄存器将数据从TXD引脚发送出去 UnLSR5UnLSR5反映发送FIFO中是否包含数据。FIFO有数据 U0THR = ucDat; while (U0LSR & 0 x20) = 0); TXD注意:注意: UnLSR5和和UnLSR6有什么区别?有什么区别?

8、UART接收单元接收单元u接收移位寄存器(UnRSR)u接收保持寄存器(UnRBR)u接收FIFOUnRSRRxFIFO接收单元内部结构接收单元内部结构RBR UnRBR是接收FIFO的最高字节,它包含了最高接收到的字符,可以通过总线接口读取它。 UART查询方式接收 UnRSR151413121110987654321UnRBRFIFOUnLSR0UnLSR0反映接收FIFO中是否包含数据。移位寄存器(RSR)从RXD引脚接收串行数据后,送入接收FIFO;CPU从接收保持寄存器(UnRBR)将收到的数据读出 while (U0LSR & 0 x01) = 0); ucRcvData

9、= U0RBR; FIFO有数据若无数据,则始终查询,浪费CPU的资源 UART中断寄存器中断状态0中断标志3 : 1功能位UnIIR位位0: 表示中断是否挂起表示中断是否挂起 0:至少:至少1个中断挂起个中断挂起 1:没有挂起中断:没有挂起中断位位31:表示中断状态:表示中断状态 001:发送中断:发送中断 010:接收数据中断:接收数据中断 110:字符超时中断:字符超时中断 其他:略其他:略 UART中断方式接收 UnRSR151413121110987654321UnRBRFIFO触发点当RX FIFO中数据未达8个字节,且在一断时间内未放入数据,会产生接收器超时中断;当RX FIFO

10、中寄存器字节数达到8个时,触发RDA中断。收到8个字符,到达预设值,产生RDA中断产生字符超时中断(CTI)假设此时UnFCR7:6为10,则RX的触发点设置为8个字节等待3.5-4.5个字节的时间可以一次读取多个数据,当对UnRBR执行读操作,中断标志被清除。仍然没有接收到数据 RDA中断服务程序 switch(U0IIR & 0 x0f) case 0 x04: /* 发生发生 RDA 中断中断 */ for(i = 0; i 8; i+) /* 连续读取连续读取 U0RBR 寄存器寄存器 8 次次 */ RvBufi=U0RBR; /*将接收到的数据保存到接收缓冲区将接收到的数据

11、保存到接收缓冲区 RcvBuf中中 */ CTI中断服务程序 switch(U0IIR & 0 x0f) case 0 x0c: /* 发生超时中断发生超时中断CTI */ while(U0LSR & 0 x01) = 1) /* 如果接收如果接收 FIFO 中含有数据,中含有数据, 就读取就读取 UnRBR 寄存器寄存器 */RcvBuf i+ = U0RBR; /* 将数据保存到接收缓冲区将数据保存到接收缓冲区 RcvBuf中中 */ break 初始化例程#define UART_BPS 115200 /* 定义通讯波特率定义通讯波特率 */ /*/* 函数名称:函数名称

12、: UART0_Ini * 函数功能:函数功能: 初始化串口初始化串口 0。设置为。设置为 8 位数据位,位数据位, 1 位停止位,无奇偶位停止位,无奇偶校验,校验, 波特率为波特率为 115200 */void UART0_Ini(void) uint32_t Fdiv = 0; U0LCR = 0 x83; /* DLAB = 1,可设置波特率,可设置波特率 */ Fdiv = (Fpclk / 16) / UART_BPS; /* 设置波特率设置波特率 */ U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0 x03; /* 锁定除数访问锁

13、定除数访问 */ U0FCR = 0 x07; /* 使能并复位使能并复位 FIFO */ 查询方式发送例程/* 函数名称:函数名称: UART0_SendByte * 函数功能:函数功能: 向串口发送字节数据,并等待发送完毕向串口发送字节数据,并等待发送完毕 * 入口参数:入口参数: data 要发送的数据要发送的数据 * 出口参数:无出口参数:无 */void UART0_SendByte(uint8 data) U0THR = data; /* 发送数据发送数据 */ while ( (U0LSR&0 x40)=0 ); /* 等待数据发送完毕等待数据发送完毕 */ 查询方式接收例程/* 函数名称:函数名称: UART0_RcvByte * 函数功能:函数功能: 从串口接收一个字节的数据。使用查询方式

温馨提示

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

评论

0/150

提交评论