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

相关文章
|
7月前
|
存储 缓存 芯片
STM32--USART串口
STM32--USART串口
112 0
|
7月前
|
存储 芯片
STM32 cubemx配置USART DMA传输
STM32 cubemx配置USART DMA传输
164 0
|
缓存 数据格式
STM32串口通信配置(USART1+USART2+USART3+UART4)
STM32串口通信配置(USART1+USART2+USART3+UART4)
305 0
|
Linux 定位技术 芯片
|
移动开发
STM32F1案例 串口USART使用
STM32F1案例 串口USART使用
201 0
|
内存技术
STM32F0 DMA串口接收数据
STM32F0 DMA串口接收数据
281 1
STM32F0 DMA串口接收数据
|
存储 芯片 异构计算
|
数据格式
USART串口通讯
USART串口通讯
258 0
USART串口通讯
|
存储
STM32的HAL库开发系列 - 串口DMA接收
STM32的HAL库开发系列 - 串口DMA接收
736 0