Uart 和 asart 的介绍 | 学习笔记

简介: 快速学习 Uart 和 asart 的介绍

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:Uart 和 asart 的介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11158


Uart 和 asart 的介绍

另外一个非常重要的知识点 debug,这个地方涉及到更多的其实是串口。也就是基本上调试,无论是嵌入式还是单片机,基本上都是用串口来做的,所以说串口应该是很重要的,特别是工程量很大的时候看它是一个必经状态。

对于单片机,他给我们提供了两种串口,一个是通用异步创新触发,还有一个是通用异步同步收发,就是 UART 和 USART,那么,UART 是一种异步的,那么,什么叫做异步的?

之前就用其他的通讯模块,比如说,spic、usb,这些既有异步,也有同步。举例,比如所谓的异步通信,异步通信主要是指通信双方不共享时钟,或者是通信双方采用各自独立时钟,这就意味着比如,假设之前说的 MC-51 单片机的时钟是12M,然后他要跟 PC 机通信,那么,PC 机有没有串口?也有。所以一般讲通信的时候会打开串口调试助手,而这个串口调试助手通常是在 PC 端的,通常要设置串口号,波特率,把这些东西都设一遍,设置完这些东西以后 pc 机波特率也需要设置一遍,Msc 和 PC 的波特率是各自设置各自的,只要保证一样就可以了,但是单片机有自己的晶振,PC 机也有自己的晶振,那么就不能说频率设置成一样,就是一样的了。

这也不一定,但是从宏观来讲,他们的频率是一样的。他不一样,就没法收到对方的信号,从微观上来讲是有区别的,这种区别非常的细微,这种区别是一个相对概念,它相当于 PC 机和单片机使用同一个始动源,如果两个都使用 12M 的晶振,那么这两个的波特率是没有什么区别的,但是他们现在使用的不是同一个晶振。晶振是一个石英晶体切割出来的,是有微观差别的,所以把这种差别叫做不同步,就是所谓的异步,这个异步就是这么来的。为了避免异步通信,通常情况下,实际的速率是波特率的 16 到 32 倍,它发射出来的是从 16 个数据信号里面选其中一个发射出来,目的是防止异步带来的误差,当然,还有别的解决方法,因为用一步通信的方式有很多,比如 USB,USB 就是异步通信,还有网线的接口,还有 485,422,也都是异步通信。

接下来是同步通信,同步通信 SPI,那么异步通信有异步通信的特点和优势,主要优势就是距离远,USB 485,422 网线都是几百米。同步通信的特点就是距离近,但是速率高,USB 的速率虽然高,但是用的不只是异步通信,用的更多的是插分信号,通过插分、编码大幅度提升速度。而普通的同步通信的速率是 ttlp 它的速率在硬件条件也就是同等条件下要高一些。但是也不能离得太远,离得太远它的始动信号,也就是 clk 容易受到干扰,所以为什么不能同步通信太久,是为了避免被干扰,所以才做插分信号,提高抗干扰性,

所以串口本来是异步通信,提供一种同步的机制。其实就是在曾经的普通串口的基础上,多出了一个时钟引脚,对于这个串口也可以设置很多数据位,数据位、奇偶校验位和停止位可以根据需求修改,因为串口已经诞生了差不多 40 年历史,所以基本上不需要太研究细节,除非需要模拟,只需要知道数据位一般是 8 到 9 位,校验位一般是第 9 位,停止位也是可以去修改。

image.png

另外,平时需要注意的就是波特率以及数据的问题,假设波特率设置成 115200,那么它的真实速率是多少?现在来计算一下,把一个起始位 8 个数据位两个停止位加起来,再用波特率除以这个和得到 9600byte/s,这 9600 字节每秒已经包括了协议开销,而并不是单纯的速率,所以,实际上通信频率会更高,现在为了提高速度,很多设备的波特率都会特别高,达到了十几万,甚至达到上百万,对于 32 其实是提供了数据的一个完整接口,但是并没有支持 printf,但是可以通过接口去完成字节的收发,但是不能格式化收发数据,为了实现格式化收发,数据需要做一点修改,这个办法还是一样的,这里简单的提一下,先找到窗口提供的接口,但是并不建议在里面去修改,就是不要去改库,这个库里面还没有涉及到代码。

