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 接口是实现了字节的发送。

相关文章
|
网络协议
【Azure App Service】App Service 如何配置私网域名以及证书呢?
本文解答了关于 Azure App Service 如何配置私网域名及证书的问题。App Service 不支持私网域名,自定义域名需配置在公共 DNS 服务器上。文章引用官方文档详细说明了映射自定义 DNS 的步骤,并附带参考资料链接,帮助用户深入了解相关配置方法。
332 6
|
SQL 分布式计算 算法
【python】python指南(十):静态类型注解之Union
【python】python指南(十):静态类型注解之Union
262 0
|
存储 机器学习/深度学习 人工智能
存内计算的应用:存算一体芯片的发展与挑战
存内计算的应用:存算一体芯片的发展与挑战
2999 4
|
消息中间件 移动开发
PCIe RN (Readiness Notification)介绍
PCIe RN (Readiness Notification)介绍
1663 0
PCIe RN (Readiness Notification)介绍
|
弹性计算 应用服务中间件 双11
阿里云双11优惠活动云服务器价格表,不同实例、配置、带宽完整价格参考
阿里云2023的双十一优惠活动已经开启了,首先,阿里云在今年的双11优惠活动中推出了三款特惠云服务器,轻量应用服务器2核2G只要87元1年、2核4G只要165元1年,经济型e实例云服务器2核2G配置99元1年,而且续费不涨价。除了特惠云服务器之外,还有2核4G、2核8G、4核8G、4核16G、8核16G等热门配置均有优惠,本文为大家整理汇总了选择不同实例、配置、带宽的完整价格,以表格形式展示给大家,以供参考和选择。
阿里云双11优惠活动云服务器价格表,不同实例、配置、带宽完整价格参考
|
Oracle 关系型数据库 数据库
Oracle 报错:exceeded simultaneous SESSIONS_PER_USER limit
Oracle 报错:exceeded simultaneous SESSIONS_PER_USER limit
Oracle 报错:exceeded simultaneous SESSIONS_PER_USER limit
|
传感器 数据采集 安全
Zigbee技术介绍|学习笔记
快速学习Zigbee技术介绍
Zigbee技术介绍|学习笔记
|
编解码 Kubernetes Ubuntu
VirtualBox 仅主机网络配置,搭建Ubuntu系统
需要系统同时支持 x86_64 和 arm64。我们选择 Ubuntu 22.04 Jammy Jellyfish 桌面版(https://ubuntu.com/download/desktop),非常适合运行 Kubernetes,方便调试和测试。
798 0
VirtualBox 仅主机网络配置,搭建Ubuntu系统
|
缓存 网络协议 算法
彻底弄懂TCP协议:从三次握手说起2
说到 TCP 协议,相信大家都比较熟悉了,对于 TCP 协议总能说个一二三来,但是 TCP 协议又是一个非常复杂的协议,其中有不少细节点让人头疼点。本文就是来说说这些头疼点的,浅谈一些 TCP 的疑难杂症。那么从哪说起呢?当然是从三次握手和四次挥手说起啦,可能大家都知道 TCP 是三次交互完成连接的建立,四次交互来断开一个连接,那为什么是三次握手和四次挥手呢?反过来不行吗?
472 0
彻底弄懂TCP协议:从三次握手说起2
|
机器学习/深度学习 数据采集 人工智能
一文概览NLP算法(Python)(上)
NLP,自然语言处理就是用计算机来分析和生成自然语言(文本、语音),目的是让人类可以用自然语言形式跟计算机系统进行人机交互,从而更便捷、有效地进行信息管理。

热门文章

最新文章