目录
1. 介绍
A. 什么是USART?
USART是单片机内部的通信接口,也是最简单的通信接口,对未来学习更复杂的通信很有帮助。
STM32单片机内有3组USART串口,其中USART1它在单片机连接第29~33引脚,需要使用的只有PA9(发送数据)和PA10(接收数据),在使用USART1时,不能同时使用PA9和PA10,也不能使用定时器TIM1的2、3通道。
GPIO的配置如下:
B. USART在嵌入式系统中的应用重要性
想象一下你和朋友在玩手机游戏,USART就像是你们之间的即时语音通话,可以随时交流、合作。而其他协议就像是发送短信或邮件,速度慢、不及时,没法立即互动。
与UART相比,它可以同时支持同步和异步通信模式,并且通常具有更高的通信速率。因此,通常情况下,USART相对于UART来说更快更高效,能够满足系统与外部设备之间高效通信的需求,为系统的稳定运行和功能实现提供了关键支持。
缺点:
不能远距离传输信号,【(于是诞生RS232max:30米传输)/(RS485max:1000米)】
通信速度慢,不能一堆多的通信(SPI)
不能一对多通信(IIC)
2. USART的工作原理
USART就像是一种超级通讯管道,可以让两个设备之间互发消息,就像是你和朋友用手机发短信一样。
首先,如果你想发送消息,就把你要说的话写在一个小纸条上(数据加载到发送缓冲区),然后通过一个特殊的线路(串行通信线)发送给你的朋友。你的朋友收到了消息,就会读取纸条上的内容(数据被存储在接收缓冲区),明白你想表达的意思。
而USART有两种工作模式,就像是两种通信方式,一种是同步模式,另一种是异步模式。
A. 同步模式与异步模式的区别
-
同步模式:
- 这就像是你和你的朋友在一起跳舞,你们需要按照同样的音乐节奏来动作。
- 所以,就好像是你们有一个共同的DJ在控制音乐一样,你们两个都必须按照他的节奏来行动。
- 这样的方式保证了你们的舞步是协调一致的,就像串行通信中的数据传输是按照同一个时钟信号进行的一样。
-
异步模式:
- 这更像是你和朋友在各自的地方传递纸条,没有统一的节奏。
- 你们不需要听同一首音乐或者按照同一个节奏动作,而是只需要在交流时确定好传递纸条的速度即可。
- 就像串行通信中,发送和接收的设备之间通过设定好的传输速率进行通信,而不需要依赖外部的时钟信号。
简而言之,同步模式就是大家跟着同一拍子跳舞,而异步模式则是各自按照自己的步调走。
B. 数据传输流程
USART(Universal Synchronous Asynchronous Receiver Transmitter,通用同步/异步收发器)是一种常见的串行通信接口,常用于微控制器和外围设备之间的通信。下面是USART数据传输的基本流程:
-
初始化USART:首先,需要对发送端和接收端的USART进行初始化设置。这包括设置波特率(通信速率)、数据位数、停止位数、校验位等参数,以确保发送和接收端的设置是匹配的。
-
准备数据:发送端准备要发送的数据,将数据存储在发送缓冲区中,等待发送。
-
发送数据:发送端通过USART发送数据。USART会将缓冲区中的数据一个比特一个比特地发送出去,发送的顺序取决于设置的参数,可以是先发送最低有效位还是最高有效位。
-
接收数据:接收端通过USART接收数据。USART会将接收到的比特逐个存储到接收缓冲区中,直到完整的数据包被接收完毕。
-
处理数据:接收端从接收缓冲区读取数据,并进行相应的处理。这可能包括将数据显示在屏幕上、存储到内存中,或者进行其他操作。
-
确认接收(可选):在某些情况下,接收端可能需要向发送端发送确认信号,以告知发送端数据已经成功接收。
-
错误处理:如果在传输过程中发生错误,比如数据丢失或校验错误,通常会触发相应的错误处理机制,可能会重新发送数据或者进行其他操作。
-
结束通信:数据传输完成后,通信可以结束,或者根据需要进行下一轮的数据传输。
USART数据传输流程涉及到数据的发送、接收、处理和可能的错误处理,以确保数据能够可靠地在发送端和接收端之间进行传输。
C. 波特率控制
当我们在做硬件通信的时候,比如用USART(串行通信)发送数据时,有一个很重要的东西叫做波特率。波特率其实就是告诉我们通信有多快,就好比我们在打电话时说话的速度一样。
首先,我们得选一个合适的波特率,就像选个和朋友说话不会太快也不会太慢的速度一样。比如,我们可以选9600或者115200这样的常见速率。
然后,我们得告诉我们的设备,比如微控制器,要怎么设置波特率。这得通过一些计算来搞定,算出来的就是一些参数,告诉微控制器以什么频率发送数据。
接着,我们就把这些参数给设备,告诉它们怎么设置波特率。确保发送端和接收端都用同样的速率,这样它们才能正常交流。
最后,设置好了,我们就可以开始通信了!发送端和接收端会按照我们选的波特率来传输数据,这样我们就能顺畅地串行通信啦!
3. USART的配置与设置
A. 数据格式设置
数据格式设置其实就是告诉我们的设备在通信时应该按照哪种方式来组织数据,这样才能确保数据能够正确、快速地传输。
首先,数据位数的设置告诉设备每个数据字节有多少位。这很重要,因为如果我们设定的数据位数不对,比如说设备发送了一个8位的字节,但是接收端只设置了7位的数据位数,那么就会导致数据解析错误。
其次,校验位的作用就像是一种检查机制,它可以帮助我们在数据传输过程中发现错误。比如奇校验会确保每个字节的位数中奇数个1,偶校验则确保每个字节的位数中偶数个1,这样就能帮助我们发现传输中可能出现的错误。
停止位的设置则是为了告诉接收端一个数据字节何时结束,这样接收端才知道该开始解析下一个数据字节。
同步模式、时钟极性和相位等设置则是针对同步通信的,它们确保了数据的同步传输,使得发送端和接收端的时钟信号保持一致,从而实现准确的数据传输。
没有这些设置,通信可能会乱成一团,数据传输也容易出错。所以,数据格式设置的作用就是让通信变得顺畅可靠。
B. 波特率设置
波特率就是告诉设备数据传输的速度有多快。想象一下,波特率就像是通信的速度限制,比如说,设备之间约定了一个速度,比如9600波特,就意味着它们每秒钟最多可以传输9600个数据位。如果设备之间的波特率设置不一样,可能会导致通信错误。所以,设置正确的波特率就是为了确保设备之间能够以相同的速度传输数据,从而顺利通信。
C. 中断处理与DMA支持
中断处理和DMA(直接内存访问)是帮助我们的设备在处理数据时更高效的两种方式。
首先来说说中断处理。想象一下你在玩游戏,突然有电话来了。游戏就像是你的设备在处理数据,而电话就像是一个重要的事件发生了,比如接收到了新的数据。中断处理就好比你接到电话时停下来,处理完电话的事情后再回到游戏中。这样,设备在处理数据的同时能够及时响应重要事件,不会错过任何重要的信息。
然后,再说说DMA。DMA就像是给你多了一个帮手,让你可以专注于玩游戏而不用理会其他事情。想象一下,你需要把一堆书从一间屋子搬到另一间屋子,如果你自己一本一本拿,会很慢。但如果有一个帮手,可以直接把书从一间屋子搬到另一间屋子,那就快多了。DMA就是这个帮手,它可以直接在设备之间传输数据,而不需要 CPU 参与,从而节省了处理器的时间和资源。
综上所述,中断处理和DMA都是让设备在处理数据时更高效的方法,中断处理可以及时响应重要事件,而DMA则可以减轻处理器的负担,让数据传输更快速、更流畅。
4. USART的应用实例
A. 与传感器的数据采集
想象一下,你和朋友在交谈时,你们会通过口语来传递信息,而USART就是这样的一种口语传递方式。传感器就像是我们的朋友,它们通过USART向计算机汇报周围环境的情况,比如温度、湿度、光线等等。然后,计算机就可以根据这些信息做出相应的决策,就像是我们根据朋友的建议来做出选择一样。所以,USART其实是一种非常重要的通信方式,让我们的传感器和计算机之间能够顺畅地交流,让我们能够更好地了解和控制我们周围的环境
B. 与显示器或LCD的通信
想象一下,你想把一段文字发送到一个显示屏或者LCD上,让它显示出来。USART就是帮助你实现这个目标的重要工具。它会把你想要显示的文字通过一个特殊的线路发送给显示屏,然后显示屏就会把这些文字展示出来。就好像你在发送一条短信给你的朋友,他收到后就可以看到你发的内容一样。所以,USART实际上是一种非常方便的通信方式,让我们的设备能够相互交流,让我们能够更方便地使用它们。
C. 与外部存储设备的数据传输
想象一下,你想把一些重要的文件保存到一个外部存储设备中,比如USB闪存驱动器或者SD卡。USART就可以帮助你实现这个目标,它会把你想要保存的数据传送给外部存储设备,然后存储起来。就好像你把文件复制到U盘一样简单。所以,USART实际上是一种非常方便的通信方式,让我们的设备可以和外部存储设备进行数据交换,让我们能够更好地管理和保护我们的重要数据
5. 总结
A. USART的优势与不足
USART其实就是一种超级方便的串行通信方式,可以让不同的电子设备之间轻松快速地传输数据。想象一下,你有一个微控制器,比如Arduino,你想要把它和其他设备,比如传感器或者显示屏连接起来,那USART就是你的好帮手啦!
首先,它超级灵活,支持同步和异步通信,意思就是无论你是要传输数据还是命令,USART都能应付自如。而且,它的速度特别快,适合那些需要快速传输大量数据的场景。另外,要配置它也不是很难,虽然可能对新手来说有点挑战,但只要熟悉了就会觉得很简单啦。
不过,也有一些缺点需要注意。比如说,它可能会占用一些硬件资源,有时候可能会限制一下其他功能的实现。而且,如果要实现长距离通信,可能就需要额外的设备了,因为USART更适合短距离通信。另外,要是你需要在复杂网络中使用,也许得考虑一下其他的通信方式,因为USART可能会有些局限性。
总的来说,USART就像是电子设备之间的快递小哥,能够快速、方便地传递数据,让我们的设备之间变得更加互联互通!
B. 未来发展趋势
未来USART可能会变得更快、更省电,还能用在更多地方!你可以想象一下,就像是你的手机网络变得更快,而且电池用得更久一样。而且,它可能会变得更智能,可以和其他无线技术结合起来,比如蓝牙或者Wi-Fi,这样就能更方便地和其他设备通信了。总之,未来USART可能会变得更强大,更广泛地应用在我们的生活和工作中!