(十六)串口UART

文章目录

  • UART简介
  • 传输数据帧和波特率
  • 定时器1作为串口1波特率发生器
    • 串口部分相关寄存器
    • TMOD
    • AUXR
    • PCON
    • SCON
    • SBUF
  • 串口1工作模式1:8位UART,波特率可变总体工作原理
  • 如何简单接收一个字符和发送数据
  • 一步之遥的设置
  • 现象演示


UART简介

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器。是一种串行、异步、全双工的通信协议,并且只要一对传输线就可以实现双向通信,大大降低了成本,但传送速度较慢

传输数据帧和波特率

在这里插入图片描述

1. 波特率
异步通讯中由于没有时钟信号所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,图中用虚线分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200等。

单位bit/s–所以波特率就是传输数据速度快慢的反应,比如9600波特率,那就是1s传输9600bit(位)

2. 通讯的起始和停止信号
串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可

3. 有效数据
在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7或8位长。

4. 数据校验
在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity),它们介绍如下:

  1. 奇校验要求有效数据和校验位中"1"的个数为奇数,比如一个8位长的有效数据为:01101001,此时总共有4个"1",为达到奇校验效果,校验位为"1",最后传输的数据将是8位的有效数据加上1位的校验位总共9位。
  2. 偶校验与奇校验要求刚好相反,要求帧数据和校验位中"1"的个数为偶数,比如数据帧:11001010,此时数据帧"1"的个数为4个,所以偶校验位为"0"。
  3. 0校验是不管有效数据中的内容是什么,校验位总为"0",1校验是校验位总为"1"。
  4. 在无校验的情况下,数据包(帧)中不包含校验位。

注意:这里我们暂不关心校验以及波特率怎么算的,借用isp软件,进行波特率的生成,因为硬件在收发自己会自动补全数据包(数据流),所以只要关心有效数据位,重点学习对一帧有效数据的解码

定时器1作为串口1波特率发生器

借助isp生成定时器1作为串口1的波特率发生器

在这里插入图片描述

1. 波特率9600,
2. 串口1工作方式8位UART,波特率可变,
3. 定时器1(1T)工作在模式0(16位自动重载),
4. 开启串口1的中断,

void UartInit(void)		//115200bps@12.000MHz
{SCON = 0x50;		//8位数据,可变波特率AUXR |= 0x40;		//定时器时钟1T模式AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器TMOD &= 0x0F;		//设置定时器模式TL1 = 0xE6;		//设置定时初始值TH1 = 0xFF;		//设置定时初始值ET1 = 0;		//禁止定时器1中断TR1 = 1;		//定时器1开始计时ES = 1;			//串口1中断EA  = 1; 		//允许所用中断
}

为啥生成代码是这样???为什么这么设置呢????

串口部分相关寄存器

在这里插入图片描述
在这里插入图片描述

TMOD

在这里插入图片描述

这里设置定时器1为 16位自动重载(方便后面哦)的定时器

AUXR

在这里插入图片描述
在这里插入图片描述

bit6(T1x12):设置串口1为 1T模式
bit0(S1ST2):这里选择定时器1作为串口1(UART1)的波特率发生器

PCON

在这里插入图片描述
因为PCON复位值就是不加倍,所以就没配置

SCON

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1. SCON可位寻址,也就是可以单独对位操作
2. 配合PCONbit6使用的,这里由于我们设置了PCONbit6为0,所以SM0和SM1用于选择串口1的工作模式,选择8位UART波特率可变(8位有效数据),然后提到了定时器1工作模式,我们之前设置定时器1为模式0(16位自动重载)这里就不要考虑PCON中bit7(SMOD)位,波特率加倍问题了
3. 开启内部串行接收器,这接收器,就会自动把数据搬到串行口数据缓冲寄存器SBUF里面

SBUF

在这里插入图片描述
这是两个寄存器,一个是放发送数据的,一个是放接收的数据的

另外串口1中断向量号为(查手册):
在这里插入图片描述

串口1工作模式1:8位UART,波特率可变总体工作原理

在这里插入图片描述

如何简单接收一个字符和发送数据

发送:

void SendByte(char bat)
{SBUF = bat;while(!TI);TI = 0;
}void SendString(char *str)
{while(*str != '\0'){SendByte(*str);str++;}
}

用串口中断接收

void Uart1Handler()interrupt 4
{char tmp;if(RI){RI = 0;tmp = SBUF;SendByte(tmp);SendByte(' ');SendString("recive\r\n");}if(TI){TI = 0;}
}

一步之遥的设置

不选对,在考场里,你就等着哭吧

在这里插入图片描述

还有一个编码问题,有时候串口打印中文会乱码,推荐直接用GB232或者UTF-8

在这里插入图片描述
最后一个调试设置选择文本模式,波特率(匹配就行),和不选自动发送结束符

在这里插入图片描述

现象演示

(十六)串口Uart



----- 如有错误欢迎大家批评指正!!!

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

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

相关文章

一种轻量分表方案-MyBatis拦截器分表实践|京东零售技术实践

背景 部门内有一些亿级别核心业务表增速非常快,增量日均100W,但线上业务只依赖近一周的数据。随着数据量的迅速增长,慢SQL频发,数据库性能下降,系统稳定性受到严重影响。本篇文章,将分享如何使用MyBatis拦…

微软Azure-OpenAI 测试调用及说明

