【硬件接口】UART接口

news2024/12/23 18:03:44

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。

一、UART接口概要

UART接口,即通用异步接收器/发送器,是一种常用的串行通信协议,广泛应用于单片机或各种嵌入式设备之间的通信。在串行通信中,数据通过单条线路或导线逐位传输。在双向通信中,我们使用两根导线来进行连续的串行数据传输。根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。

二、UART电气特性

UART的电气特性主要涉及不同的电气标准,这些标准定义了串口通信中信号的电平、电压范围等关键参数,以下是几种UART常见的电气特性的差异对比表:

对比项TTLRS232RS422RS485
信号类型电平信号负逻辑电平信号差分信号差分信号
电平范围0-3.3V/5.0V±15V-0.25V-+6V-7V-+12V
抗干扰能力较强
传输距离<1m<15m<1200m<1200m
传输带宽<100Kb/s<100Kb/s<10Mb/s<10Mb/s
负载个数111032
传输模式全双工,点对点全双工,点对点全双工,点对点半双工,多对多
最少走线根数3342

三、波特率

波特率是衡量数据的传输速度,单位为bps(bits per second),即每秒传输的比特位。UART通信中,发送端和接收端必须在同样的波特率下工作,以确保数据能够准确传输。波特率的不同会导致位的时序不一致,从而引发数据传输错误,波特率误差偏大同样也会导致通讯失败,在工程实践中通常建议双方允许的最大波特率偏差为5%,在高精度要求的应用场合下建议将误差控制在2%以内。

在实际应用中,通常是通过已知的波特率进行计算分频因子并导入UART配置文件,微控制器的datasheet或参考手册通常会提供具体的计算公式和示例。下面以STM32为例:

(1)确认系统时钟频率(PCLK)

对于STM32,USART1的时钟源来自于APB2(PCLK2),其他USART(USART2-5)来源于APB1(PCLK1)。通常PCLK1最大的频率为36MHz,PCLK2的最大频率是72MHz。具体取决于系统时钟的配置。

(2)根据datasheet提取计算公式

STM32的波特率计算公式:波特率=fck/(16×USARTDIV),其中,fck是系统时钟频率(PCLK1或PCLK2),USARTDIV是波特率分频因子,16是因为STM32的串口硬件设计中,每传输1bit数据,会采样16次,以确保数据的准确性。通过这种方式STM32能够减少由于信号干扰或抖动导致的错误,提高串口通讯的可靠性。

(3)计算USARTDIV

根据目标波特率和时钟系统的频率,可以计算出USARTDIV的值:USARTDIV=fck/(16×目标波特率)

(4)分数波特率的产生和设置USART_BRR寄存器

USARTDIV是一个无符号定点数,STM32的USART_BRR寄存器支持分数设置以提高精确度。USART_BRR的前4位用于表示小数部分,后12位用于表示整数部分。计算出的USARTDIV值需要被拆分为整数部分和小数部分,分别填入USART_BRR寄存器。整数部分放在高12位,小数部分放在低4位。

(5)示例计算:

假设系统时钟是fck=72MHz,目标波特率为115200bps,计算USARTDIV的值:

 USARTDIV=72000000/(16×115200)=39.0625

其中,将39.0625拆分为整数部分39和小数部分0.0625,进行进制转换,USART_BRR寄存器的值为0x2701。

(6)误差计算

实际波特率可能与目标波特率存在误差,误差率可以通过以下公式计算:

四、数据格式

空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。

起始位:每开始一次通信时发送方先发出一个逻辑”0”的信号(低电平),表示传输字符的开始。因为总线空闲时为高电平所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平。

数据位:数据位指每个数据帧中数据的实际位数。常见的数据位设置有7位、8位,有时也会有9位数据位(用于某些特殊协议)。在ASCII编码中,通常使用7位或8位数据位来表示一个字符。

奇偶检验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。校验位其实是调整个数,串口校验分几种方式:

(1)校验位用于错误检测,可以是奇校验(Odd)、偶校验(Even)或无校验(None)。

(2)奇校验意味着数据位中“1”的数量加上校验位应该是奇数。

(3)偶校验意味着数据位中“1”的数量加上校验位应该是偶数。

(4)无校验意味着不使用校验位,数据帧只包含数据位和停止位。

停止位:停止位定义了每个数据帧结束时的空闲位(空闲状态通常是高电平,即逻辑“1”)。常用的设置是1位停止位,但在某些情况下,如需要增强数据帧之间的区分度时,可能会使用1.5位或2位停止位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2255717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python | print() 函数常被忽略的几点用法

在 python 编程中&#xff0c;print() 是最为基础和常用的函数。 也正因如此&#xff0c;print() 函数的一些基础用法常常被我们初学者所忽略&#xff0c;典型的有&#xff1a;换行问题、间隔符使用及格式化输出等。 一、print() 换行问题 1、默认情况下&#xff0c;每一个 …

VTK编程指南<五>:VTK中的坐标系统、空间变换及VTK矩阵详解

1、坐标系统 计算机图形学里常用的坐标系统主要有 4 种&#xff0c;分别是 Model 坐标系统、World 坐标系统、View坐标系统和 Display坐标系统(这些名词在不同的书里的中文表述均有所差别&#xff0c;所以直接使用英文名词表示)&#xff0c;此外还有两种表示坐标点的方式&#…

