打印
[开发工具]

嵌入式单片机之stm32串口你懂了多少!!

[复制链接]
1910|44
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2024-2-26 21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[size=13.3333px]   stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm32的视频资料便于学习参考。
[size=13.3333px]  什么是串口
[size=13.3333px]  UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器
[size=13.3333px]  USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/异步收发器
[size=13.3333px]  一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。
[size=13.3333px]  Tx: 发送数据线
[size=13.3333px]  Rx: 接收数据线
[size=13.3333px]  A B
[size=13.3333px]  TX -----------> Rx
[size=13.3333px]  Rx <------------Tx
[size=13.3333px]  全双工: 两个设备可以同时发送和接收
[size=13.3333px]  串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收。
[size=13.3333px]  模块通信: 上位机 下位机
[size=13.3333px]  通信一般需要两个设备,我们把这两个设备,人为叫做上位机, 下位机。
[size=13.3333px]  上位机: 把处理性能强的机子,上位机。数据大部分处理都在上位机完成。
[size=13.3333px]  下位机: 把数据采集的终端,处理性能单一的机子,下位机。
[size=13.3333px]  串口只有一根发送数据线,假如 A要发送一个字符数据  10101010 给B
[size=13.3333px]  A -------- ---------
[size=13.3333px]  -------- ------- ...
[size=13.3333px]  高电平周期是多长?即使是不发送数据Tx线上也有一个电平状态,接收方
[size=13.3333px]  它怎么知道你是在发送呢?....
[size=13.3333px]  UART数据如何传输?
[size=13.3333px]  UART protocol 串口协议。
[size=13.3333px]  串口发送和接收数据是以帧为单位. Frame
[size=13.3333px]  1帧(Frame)= 1 start bit(起始位) + 5-9bits数据位 + 0/1bit 校验位  + stop bits(0.5, 1,1,5,2)
[size=13.3333px]  起始位: 一个周期的低电平
[size=13.3333px]  数据位: 5-9bits数据位,具体是多少bits,需要双方协商。并且传送是先传送LSB(最低位) … MSB
[size=13.3333px]  校验位:
[size=13.3333px]  0 bit :没有校验位
[size=13.3333px]  1 bit :校验位. “赖子” X
[size=13.3333px]  D0 D1 D2 … Dn X
[size=13.3333px]  奇校验:要保证传输的1为奇数
[size=13.3333px]  D0 D1 D2 … Dn X 要保证这一串数据中1的个数为奇数
[size=13.3333px]  1 0 1 0 1 0 1 0 X(1)
[size=13.3333px]  1 0 1 0 1 0 1 1 X(0)
[size=13.3333px]  偶校验:要保存传输的1为偶数
[size=13.3333px]  停止位: 高电平
[size=13.3333px]  0.5 个停止位。 半个周期的高电平
[size=13.3333px]  1 个停止位
[size=13.3333px]  1.5 个停止位
[size=13.3333px]  2 个停止位
[size=13.3333px]  Baudrate(波特率): 传输速率。
[size=13.3333px]  决定 时间周期。
[size=13.3333px]  115200 bps: bits per second
[size=13.3333px]  物理层标准  the physical layer standards
[size=13.3333px]  TTL level UART : TTL电平串口
[size=13.3333px]  RS-232:
[size=13.3333px]  RS-422:
[size=13.3333px]  RS-485:
[size=13.3333px]  TTL level UART:
[size=13.3333px]  逻辑低电平(0) 0V
[size=13.3333px]  逻辑高电平(1) 5V/3.3V
[size=13.3333px]  RS-232: 适合较长距离传输
[size=13.3333px]  逻辑低电平(0) +3v~+15V
[size=13.3333px]  逻辑高电平(1) -3v~-15v
[size=13.3333px]  TTL UART RS-232 RS-422 RS-485
[size=13.3333px]  电平 1 3.3V/5V 1 -5V ~ -15V +/- 2v +/- 1.5v
[size=13.3333px]  0 0V 0 5V ~ +15V
[size=13.3333px]  信号 单端信号   单端信号  差分信号   差分信号
[size=13.3333px]  传输长度 < 2m <15m <1200m <1200m
[size=13.3333px]  不同标准的串口,引脚也不一样。TX/Rx是一定存在的。
[size=13.3333px]  TTL
[size=13.3333px]  RX
[size=13.3333px]  TX
[size=13.3333px]  GND
[size=13.3333px]  VCC
[size=13.3333px]  STM32F4xx 串口控制器
[size=13.3333px]  TX
[size=13.3333px]  RX
[size=13.3333px]  硬件流控:
[size=13.3333px]  RTS: Request To Send 请求发送信号
[size=13.3333px]  终端告诉对方可以向我传输数据啦。
[size=13.3333px]  CTS: Clear To Send 清除发送信号
[size=13.3333px]  对方告知终端,我要向你发送数据啦
[size=13.3333px]  RTS -------> CTS(对方)
[size=13.3333px]  CTS <------- RTS(对方)
[size=13.3333px]  标志位:
[size=13.3333px]  TXE: Transmit data Register Empty
[size=13.3333px]  发送数据寄存器为空。
[size=13.3333px]  不代表上一次数据已经发送完成啦,因为数据有可能还在 shifter里面
[size=13.3333px]  但是此时您可以向TDR写数据啦。
[size=13.3333px]  TC : Transmit Complete
[size=13.3333px]  发送完成。
[size=13.3333px]  发送移位寄存器中的数据已经发送到Tx引脚上面去了。
[size=13.3333px]  RXNE: Read Data register Not Empty
[size=13.3333px]  接收数据寄存器不为空。意思是你可以读数据啦。
[size=13.3333px]  STM32F4xx串口代码流程
[size=13.3333px]  (1) GPIO口配置
[size=13.3333px]  串口的TX/RX 引脚是由GPIO口来复用的。
[size=13.3333px]  a. 使能GPIO分组的时钟
[size=13.3333px]  RCC_AHB1PeriphClockCmd
[size=13.3333px]  b. 配置GPIO口的功能 GPIO_Init
[size=13.3333px]  c. 选择具体的复用功能
[size=13.3333px]  GPIO_PinAFConfig
[size=13.3333px]  (2) usart配置
[size=13.3333px]  a. 使能usart时钟

