我是靠谱客的博主 自觉玉米,最近开发中收集的这篇文章主要介绍基于 MDK实现STM32串口通信一、串口协议与RS-232标准二、USART三、STM32的串口通讯四、总结参考文献,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 一、串口协议与RS-232标准
      • 1、串口协议
      • 2、RS-232标准
      • 3、RS232电平与TTL电平
  • 二、USART
      • 1、介绍
      • 2、功能框图
      • 3、USART初始化结构体
  • 三、STM32的串口通讯
      • 1、创建工程
      • 2、主要代码
      • 3、编译
      • 4、程序烧录
      • 5、运行结果
  • 四、总结
  • 参考文献

一、串口协议与RS-232标准

1、串口协议

串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232RS-422RS-485
想要加强理解,我们可以通过分层来简化这个复杂的问题。将通讯协议分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。
下面主要介绍RS-232标准

2、RS-232标准

RS-232标准主要规定了信号的用途、通讯接口以及信号的电平标准。
使用RS-232标准的串口设备间常见的通讯结构见图。
在这里插入图片描述
在上面的通讯方式中,两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。由于RS-232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL校准"的电平信号,才能实现通讯。

3、RS232电平与TTL电平

根据通讯使用的电平标准不同,串口通讯可分为TTL标准及RS-232标准,见表

通讯标准 电平标准(发送端)
5V TTL 逻辑1:2.4V~5V
逻辑0:0~0.5V
RS-232 逻辑1:-15V~-3V
逻辑0:+3V~+15V

我们知道常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0
而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1+15V表示逻辑0
使用RS232与TTL电平校准表示同一个信号时的对比见图
因为控制器一般使用TTL电平标准,所以常常会使用MA3232芯片对TTL及RS-232电平的信号进行互相转换。在这里插入图片描述

二、USART

1、介绍

通用同步异步收发器USART是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它相比USART来说没有同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。

2、功能框图

在这里插入图片描述

  • 功能引脚
    TX:发送数据输出引脚。
    RX:接收数据输入引脚。
    SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引
    脚。
    nRTS:请求以发送(Request To Send), n 表示低电平有效。如果使能 RTS 流控制,当
    USART 接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,
    nRTS 将被设置为高电平。该引脚只适用于硬件流控制。
    nCTS:清除以发送(Clear To Send), n 表示低电平有效。如果使能 CTS 流控制,发送
    器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
    SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。

3、USART初始化结构体

标准库函数对每个外设都建立了一个初始化结构体。结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如USART_Init()调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。

 USART初始化结构体
1 typedef struct {
   
2 uint32_t USART_BaudRate; // 波特率
3 uint16_t USART_WordLength; // 字长
4 uint16_t USART_StopBits; // 停止位
5 uint16_t USART_Parity; // 校验位
6 uint16_t USART_Mod

最后

以上就是自觉玉米为你收集整理的基于 MDK实现STM32串口通信一、串口协议与RS-232标准二、USART三、STM32的串口通讯四、总结参考文献的全部内容,希望文章能够帮你解决基于 MDK实现STM32串口通信一、串口协议与RS-232标准二、USART三、STM32的串口通讯四、总结参考文献所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部