[开发工具] 嵌入式单片机之stm32串口你懂了多少!!

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

21mengnan 发表于 2024-2-29 23:01 | 显示全部楼层
都是用库函数做,没了解多少。
天灵灵地灵灵 发表于 2024-2-29 23:13 | 显示全部楼层
RTS,CTS是干啥用的,我没用也可以啊。
wanduzi 发表于 2024-2-29 23:18 | 显示全部楼层
串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收
ccook11 发表于 2024-3-4 17:36 | 显示全部楼层
STM32单片机通常具备多个串口通信接口,这些接口可以用于与其他设备进行数据交换。对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。
mollylawrence 发表于 2024-3-5 11:13 | 显示全部楼层
STM32的USART支持硬件流控制,包括RTS/CTS(请求发送/清除发送)信号,用于在高速或长距离通信中保持数据的正确传输。
timfordlare 发表于 2024-3-5 13:29 | 显示全部楼层
在进行串口通信时,还需要考虑数据的同步和异步传输问题,以及数据的校验和错误处理等问题。此外,还需要根据具体的应用场景选择合适的通信协议和通信速率,以确保通信的可靠性和稳定性。
primojones 发表于 2024-3-5 21:17 | 显示全部楼层
ART通信至少需要两个引脚,即RXD(数据接收引脚)和TXD(数据发送引脚)。在两个STM32芯片之间进行通信时,通常采用交叉连接的方式,即芯片1的TXD连接到芯片2的RXD,芯片2的TXD连接到芯片1的RXD。
qiufengsd 发表于 2024-3-7 12:25 | 显示全部楼层
STM32系列单片机通常有多达几个USART接口,可以根据实际需求连接多个串行设备。
uiint 发表于 2024-3-7 21:43 | 显示全部楼层
这些微控制器具有多个串行通信接口(USART、UART、LPUART),用于与其他设备进行数据交换。
eefas 发表于 2024-3-9 18:58 | 显示全部楼层
STM32串口支持多种波特率,如9600、19200、38400、57600、115200等。波特率的设置需要通过编程控制。
claretttt 发表于 2024-3-10 17:01 | 显示全部楼层
STM32系列芯片具有丰富的外设接口,其中包括多个串行通信接口(UART)。STM32的串口通信功能强大且灵活,支持异步、同步和多处理器通信模式,以及多种数据包格式。
jackcat 发表于 2024-3-11 13:51 | 显示全部楼层
一种常见的串行通信接口。UART接口通常用于点对点的异步通信,数据传输速率可高达数Mbps。
claretttt 发表于 2024-3-11 19:25 | 显示全部楼层
在实际的嵌入式系统中,串口常用于与PC机或其他设备的通信,如通过串口进行程序调试、数据传输等。此外,串口也常用于连接外部模块,如GPS模块、蓝牙模块等。
deliahouse887 发表于 2024-3-11 21:57 | 显示全部楼层
通过调用STM32 HAL库中的HAL_UART_Transmit函数,可以将数据发送到串口。
bartonalfred 发表于 2024-3-12 10:51 | 显示全部楼层
STM32单片机的串行接口(USART/SPI/I²C)在嵌入式系统中扮演着至关重要的角色,尤其是USART(通用同步异步收发器)在串行通信中广泛应用。
everyrobin 发表于 2024-3-12 15:17 | 显示全部楼层
在编程时,可以使用STM32的标准库或HAL库来简化串口通信的实现。例如,HAL库提供了HAL_UART_Transmit和HAL_UART_Receive等函数来分别实现数据的发送和接收。
macpherson 发表于 2024-3-14 18:02 | 显示全部楼层
USART在UART的基础上增加了同步通信的功能,它可以工作在同步或异步模式下。USART还支持多种校验方式和帧格式,使得它更加灵活和强大。
updownq 发表于 2024-3-14 21:39 | 显示全部楼层
波特率可以通过STM32内部时钟源分频来配置,通过USART_BRR寄存器设置。
pl202 发表于 2024-3-15 13:47 | 显示全部楼层
SPI是一种高速的全双工通信协议,它支持四个引脚:MOSI(主出从入)、MISO(主入从出)、SCK(时钟)和SS(片选)。SPI常用于微控制器与外部设备(如Flash存储器、AD转换器等)之间的高速通信。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

867

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部