使用特权

评论回复
沙发
21mengnan| | 2024-2-29 23:01 | 只看该作者
都是用库函数做,没了解多少。

使用特权

评论回复
板凳
天灵灵地灵灵| | 2024-2-29 23:13 | 只看该作者
RTS,CTS是干啥用的,我没用也可以啊。

使用特权

评论回复
地板
wanduzi| | 2024-2-29 23:18 | 只看该作者
串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收

使用特权

评论回复
5
ccook11| | 2024-3-4 17:36 | 只看该作者
STM32单片机通常具备多个串口通信接口,这些接口可以用于与其他设备进行数据交换。对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。

使用特权

评论回复
6
mollylawrence| | 2024-3-5 11:13 | 只看该作者
STM32的USART支持硬件流控制,包括RTS/CTS(请求发送/清除发送)信号,用于在高速或长距离通信中保持数据的正确传输。

使用特权

评论回复
7
timfordlare| | 2024-3-5 13:29 | 只看该作者
在进行串口通信时,还需要考虑数据的同步和异步传输问题,以及数据的校验和错误处理等问题。此外,还需要根据具体的应用场景选择合适的通信协议和通信速率,以确保通信的可靠性和稳定性。

使用特权

评论回复
8
primojones| | 2024-3-5 21:17 | 只看该作者
ART通信至少需要两个引脚,即RXD(数据接收引脚)和TXD(数据发送引脚)。在两个STM32芯片之间进行通信时,通常采用交叉连接的方式,即芯片1的TXD连接到芯片2的RXD,芯片2的TXD连接到芯片1的RXD。

使用特权

评论回复
9
qiufengsd| | 2024-3-7 12:25 | 只看该作者
STM32系列单片机通常有多达几个USART接口,可以根据实际需求连接多个串行设备。

使用特权

评论回复
10
uiint| | 2024-3-7 21:43 | 只看该作者
这些微控制器具有多个串行通信接口(USART、UART、LPUART),用于与其他设备进行数据交换。

使用特权

评论回复
11
eefas| | 2024-3-9 18:58 | 只看该作者
STM32串口支持多种波特率,如9600、19200、38400、57600、115200等。波特率的设置需要通过编程控制。

使用特权

评论回复
12
claretttt| | 2024-3-10 17:01 | 只看该作者
STM32系列芯片具有丰富的外设接口,其中包括多个串行通信接口(UART)。STM32的串口通信功能强大且灵活,支持异步、同步和多处理器通信模式,以及多种数据包格式。

使用特权

评论回复
13
jackcat| | 2024-3-11 13:51 | 只看该作者
一种常见的串行通信接口。UART接口通常用于点对点的异步通信,数据传输速率可高达数Mbps。

使用特权

评论回复
14
claretttt| | 2024-3-11 19:25 | 只看该作者
在实际的嵌入式系统中,串口常用于与PC机或其他设备的通信,如通过串口进行程序调试、数据传输等。此外,串口也常用于连接外部模块,如GPS模块、蓝牙模块等。

使用特权

评论回复
15
deliahouse887| | 2024-3-11 21:57 | 只看该作者
通过调用STM32 HAL库中的HAL_UART_Transmit函数,可以将数据发送到串口。

使用特权

评论回复
16
bartonalfred| | 2024-3-12 10:51 | 只看该作者
STM32单片机的串行接口(USART/SPI/I²C)在嵌入式系统中扮演着至关重要的角色,尤其是USART(通用同步异步收发器)在串行通信中广泛应用。

使用特权

评论回复
17
everyrobin| | 2024-3-12 15:17 | 只看该作者
在编程时,可以使用STM32的标准库或HAL库来简化串口通信的实现。例如,HAL库提供了HAL_UART_Transmit和HAL_UART_Receive等函数来分别实现数据的发送和接收。

使用特权

评论回复
18
macpherson| | 2024-3-14 18:02 | 只看该作者
USART在UART的基础上增加了同步通信的功能,它可以工作在同步或异步模式下。USART还支持多种校验方式和帧格式,使得它更加灵活和强大。

使用特权

评论回复
19
updownq| | 2024-3-14 21:39 | 只看该作者
波特率可以通过STM32内部时钟源分频来配置,通过USART_BRR寄存器设置。

使用特权

评论回复
20
pl202| | 2024-3-15 13:47 | 只看该作者
SPI是一种高速的全双工通信协议,它支持四个引脚:MOSI(主出从入)、MISO(主入从出)、SCK(时钟)和SS(片选)。SPI常用于微控制器与外部设备(如Flash存储器、AD转换器等)之间的高速通信。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

841

帖子

1

粉丝