关于串口的代码,如果需要做 printf 的支持,要实现 fputc 接口。下了 printf 的支持,就会去调用 fput c 接口,fputc 接口是实现了字节的发送。

相关文章
|
存储 缓存 流计算
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
Flink 支持增加 DataStream KeyBy 之后 conncet BroadCastStream 形成 BroadConnectedStream,广播流内数据一般为不间断更新的上下文信息,这里介绍如果等待广播流初始化完毕再处理 Source 数据
1942 0
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
Flutter 121: 图解简易 Slider 滑动条
0 基础学习 Flutter,第一百二十一步:简单学习 Slider 滑动条!
1883 0
Flutter 121: 图解简易 Slider 滑动条
|
11月前
|
网络协议
【Azure App Service】App Service 如何配置私网域名以及证书呢?
本文解答了关于 Azure App Service 如何配置私网域名及证书的问题。App Service 不支持私网域名,自定义域名需配置在公共 DNS 服务器上。文章引用官方文档详细说明了映射自定义 DNS 的步骤,并附带参考资料链接,帮助用户深入了解相关配置方法。
266 6
|
分布式计算 资源调度 Hadoop
Hadoop运行模式(五)、编写Hadoop集群常用脚本、Hadoop集群启停脚本、常用端口号说明、集群时间同步、时间服务器配置、其他机器配置
Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh、查看三台服务器Java进程脚本:jpsall、分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用、如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。...
698 1
Hadoop运行模式(五)、编写Hadoop集群常用脚本、Hadoop集群启停脚本、常用端口号说明、集群时间同步、时间服务器配置、其他机器配置
|
传感器 人工智能 物联网
柔性电子技术:可穿戴设备与智能生活的未来
【9月更文挑战第14天】柔性电子技术作为一种新兴且充满潜力的技术,正逐步成为连接可穿戴设备与智能生活的桥梁。它以其独特的灵活性和适应性,为我们的生活带来了更多的可能性和便捷性。尽管目前仍面临诸多挑战,但随着科技的不断进步和创新的推动,柔性电子技术必将迎来更加美好的未来。
|
Windows
Windows系统命令dir使用详解
Windows系统命令dir使用详解
2131 2
|
SQL 分布式计算 算法
【python】python指南(十):静态类型注解之Union
【python】python指南(十):静态类型注解之Union
225 0
|
人工智能 监控 测试技术
一张显卡看遍天下电影!智源联合高校开源Video-XL打破长视频理解极限,95%准确率刷爆纪录
智源研究院联合高校团队推出Video-XL,一款专为超长视频设计的理解模型。通过视觉上下文潜在摘要技术,Video-XL将大量视觉数据高效压缩,显著提升理解准确性并降低计算成本。在多项测试中,Video-XL超越现有方法,展现出卓越性能。其开源为视频理解领域带来新活力,适用于视频监控、电影分析等多种场景。尽管面临一些挑战,Video-XL仍是视频理解领域的重要里程碑。
275 6
|
数据可视化 Linux API
Tkinter与PyQt的对比
【8月更文挑战第3天】本文对比了Python中两大GUI工具包Tkinter与PyQt。Tkinter作为Python标准库的一部分,易于学习且轻量级,适合快速开发简单的跨平台GUI应用。PyQt功能强大且灵活,支持复杂应用的开发,更适合有经验的开发者。通过示例代码展示了如何使用这两种工具包创建基本的GUI应用及图像查看器,帮助读者理解它们的不同之处。选择哪个工具包取决于项目的具体需求、开发者的经验以及对功能和性能的要求。
|
域名解析 网络协议 安全
服务器部署后 访问出错的原因和解决办法
部署到服务器后无法访问可能是由于配置错误、权限问题或网络设置不当。解决办法包括检查服务器配置文件、确保文件路径正确、调整权限设置以及检查防火墙和端口设置。
1570 0