本文是公司在调研如何集成Azure-openAI时,调试测试用例得出的原文,原文主要基于官方说明文档简要整理实现 本文已假定阅读者申请部署了模型,已获取到所需的密钥和终结点 变量名称值ENDPOINT从 Azure 门户检查资源时,可在“密钥和…

Advanced CNN

文章目录 回顾Google NetInception1*1卷积Inception模块的实现网络构建完整代码 ResNet残差模块 Resedual Block残差网络的简单应用残差实现的代码 练习 回顾 这是一个简单的线性的卷积神经网络 然而有很多更为复杂的卷积神经网络。 Google Net Google Net 也叫Inception V…

5、应急响应-拒绝服务钓鱼识别DDOS压力测试邮件反制分析应用日志

目录 前言: 1、#内网应急-日志分析-爆破&横向&数据库 2、#红队APT-钓鱼邮件识别-内容&发信人&附件 3、#拒绝服务攻击-DDOS&CC-代理&防火墙防御 用途:个人学习笔记,欢迎指正! 前言: 了解和…

OkHttp完全解读

一,概述 OkHttp作为android非常流行的网络框架,笔者认为有必要剖析此框架实现原理,抽取并理解此框架优秀的设计模式。OkHttp有几个重要的作用,如桥接、缓存、连接复用等,本文笔者将从使用出发,解读源码&am…

深度视频恢复软件推荐,轻松恢复视频文件!

“我在电脑上保存了一些视频,但在清理时却不小心将这些视频删除了,有什么方法可以恢复删除的视频吗?希望大家给我推荐一些好用的方法。” 随着科技的飞速发展,数字媒体已经成为了我们生活中不可或缺的一部分。然而,数字…

国图公考:考公和考编一样吗?

公务员:是指在各级机关中,符合规定,行使职权,执行公务的人员 事业单位:事业单位是指由国家或社会组织举办,从事教育、科学、文化、卫生、体育等社会公益事业的单位。 公务员和事业编都是有编制的&#xf…

dataframe 列按指定字符截取

创建一个示例 import pandas as pd data {Column1: [1~2, 21~3, 3~41, 411~5], } test_df pd.DataFrame(data) print(test_df) 截取 ’~ ‘前、后的值 test_df[Column1_left] test_df[Column1].apply(lambda x: x.split(~)[0] if pd.notnull(x) else np.nan) test_df[…

某赛通电子文档安全管理系统 PolicyAjax SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

推荐系统|排序_MMOE

MMOE MMOE是指Multi-gate Mixture-of-Experts 注意看Expert后面加了s,说明了有多个专家。 而在MMOE中专家是指用来对输入特征计算的神经网络,每个神经网络根据输入计算出来的向量都会有所不同。 MMOE的低层 MMOE的上一层 通过MMOE的低层算出的向量和权…

Markdown 图片尺寸对齐等详细使用

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您些帮助请👉关…

全链路压测的关键点是什么?

全链路压测是一种重要的性能测试方法,用于评估应用程序或系统在真实生产环境下的性能表现。通过模拟真实用户行为和流量,全链路压测能够全面评估系统在不同负载下的稳定性和性能表现。本文将介绍全链路压测的关键点,以帮助企业更好地理解和应…

【第二十二课】最短路:dijkstra算法 ( acwing849 / acwing850 / c++ 代码)

目录 dijkstra算法求最短距离步骤 朴素的dijkstra算法---acwing-849 代码如下 代码思路 堆优化版的dijkstra算法---acwing-850 代码如下 关于最短路问题分有好几种类型 : 单源就是指:只求从一个顶点到其他各顶点 多源是指:要求每个顶…

SD-WAN和MPLS的区别以及如何选择?

网络连接技术的选择对企业来说至关重要。SD-WAN(软件定义广域网)和MPLS(多协议标签交换)是两种备受关注的网络连接方案。它们在架构、带宽、成本和管理等方面存在显著区别,企业应了解清楚这些区别再进行选择。 SD-WAN采…

AI算力专题:从超微电脑创新高看AI算力产业链高景气

今天分享的是AI算力系列深度研究报告:《AI算力专题:从超微电脑创新高看AI算力产业链高景气》。 (报告出品方:太平洋证券) 报告共计:10页 海外巨头指引 Al 算力产业链高景气 超微电脑业绩指引大幅上调反映…

三子棋游戏小课堂

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今天的主菜是,C语言实现的三子棋小游戏, 所属专栏: C语言知识点 主厨的主页:Chef‘s blog 前言&…

机器学习 | 掌握逻辑回归在实践中的应用

目录 初识逻辑回归 逻辑回归实操 分类评估方法 初识逻辑回归 逻辑回归(LogisticRegression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单…

【Spark系列2】Spark编程模型RDD

RDD概述 RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets:A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想 RDD实际为Resilient Distribution Datasets的简称,意为弹性分…

【大厂AI课学习笔记】1.3 人工智能产业发展(2)

(注:腾讯AI课学习笔记。) 1.3.1 需求侧 转型需求:人口红利转化为创新红利。 场景丰富:超大规模且多样的应用场景。主要是我们的场景大,数据资源丰富。 抗疫加速:疫情常态化,催生新…

Windows11通过Hyper-V创建VM,然后通过vscode连接vm进行开发

这边需要在win11上建立vm来部署docker(这边不能用windows版本的docker destop),学习了下,记录。 下载系统镜像 首先下载系统镜像:https://releases.ubuntu.com/focal/ 这边使用的是ubuntu20.04.6 LTS (Focal Fossa) ,Server inst…