stm32串口通信(一)

以stm32f103系列为例:

概述

处理器与外部设备通信的两种方式:

举个例子说明什么是串行通信和并行通信:如果我要发送一个字节的数据,那么我有两种发送方式,第一种:用八根数据线,一根线发送一位。第二种:用一根数据线将这一个字节分8次发送,即一次发送一位。第一种方式就是并行通信,第二种方式就是串行通信。这两种通信方式的特点如下:

并行通信
  • 传输原理:数据各个位同时传输。
  • 优点:速度快
  • 缺点:占用引脚资源多
串行通信
  • 传输原理:数据按位顺序传输。
  • 优点:占用引脚资源少
  • 缺点:速度相对较慢

因为stm32f103里面用的是 usart 和 uart 属于串行通信,因此这篇文章主要是讲解串行通信。

串行通信按照数据传送方向可分为三种:

单工

即数据只能单方向传输,不能反向传输。

半双工

数据可以双向传输,但是同一时刻只允许数据在某一个方向上传输;

全双工

数据可以同时双向传输,但是它要求通信双方都有独立的发送和接收设备
如图:
这里写图片描述

串行通信的通信方式

  • 同步通信:带时钟同步信号传输,通信双方在时钟的控制下进行通信。
    SPI,IIC通信接口
  • 异步通信:不带时钟同步信号,通信双方必须在通信前定义好波特率、数据格式等。
    UART(通用异步收发器),单总线

常见的串行通信接口:

这里写图片描述

stm32通信接口

stm32f103中包含两种通信接口:

  • UART:通用异步收发器
  • USART:通用同步异步收发器

它们属于串行异步通信接口。
关于这两种通信的区别可以参见:

UART:universal asynchronous receiver and transmitter通用异步收发器
[Bus Signal] TX , RX
USART:universal synchronous asynchronous receiver and transmitter通用同步
异步收发器
[Bus Signal] TX, RX, CK
USART支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32 单>片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式>是一样的,都使用异步模式。
—来自于: UART 和 USART 有区别

大容量STM32F10x系列芯片,包含3个USART和2个UART

UART异步通信方式引脚连接方法:

  • RXD:数据输入引脚。数据接受。
  • TXD:数据发送引脚。数据发送。
    如果要进行单片机与单片机之间通信的话,需要将一块单片机的RXD与另一块单片机的TXD相连,可能还要加要给 RS232转换器 来设置电平。

前面已经说过大容量STM32F10x系列芯片,包含3个USART和2个UART,在stm32f103中,这五个串口通信的引脚见下图:
这里写图片描述
不同的单片机可能不一样,可以参见芯片的数据手册。

UART异步通信方式特点:

  • 全双工异步通信。
  • 分数波特率发生器系统,提供精确的波特率。
    发送和接受共用的可编程波特率,最高可达4.5Mbits/s
  • 可编程的数据字长度(8位或者9位);
  • 可配置的停止位(支持1或者2位停止位);
  • 可配置的使用DMA多缓冲器通信。
  • 单独的发送器和接收器使能位。
  • 检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志
  • 多个带标志的中断源。触发中断。
  • 其他:校验控制,四个错误检测标志。

串口通信过程

这里写图片描述

STM32串口异步通信需要定义的参数:

  • 起始位
  • 数据位(8位或者9位)
  • 奇偶校验位(第9位)
  • 停止位(1,15,2位)
  • 波特率设置
    这里写图片描述

参考资料:

正点原子视频
UART 和 USART 有区别

猜你喜欢

转载自blog.csdn.net/williamgavin/article/details/79787969