STM32串口发送数据和接收数据方式总结


串口发送数据最直接的方式就是标准调用库函数 。
串口,即串行接口(Serial Interface),是一种用于在设备之间进行数据传输的通信接口。它逐位传输数据,一次只传输一个比特,这种传输方式所需的传输线较少,适合长距离通信和一些对线路成本敏感的应用场景。以下为你详细介绍:
分类
异步串口(UART)
工作原理:不需要时钟信号来同步发送方和接收方,而是通过约定好的波特率(每秒传输的比特数)来协调数据传输。数据以帧为单位进行传输,每帧包含起始位、数据位、奇偶校验位(可选)和停止位。
应用场景:在嵌入式系统中广泛应用,如单片机与传感器、蓝牙模块、计算机等设备之间的通信。常见的波特率有 9600、115200 等。
同步串口
工作原理:使用一个时钟信号来同步发送方和接收方的操作,确保数据的准确传输。时钟信号可以由发送方提供,也可以由外部时钟源提供。同步串口通常用于高速数据传输,能够实现更高的数据传输速率。
应用场景:常用于一些对数据传输速率和同步性要求较高的场景,如 SD 卡接口、SPI(串行外设接口)、I²C(集成电路总线)等。
串口发送数据最直接的方式就是标准调用库函数 。
本文主要介绍在嵌入式开发中用来输出log的方法,这些方法都是在实际开发过程中使用过的。
USART的功能包括同步、异步模式、双工通信、半工通信等。
它们分别表示数据在发送过程中,在两个不同的阶段中的完成情况。TXE 表示数据被从发送缓冲区中取走,转移到的移位寄存器中,此时发送缓冲是空的,可以向其中补充新的数据了。而 TC 则表示最后放入发送缓冲区的数据已经完成了从移位寄存器向发送信号线 Tx 上的转移。所以,判定数据最终发送完成的标志是 TC,而不是 TXE。
玩过Linux的朋友, 是不是对Linux无所不能的串口Shell命令控制台羡慕不已, 要是自己做的STM32F系列低档次的MCU也有这种控制交互能力, 会给调试/维护和配置省下多少麻烦事......
本文在探讨传统数据收发不足之后,介绍如何使用带FIFO的串口来减少接收中断次数,通过一种自定义通讯协议格式,给出帧打包方法;之后介绍一种特殊的串口数据发送方法,可在避免使用串口发送中断的情况下,提高系统的响应速度。
NBiot模块一般都是串口接口,使用AT指令集,对接中国移动onenet平台。先用串口助手去测试,流程测试OK之后需要在MCU上重新写一遍。
DMA是直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。
串行接口按电气标准及协议来分还包括UART、RS232、RS422、RS485等。
STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。