版权归如下公司,禁止非授权转载:
- 北京西普阳光教育科技股份有限公司(https://www.simpleware.com.cn)
- 维周机器人科技有限公司(http://www.vejoe.com)
文章目录
【实验目的】
掌握USART接口的基本的和主要指标。
掌握USART接口的编程原理和使用方法。
【实验原理】
STM32的串口非常强大,它不仅支持最基本的通用串口同步、异步通讯,还具有LIN总线功能(局域互联网)、IRDA 功能(红外通讯)、SmartCard功能。
一、USART接口简介
本实验使用的为串口中最基本、最常用的全双工、异步通讯方式,其寄存器说明如表1所示。要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。在初始化串口的时候,必然有一个串口初始化结构体,这个结构体的几个成员肯定就是存储这些控制参数的。
表1 USART相关寄存器
二、串口通信分类及原理
串口通讯分为并行通信和串行通信。并行通信是通过多条数据线来传输数据,所以传输的速度比较快,缺点是不利于长距离传输,串行通信指将数据字节分成位的形式,在一条线上来传输,相比并行通信可以大幅减少成本,但是控制难度较大,串行通信根据传输方向分为单工、半双工和全双工,根据时钟的特性又可以分为同步通信和异步通信。
一般使用异步通信较多,异步通信的原理是将数据以帧的形式传输,每帧间有固定的传输时间间隔,通信中的波特率、数据位、停止位和奇偶校验的参数设置很关键,必须使两个端口的参数匹配后才可以通信。
串行通信中的波特率和比特率:波特率指数据信号对载波的调制速率,波特率的单位是波特(baud),比特率指单位时间内传输的比特数,单位bit/s(bps),而对于USART来说,波特率和比特率是相等的。总之,波特率越大传输速率越快,通过控制时钟可以改变波特率。
数据位是传输数据的部分,停止位都在一帧数据的最后一位表示数据帧传输的结束,而奇偶校验位是用来纠错的,用于判读数据传输过程中是否发生了错误。
三、硬件连接和USART库函数介绍
图1 电路原理图
STM32芯片有3个同步异步串口和2个异步串口,本实验中使用异步串口的方式进行通讯,连接方式见图1,芯片上的PC10和PC11引脚分别对应异步串口UART4的发送端TX和接收端RX,小车上的电路板已经将这两个引脚引出。
表2 STM32F103xx芯片引脚功能定义
STM32的芯片引脚和串口的对应关系见上表2(芯片手册P34页),可以看出PC10和PC11引脚的功能分别是异步串口UART4的发送和接收端,为了使用串口通信功能,需要对GPIO和UART4的时钟进行配置。
与串口模块有关的结构体USART_InitTypeDef定义在stm32f10x_usart.h中,库函数USART_Init定义在stm32f10x_usart.c中。
USART_InitTypeDef结构体的配置如下:
typedef struct
{
uint32_t USART_BaudRate; // 波特率
uint16_t USART_WordLength; // 字长
uint16_t USART_StopBits; // 停止位
uint16_t USART_Parity; // 校验位
uint16