[Day 26]-【STM32系列】UART/USART TX 资料传送篇(上)

在昨天的文章[Day 25]-【STM32系列】串列通讯的老祖宗:UART中我们稍微提到了关於UART的相关知识,如果有兴趣的朋友们可以先去了解一下再来,那接续上一篇光用说的并不能解释完全,所以今天我将实作UART传输部分,你可能会注意到有人写UART/USART,甚麽是USART呢?其实就是UART的强化版!

UART:Universal Asynchronous Receiver/Transmitter,通用非同步收发传输器。
USART:Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步非同步收发传输器。

从字面意思我们也可以知道USART比UART增加了一部分同步的功能,同步的意思指是否有透过clock,是同步收发器和异步收发器最大的区别,这取决於硬体的连接。也就是说我们可以拿USART来替代SPI当恰好缺少一个SPI串口的时候。SPI跟I²C、UART一样也是一种通讯协定,我们改天再做一期文章来讨论这个SPI。

回到我们今天的主题,UART 串列传送分成三种模式:

  • 使用轮询-> HAL_UART_Transmit
  • 使用中断—> HAL_UART_Transmit_IT
  • 使用DMA-> HAL_UART_Transmit_DMA
  1. 轮询(Polling):就是阻塞式询问,CPU都不干别的事了,就整天在那边问你说:「现在有没有要传资料啊?」没有要传我就继续等,总是在那边询问、等待。这种方最土法炼钢、这就是轮询的缺点,效率太低,占用cpu时间。

  2. 中断(Interrupt):没有收到数据时,执行其他的程序,收到数据後,进入中断处理通讯。与轮询相对来说,不用循环查询状态暂存器,可以有更多的时间运行其他程序。

  3. DMA(Direct Memory Access):直接记忆体存取。串列数据的接收与发送由DMA处理,DMA说:「我把接收、传送的资料放在记忆体的某个位置,你如果需要就自己去那个位置提取」。DMA也可以分为轮询与中断方式。资料的发送与接收都不用CPU干预,通过DMA进行。 CPU有更多的时间运行其他程序。


Nucleo-64 boards (MB1136) - 6.8 USART communication

预设STM32微控制器的PA2(TX)和PA3(RX)上的USART2端口连接到 ST-LINK 烧录器连接到你的电脑,代表只要开启UART2并插上USB就可以与电脑连线,如果你想用UART2与其他扩充板通讯,可以将你Nucle开发板上SB62、SB63短路, SB13、SB14开路(原始状态SB62、SB63开路, SB13、SB14短路)。

在这种情况下,可以将其他USART端口接到ST-LINK 烧录器, 例如,在NUCLEO-L053R8上,可以使用PA2 (TX)和PA3(RX)上的USART2。 需要连接两条跳线:

  • PA2(USART2_TX)在CN9 TX/D1 连接至 CN3 引脚 RX上
  • PA3(USART2_RX)在CN9 RX/D0 连接至 CN3 引脚 TX上

Hercules setup utility

这里我再推一个软件,hercules setup utility一个好用的Socket测试工具,我们将用它来接收、发送UART/USART数据,其实他还支援很多功能,例如:UDP/IP终端和TCP/IP客户端和服务器终端,重点是他免费也好用,Win10目前也支援,算是一个老牌工具了。
请先官网下载:https://www.hw-group.com/software/hercules-setup-utility
https://ithelp.ithome.com.tw/upload/images/20201012/20120093fDSq7GwhGL.png



相关连结


结语

这是一个阴谋论...


<<:  资安这条路 26- [Web 服务器软件] IIS (Internet Information Services)

>>:  Day 26 KPI还是OKR?Vol.2

[Flutter ] Free fake API 为资料库,以 FutureBuilder + http 抓取

程序版本: Flutter 2.2.1 使用JSONPlaceholder为 Free fake A...

Day.24 「你点了按钮~同时也点了网页本身!」 —— JavaScript 事件冒泡(Event bubbling)

我们上一个篇章认识了绑定事件,了解到不管是什麽节点,都可以绑定事件 那为什麽 JavaScript...

[Day13] 以神经网络进行时间序列预测 — GRU

今天介绍使用 GRU 进行时间序列预测,一样采用我们最爱的股价资料集!! 今日大纲 GRU 介绍 门...

[Day18] Operations Suite

今天我们来介绍云端的监控, Cloud Operations Suite 。这个服务以前被称做 St...

#17 数据上的各种距离(2)

曼哈顿距离(Manhattan Distance) 假设你要从家里走到学校,行径的距离肯定不会是两点...