MaxEnt模型在物种分布模拟中如何应用?R语言+MaxEnt模型融合物种分布模拟、参数优化方法、结果分析制图与论文写作

目录 第一章 以问题导入的方式&#xff0c;深入掌握原理基础 第二章 常用数据检索与R语言自动化下载及可视化方法 第三章 R语言数据清洗与特征变量筛选 第四章 基于ArcGIS、R数据处理与进阶 第五章 基于Maxent的物种分布建模与预测 第六章 基于R语言的模型参数优化 第七…

【JavaEE 进阶(一)】SpringBoot(上)

博主主页: 33的博客 文章专栏分类:JavaEE ??我的代码仓库: 33的代码仓库?? ???关注我带你了解更多进阶知识 目录 1.前言2.Spring3.第一个SpringBoot程序4.Spring MVC 4.1建立连接 4.1.1RequestMapping使用 4.2请求 4.2.1传递单个参数4.2.2传递多个参数4.2.3传递一个对象…

银行项目网上支付接口调用测试实例

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 公司最近有一个网站商城项目要开始开发了&#xff0c;这几天老板和几个同事一起开着需求会议&#xff0c;讨论了接下来的业务规划和需求策略&#xff0c;等技术需求…

手机LCD分区刷新技术介绍

分区刷新也称为分区变频&#xff0c;LCD分区刷新功能的目的是将屏幕分为上下半区&#xff0c;分区显示不同帧率&#xff0c;上方区块High Frame Rate&#xff0c;下方区块Low Frame Rate。使用者可以动态自定义上方高刷显示区的结尾位置。 当前的智能手机屏幕上&#xff0c;显示…

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中&#xff0c;命令行使用还是不太方便的&#xff0c;因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。 普通用户使用 参照上一篇教…

flask创建templates目录存放html文件

首先&#xff0c;创建flask项目&#xff0c;在pycharm中File --> New Project&#xff0c;选择Flask项目。 然后&#xff0c;在某一目录下&#xff0c;新建名为templates的文件夹&#xff0c;这时会是一个普通的文件夹。 然后右击templates文件夹&#xff0c;选择Unmark as …

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…

Moving Tables

任务内容 Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made a pla…

小程序 - 美食列表

小程序交互练习 - 美食列表小程序开发笔记 目录 美食列表 功能描述 准备工作 创建项目 配置页面 配置导航栏 启动本地服务器 页面初始数据 设置获取美食数据 设置onload函数 设置项目配置 页面渲染 页面样式 处理电话格式 创建处理电话格式脚本 页面引入脚本 …

Facebook广告文案流量秘诀

Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密&#xff01; 一、广告文案怎么写&#xff1f; 正文&#xff1a;这是帖子的正文&#xff0c;出现在您姓名的正下方。它可…

TEXT2SQL工具vanna本地化安装和应用

TEXT2SQL工具vanna本地化安装和应用 Vanna和Text2SQL环境安装和数据准备 conda虚拟环境安装数据准备ollama环境准备 ollama安装和运行ollama下载模型测试下API方式正常使用 chromaDB的默认的embedding模型准备 vanna脚本跑起来 Vanna和Text2SQL TEXT2SQL即文本转SQL&#xf…

标书里的“废标雷区”:你踩过几个?

在投标领域&#xff0c;标书的质量不仅决定了中标的可能性&#xff0c;更是体现企业专业度的关键。但即便是经验丰富的投标人&#xff0c;也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中&#xff0c;也可能是投标文件格式的规范问题。以下&…

操作系统——I/O系统

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 概述 计算机的两个主要工作是I/O和处理。I/O系统的目标是提高设备利用率&#xff0c;尽量提高CPU与I/O设备间的并行工作程度&#xff0c;I/O主要技术包括中断技术、DMA技术、…

【 工具变量】IPCC碳排放因子数据测算表

一、数据简介&#xff1a; 排放因子法是IPCC提出的一种碳排放估算方法&#xff0c;也是目前适用范围最广、应用最为普遍的方法。将各类能源消耗的实物统计量转变为标准统计量&#xff0c;再乘以各自的碳排放因子&#xff0c;加总之后就可以得到碳排放总量。如果按照ISO14064标…

无插件直播流媒体音视频播放器EasyPlayer.js播放器的g711系列的音频,听起来为什么都是杂音

在数字化时代&#xff0c;流媒体播放器已成为信息传播和娱乐消遣的重要工具。随着技术的进步&#xff0c;流媒体播放器的核心技术和发展趋势不断演变&#xff0c;以满足用户对于无缝播放、低延迟和高画质的需求。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放…

63 基于单片机的四个速度比较

所有仿真详情导航&#xff1a; PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于51单片机&#xff0c;采用四个滑动变阻器连接数模转换器模拟四个速度值&#xff0c;通过LCD1602显示&#xff0c;然后检测出最高的…

4.模块化技术之子程序

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 ​编辑 1.模块化基础和概述 使用模块化有什么好处 两大类模块化技术 程序局部的模块化 SAP系统内全局模块化 封装有什么好处&#xff1f; 2.子程序模块化 三种传递类型 子程序结构…

利用Python实现子域名简单收集

免责申明 本文仅是用于学习研究子域名信息收集&#xff0c;请勿用在非法途径上&#xff0c;若将其用于非法目的&#xff0c;所造成的一切后果由您自行承担&#xff0c;产生的一切风险和后果与笔者无关&#xff1b;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法…