当前位置: 首页 > news >正文

串口通信-USART和UART的区别

USART和UART介绍

USART和UART并不相同,STC89C52是一个UART,STC15F2K32S2有两个UART,(之前程序中串口函数名写错了,一直写成usart,已全部改了过来)

UART:

universal asynchronous receiver and transmitter 通用异步收发器

总线信号:TX , RX

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。

作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。

USART:

universal synchronous asynchronous receiver and transmitter 通用同步异步收发器

总线信号: TX, RX, CK

USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。

特点:

  1. 全双工操作(相互独立的接收数据和发送数据);

  2. 同步操作时,可主机时钟同步,也可从机时钟同步;

  3. 独立的高精度波特率发生器,不占用定时/计数器;

  4. 支持5、6、7、8和9位数据位,1或2位停止位的串行数据桢结构;

  5. 由硬件支持的奇偶校验位发生和检验;

  6. 数据溢出检测;

  7. 帧错误检测;

  8. 包括错误起始位的检测噪声滤波器和数字低通滤波器;

  9. 三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;

  10. 支持多机通信模式;

  11. 支持倍速异步通信模式。

支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32单片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式是一样的,都使用异步模式

USART和UART的区别

USART和UART之间的第一个区别是可以为串行数据提供时钟的方式。 UART在内部向微控制器生成其数据时钟,并通过使用起始位转换将该时钟与数据流同步。没有与数据相关的输入时钟信号,因此为了正确接收数据流,接收器需要提前知道波特率应该是什么。USART可以设置为以同步模式运行。在此模式下,发送外设将生成一个时钟,接收外设可以从数据流中恢复,而无需提前知道波特率。或者,链路将使用完全独立的线路来承载时钟信号。使用外部时钟可使USART的数据速率远高于标准UART的数据速率,最高可达4 Mbps。

第二个主要区别是外设可以支持的协议数量。 UART很简单,只提供其基本格式的一些选项,例如停止位数和偶数或奇数奇偶校验。 USART更复杂,可以以与许多不同标准协议相对应的形式生成数据,例如IrDA,LIN,智能卡,RS-485接口的驱动程序启用和Modbus等。 USART也具有与UART相同的异步功能

两者使用情况

USART和UART外设具有明显不同的功能,可以使用在不同的情况下,开发人员可以在标准微控制器上找到两个外围设备。例如,采用针对低功耗设计的微控制器,例如STM32系列。 STM32器件具有片上USART和UART外设。 USART意味着在“高”能耗期间进行所有“繁重的”串行通信。但是,当微控制器处于睡眠状态且处于低功耗模式时,UART外设可以处理低速通信,同时降低能耗。

USART和UART是否相同?从技术上讲,答案是否定的。 USART通常具有更多功能,标准UART和生成时钟数据的能力允许USART以远低于UART功能的波特率运行。 USART确实包含了UART的功能,并且在许多应用中,尽管具有USART的强大功能,开发人员将它们用作简单的UART,忽略或避免这些强大外设的同步时钟生成功能。难怪有这么多人使用这些术语,就像它们是同义词一样。

UART协议

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

其中各位的意义如下:

起始位:先发出一个逻辑"0"的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符,从最低位开始传送。

奇偶校验位:数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑"1"状态,表示当前线路上没有资料传送。

波特率:衡量数据传送速率的指标。表示每秒钟传送的比特位。

相关文章:

  • Docker常见操作
  • YOLOV7详细解读(一)网络架构解读
  • 【侯捷C++-----STL与泛型编程】
  • es6对象的扩展、对象的新增方法
  • Stream流
  • DRM系列(8)之prepare_signaling
  • 企业级C++项目那些事(1):VSQt相关设置
  • 基于51单片机温湿度控制器proteus仿真设计
  • adb常用命令总结[持续更新]
  • 二分查找练习
  • 【Unity面试】 Lua语言基础核心 | 面试真题 | 全面总结 | 建议收藏
  • 结构化编程(SP,structured programming)
  • Python 博客园快速备份脚本
  • Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)
  • JavaWeb三大组件之Servlet------Servlet详细讲解
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 78. Subsets
  • ECS应用管理最佳实践
  • egg(89)--egg之redis的发布和订阅
  • Node项目之评分系统(二)- 数据库设计
  • Octave 入门
  • orm2 中文文档 3.1 模型属性
  • Python 基础起步 (十) 什么叫函数?
  • Selenium实战教程系列(二)---元素定位
  • unity如何实现一个固定宽度的orthagraphic相机
  • 安卓应用性能调试和优化经验分享
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 山寨一个 Promise
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​MySQL主从复制一致性检测
  • ​Python 3 新特性:类型注解
  • #NOIP 2014# day.2 T2 寻找道路
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2020)Java后端开发----(面试题和笔试题)
  • (C++)八皇后问题
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (七)c52学习之旅-中断
  • (转)c++ std::pair 与 std::make
  • (转)Oracle存储过程编写经验和优化措施
  • .net 4.0发布后不能正常显示图片问题
  • .Net 6.0 处理跨域的方式
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • :O)修改linux硬件时间
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @Resource和@Autowired的区别
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [Android]常见的数据传递方式
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [CISCN 2023 初赛]go_session
  • [DAX] MAX函数 | MAXX函数
  • [FT]chatglm2微调