目录

一、串口的介绍

1、特性

2、通信

3、组成

二、串口中相关寄存器

1、发送和接收相关寄存器

2、中断相关寄存器

(1)U0IER

(2)U0IIR

3、设置FIFO相关寄存器

4、线状态相关寄存器

(1)U0LCR

(2)U0LSR


本文以LPC2000系列微控制器的UART作为介绍

一、串口的介绍

1、特性

具有16字节接收FIFO和16字节发送FIFO

寄存器位置符合16C550工业标准

接收FIFO触发点可设置为1、4、8或14字节

内置波特率发生器

2、通信

使用UART通信需要两个引脚分别为:RxD0和TxD0,RxD0作为串行输入(接收数据),TxD0作为串行输出(发送数据)

当我们把下位机和PC机用串口连接起来时,有一个重要的东西就起到了关键性作用——232电平转换器,因为与PC机相连时,由于PC机串口是RS232电平,所以连接时需要使用RS232转换器。

一是起到电平转换作用,还有一个作用就是交叉电路(即下位机串口的TxD0引脚发送的数据要给到PC机串口的RxD0引脚,下位机串口的RxD0同理)

3、组成

二、串口中相关寄存器

1、发送和接收相关寄存器

这里的U0THR和U0RBR就是影子寄存器(上一篇中有介绍),它们是通过读/写操作予以区分的。

U0DLL是除数锁存器低字节、U0DLM是除数锁存器高字节;这两个寄存器决定波特率时钟的频率,而波特率时钟必须是波特率的16倍。所以波特率计算公式:

                        BaudRate = FPCLK / ([U0DLM,U0DLL]×16)

PS:由于U0DLL、U0DLM寄存器与U0THR和U0RBR的地址重叠,所以在访问它们时,U0LCR的除数锁存访问位(DLAB)必须为1,如果需要读或者写,则需要把除数锁存位置0

2、中断相关寄存器

(1)U0IER

U0IER是中断使能寄存器,它可以控制UART的4个中断源。其中RBR中断使能包含2个中断,一个是接收数据可用中断(RAD),一个是接收超时中断(CTI);THRE中断使能对应发送中断(THRE);Rx线状态中断使能对应接收线状态中断(RLS)。

(2)U0IIR

U0IIR是中断标志寄存器,用于指示一个挂起中断的中断源和优先级(即知道有没有中断触发)

中断优先级由高到低:RLS中断->RDA中断->CTI中断->THRE中断

RLS中断:读取U0RLS时清除该中断

RAD中断:当接收的有效数据到达接收FIFO设置寄存器(U0FCR)中设置的触发点时,RDA被激活。当接收FIFO中的有效数据少于触发点时,RDA复位

CTI中断:当接收FIFO中的有效数据少于设置的触发点且至少有一个字节时,如果超过接收3.5~4.5个字节所需要的时间(注意是接收这么多字节的时间)仍没有接收到数据,那将触发该中断。对接收FIFO的任何操作都会清零该中断标志;

PS:RAD就是FIFO满了就触发中断(即串口知道有东西来了需要接收),而CTI是接收FIFO没满

THRE中断当发送FIFO为空并且满足一定的条件时,该中断将被触发。在上一次发生THRE中断后,向发送FIFO中写入1个字节数据,将在延时一个字节加上一个停止位后发生THRE中断。(为了不影响后面写入FIFO的数据);如果在发送FIFO中有过两个字节以上的数据,但是现在发送FIFO为空时,将立即触发THRE中断。

3、设置FIFO相关寄存器

U0FCR  设置FIFO寄存器

第0位:使能FIFO。

该位为1时,使能UART0的接收和发送FIFO,并且允许访问U0FCR。

该位为0时,禁止接收FIFO,此时接收缓存只有1个字节而且发送FIFO不会被关闭。


第1位:复位RxFIFO;接收FIFO复位;当该位置位时,UART0接收FIFO中的所有字节被清零并复位指针逻辑,该位会自动清零。

第2位:复位TxFIFO;发送FIFO复位。


[5:3]位:保留

[7:6]位:Rx触发点设置  00:1字节        01:4字节        10:8字节        11:14字节

4、线状态相关寄存器

(1)U0LCR

又称线状态控制寄存器:控制发送和接收数据帧格式

字长: 控制数据长度

00:5位字符长度        01:6位字符长度        10:7位字符长度        11:8位字符长度


停止位:控制数据包包含的停止位个数

0:1个停止位        1:2个停止位


奇偶设置就是奇偶使能:控制是否进行奇偶校验

0:禁止奇偶产生和校验        1:使能奇偶产生和校验

奇偶选择:设置奇偶校验类型

00:奇数(数据位+校验位=奇数)        01:偶数        10:校验位强制为1        11:校验位强制为0


间隔:当该位为1时,输出引脚(TxD0)强制为逻辑0,可以引起通信对方产生间隔中断。

0:禁止间隔发送        1:使能间隔发送


除数锁存:因为U0DLL/U0DLM和U0RBR/U0THR的地址重叠,通过设置该位可以指定其中某个寄存器操作。

0:禁止访问除数锁存寄存器        1:使能访问除数锁存寄存器

(2)U0LSR

又称线状态寄存器,只读寄存器,反映了UART0接收和发送模块的状态信息

RDR:决定能否从FIFO中读取数据;

0:U0RBR为空        1:U0RBR中包含有效数据,从接收FIFO中读走所有数据后,恢复为0。


OE:溢出错误标志。即当U0RBR中有新的字符来了但接收FIFO满了该位置位

