(十六)串口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



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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Logstash将MySQL中的数据同步至Elasticsearch

目录 1 使用docker安装ELK 1.1 安装Elasticsearch 1.2 安装Kibana 1.3 安装Logstash 2 数据同步 2.1 准备MySQL表和数据 2.2 运行Logstash 2.3 测试 3 Logstash报错(踩坑)记录 3.1 记录一 3.1.1 报错信息 3.1.2 报错原因 3.1.3 解决方案 3.2 记录二 3.2.1 报错信…

榜单!高阶智驾冲刺10%搭载率,哪些玩家占据自研感知「高地」

得「感知」者,是智能化尤其是智能驾驶技术变革快速演进期的受益者。尤其是对于车企来说,规控自研易,感知自研难。 尤其是过去几年时间,基于机器学习和深度学习,TransformerBEV技术进一步提高对异常行为的预测准确性&am…

证券开户怎么联系专属客户经理?新手必看!

证券开户联系专属客户经理的方式有很多,可以通过手机网上找客户经理,现在这种方式是最多的,比如咱们网站都是各大券商专业的客户经理,在线联系就可以帮您安排。您自己也可以挑选自己觉得好的券商和客户经理,然后再沟通…

文本生成高清、连贯视频,谷歌推出时空扩散模型

谷歌研究人员推出了创新性文本生成视频模型——Lumiere。 与传统模型不同的是,Lumiere采用了一种时空扩散(Space-time)U-Net架构,可以在单次推理中生成整个视频的所有时间段,能明显增强生成视频的动作连贯性&#xff…

基于MongoDB实现聊天记录的存储

一、mongodb简介 1.1 mongodb简介 MongoDB是一个基于分布式文件存储的数据库,使用C语言编写。它旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富、最像关系数据库的。 Mong…

oracle 结果集操作符(求交集、并集、差集)

结果集的操作符 求并集:将两个结果集合并成一个结果集返回 union是求并集去重 union all是求并集不去重 select 1 as A from dual union select 1 as B from dual; select 1 as A from dual union all select 1 as B from dual;求交集:将两个结果集中公…

Unity 访问者模式(实例详解)

文章目录 实例1:简单的形状与统计访客实例2:游戏对象组件访问者实例4:Unity场景对象遍历与清理访客实例5:角色行为树访问者 访问者模式(Visitor Pattern)在Unity中主要用于封装对一个对象结构中各个元素的操…

【开发实践】python使用 moviepy实现mp4转gif(含可视化界面)

一、分析介绍 MoviePy是一个用于视频编辑和处理的Python库。它提供了一种简单而直观的方式来创建、编辑和合成视频,同时也支持添加音频和图像。 以下是MoviePy的一些主要功能和用法示例: 创建视频剪辑: from moviepy.editor import VideoFi…

批量将本地图片转为webp

-I 后是当前图片的路径目录 -O 后是 输出的webp目录 npx webp-batch-convert -I images -O images_webp npx webp-batch-convert -I icon -O icon_webp 在 assets 目录内 执行上面的命令 直接转换

怎么对现在的现货黄金行情进行分析?

进行现货黄金行情分析,很多人一上来就讨论使用什么技术指标,什么基本面的工具等等,其实这些东西并不是首要的。要做现货黄金行情分析,首先我们要掌握一些核心的问题,下面我们就来讨论一下这些核心问题是什么&#xff1…

JNPF低代码平台存在的价值

低代码开发平台是近年来兴起的一种软件开发体例,它为非技术背景的人员提供了编写应用程序的能力,而无需编写任何代码,这种开发体例正在逐渐改变传统的软件开发模式,为企业带来了更高的效率和矫捷性,在低代码开发平台中…

CentOS部署Docker Registry镜像仓库并结合内网穿透实现远程访问

文章目录 1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)…

RT-DETR算法优化改进:上采样算子 | 超轻量高效动态上采样DySample,效果秒杀CAFFE,助力小目标检测

💡💡💡本文独家改进:一种超轻量高效动态上采样DySample, 具有更少的参数、FLOPs,效果秒杀CAFFE和YOLOv8网络中的nn.Upsample 💡💡💡在多个数据集下验证能够涨点,尤其在小目标检测领域涨点显著。 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/…

【目标跟踪】3D点云跟踪

文章目录 一、前言二、代码目录三、代码解读3.1、文件描述3.2、代码框架 四、关联矩阵计算4.1、ComputeLocationDistance4.2、ComputeDirectionDistance4.3、ComputeBboxSizeDistance4.4、ComputePointNumDistance4.5、ComputePointNumDistance4.6、result_distance 五、结果 一…

系统分析师-21年-下午答案

系统分析师-21年-下午答案 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答,二、三、四、五题中任选两题作答 试题一 (25分) 说明 某软件企业拟开发一套基于移动互联网的在线运动器材销售系统,项目组决定采用FAST 开发方法进行系统分…

SumGNN: 多类型药物相互作用预测 - 通过高效知识图谱概括

SumGNN: 多类型药物相互作用预测 - 通过高效知识图谱概括 在医学领域,准确预测药物之间的相互作用对于药物研发和治疗方案设计至关重要。为了解决这一挑战,我们提出了一种名为"SumGNN"的新方法,旨在通过高效的知识图谱概括实现多类…

PostgreSql和Oracle的事务机制区别以及对程序的影响

前言 几年前IT信息产业的一些核心技术包括架构、产品以及生态都是国外制定,然而自从“遥遥领先”公司被制裁后,国家开始大力支持信息产业“新基建”,自2020年开始市场上涌现出了大量的国产化软件,就国产化数据库而言我所在的公司…

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

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

企业微信获客助手怎么实现抖音数据回传?

在数字化时代,企业微信获客助手和数灵通外链已经成为企业获取潜在客户的得力助手。通过在微信站外的各个渠道上捕获潜在客户,企业能够更好地满足客户需求并提高业务增长。而抖音作为当前最热门的短视频平台,也成为了企业营销的重要战场。 企业…

OTG -- ULPI接口芯片USB3318讲解(二)

目录 前沿 1 初识USB PHY芯片 2 ULPI接口与USB PHY芯片 3 USB3318简介 3.1 USB3318引脚定义 3.2 USB3318与ULPI接口时序 3.3 STM32F407 OTGHS如何驱动USB3318 3.4 USB3318原理图设计 4 总结 前沿 前面对STM32F407 OTG模块进行了简单的讲解,如果使用OTG_FS模…