0:接收缓存区没有溢出        1:接收缓存区发生溢出错误


PE:奇偶校验错误,在使能奇偶校验位之后,对所有接收的数据都进行奇偶校验,如果与U0LCR中的设置不符,将引起奇偶校验错误。

0:没有发生奇偶校验        1:发生奇偶校验错误。在读操作时使该位恢复为0


FE:帧错误标志。当接收字符的停止位为0时,产生帧错误。

0:没有发生帧错误        1:发生帧错误。读取该位时恢复为0。


BI:间隔中断标志。        0:没有发生间隔中断        1:发生间隔中断


THRE:反映U0THR(发送缓存寄存器)是否为空,也可以认为发送FIFO是否为空。

0:不为空        1:为空;对U0THR进行写操作时,该位变为0


TEMT:当发送移位寄存器和U0THR均为空时,该位置位。

0:不为空        1:为空;对U0THR写操作时,该位变为0


RXFE:如果一个带有接收错误(如帧错误、奇偶错误)的字符装入U0RBR时,该位置位

0:U0RBR中没有接收错误或U0FCR[0]为0        1:U0RBR中包含至少一个UART0 Rx错误。

举两个简单的例子

1、串口初始化

2、收发数据

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;            //读出U0RBR中的数据return(rcv_data);            //返回读到的数据
}

嵌入式应用之UART串口相关推荐

  1. 串口的偶校验位设置_详解UART串口

    通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART) 是一种串行异步收发协议,应用十分广泛.UART工作原理是将数据的二进制位 ...

  2. Android 模拟Uart 串口通信

    下载串口工具 1.下载模拟串口工具:模拟串口工具 模拟串口工具用于生成模拟的两个串口,而不需要真实的物理串口. 2.下载串口调试工具:串口调试工具 串口调试工具用于直接通过串口发送数据 我这里有整合过 ...

  3. Linux uart寄存器读写,Linux下读写UART串口的代码

    Linux下读写UART串口的代码,从IBM Developer network上拿来的东西,操作比較的复杂,就直接跳过了,好在代码能用,记录一下- 两个实用的函数- /** *@brief 设置串口 ...

  4. UART串口通信浅谈之(二)--寄存器设置

    1.1 通信的三种基本类型 常用的通信通常可以分为单工.半双工.全双工通信. 单工就是指只允许一方向另外一方传送信息,而另一方不能回传信息.比如我们的电视遥控器,我们的收音机广播等,都是单工通信技术. ...

  5. UART串口通信浅谈之(一)--基础概述

    通信按照传统的理解就是信息的传输与交换.UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用 ...

  6. NXP(I.MX6uLL) UART串口通信原理————这个未复习

    参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...

  7. 树莓派UART串口编程--使用wiringPi库-C开发【1-基础应用】

    一.串口说明 莓派3B+上UART串口位于GPIO的8脚和10脚,分别为GPIO8=Tx,GPIO10=Rx.在连接外部接口时,需要交换接口,即GPIO8连接到外设的Rx,GPIO10连接到外设的Tx ...

  8. SJXXX串口扩展芯片 4串口芯片 UART串口芯片

    SJXX串口扩展芯片 1 概述 SJ000是一款具备I2C总线/SPI总线/UART接口的四通道异步收发器件,通过模式选择使得该器件工作于以上任何一种主接口模式下.器件的四个通道UART可提供高达2M ...

  9. STM32 HAL库 UART 串口读写功能笔记

    https://www.cnblogs.com/Mysterious/p/4804188.html STM32L0 HAL库 UART 串口读写功能 串口发送功能: uint8_t TxData[10 ...

  10. (三) UART 串口通讯

    UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...

最新文章

  1. 10篇顶会paper,入选微软学者,上海交大吴齐天的科研思考!
  2. 你的裸照,一键生成,令人害怕的不是算法,是人心!
  3. Beaglebone Black教程项目1闪烁板载LED
  4. python学习day-8 迭代器 生成器 装饰器
  5. RTP/RTSP/RTCP 协议详解
  6. hello-world
  7. HttpReqeust对象
  8. vue 开发依赖安装
  9. ios开发之获取版本号,部分设备信息
  10. 基因学:大数据的大希望
  11. 灵格斯怎么屏幕取词_灵格斯词霸怎么屏幕取词
  12. 普通学校,非科班,从电脑小白到大厂offer的自学之路
  13. Kali Linux 软件源与更新源和更新命令
  14. 超级计算机神威太湖之光储蓄量,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
  15. script用英语怎么说,script英语什么意思
  16. JER与JDK区别以及JDK的安装配置(2021-06-13 Win10)
  17. 康熙王朝---转自别人的旁白分析
  18. 笔试练习题001...to be continued...
  19. 服务器如何防御攻击,有哪些方法
  20. 寻找技术KOL | IOST技术征文计划

热门文章

  1. Jenkins容器由于虚拟内存不足导致的异常退出
  2. 手机屏幕的色彩偏离度(ΔE)(也就是常说的色准)
  3. feign调用不通问题,JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r
  4. win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过)
  5. uni-app云打包成ipa文件安装到iPhone上全过程记录
  6. 计算机专业可以从事平面设计吗,计算机专业和平面设计专业是一个专业不?
  7. 主板风扇转不开机是什么问题_cpu风扇转主板不启动怎么办
  8. IBM内存三技术:Chipkill、MPX、MM
  9. Python_day19--HTML基础--文本标签、超链接标签、图片标签
  10. python二元函数图像在线绘制_用python绘制二元函数