文档详情

STM32F103硬件系统与KEIL MDK工程 第07章 串口通信与声码器.pptx

发布:2025-04-24约6.38千字共36页下载文档
文本预览下载声明

ARMCortex-M3嵌入式控制技术

——基于STM32F103RCT6

STM32F103硬件系统与KEILMDK工程

第七章

串口通信与声码器

TM32F103RCT6微控制器具有5个串口,其中USART1~3是带有同步串行通信能力的同步异步串行口,而UART4~5是标准的异步串行通信口。本章将以STM32F103RCT6微控制器的USART2为例,介绍其片内串口外设的工作原理,并借助实例详细介绍串口通信的程序设计方法,包括串口发送数据和基于串口中断服务函数接收数据的方法。1串口通信工作原理2STM32F103串口3串口通信寄存器类型实例4串口通信库函数类型实例5声码器

7.1串口通信工作原理串口通信是指数据的各位按串行的方式沿一根总线进行的通信方式,RS-232标准的UART串口通信是典型的异步双工串行通信,通信方式如左图所示。UART串口通信需要两个引脚,即TXD和RXD,TXD为串口数据发送端,RXD为串口数据接收端。STM32F103微控制器的串口与计算机的串口按图7-1的方式相连,串行数据传输没有同步时钟,需要双方按相同的位传输速率异步传输,这个速率称为波特率,常用的波特率有4800bps、9600bps和115200bps等。UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位,如右图所示。

7.2STM32F103串口TM32F103RCT6微控制器共有5个串口,其中,USART1~3为带同步串行通信功能的通用同步异步串行口,UART4~5为标准的异步串行通信口。这里以USART2工作在标准的异步串行通信方式下为例,介绍STM32F103RCT6微控制器的串口工作原理。

7.2STM32F103串口串口USART2的基地址为0x40004400,其各个寄存器的情况如下所述。(1)串口数据寄存器USART_DR(偏移地址0x04)32位的串口数据寄存器USART_DR只有第[8:0]位有效,用于发送串口数据时记为TDR,用于接收串口数据时记为RDR,TDR和RDR是映射到同一个地址的两个物理寄存器,通过读、写指令来区分使用了哪个寄存器,即读USART_DR时自动识别为RDR,写USART_DR时自动识别为TDR。(2)波特率寄存器USART_BRR(偏移地址为0x08,复位值为0x0)32位的波特率寄存器USART_BRR只有第[15:0]位域有效,其中,第[15:4]位域记为DIV_Mantissa[11:0],第[3:0]位域记为DIV_Fraction[3:0]。波特率的计算公式为:波特率=fck/(16×USART_DIV),而USART_DIV=DIV_Mantissa+DIV_Fraction/16,例如,对USART2而言,当fck=PCLK1=32MHz时,如果波特率设为9600bps,则可配置DIV_Mantissa=208,DIV_Fraction=5;如果波特率设为115200bps,则可配置DIV_Mantissa=17,DIV_Fraction=6,实际波特率为115108bps,误差为0.08%(可接收范围内)。

(3)串口状态寄存器USART_SR(偏移地址为0x0,复位值为0xC0)32位的串口状态寄存器USART_SR只有第[9:0]位有效,如表所示。位号名称属性含义31:10??保留9CTS可读/可写CTS标志位。当nCTS线路输入跳变时,硬件置位,写入0清零8LBD可读/可写LIN中止检测标志位。LIN中止发生后硬件置位,写入0清零7TXE只读发送数据寄存器空标志位。TDR内容传给移位寄存器时硬件置1,写DR寄存器清06TC可读/可写发送完成标志位。发送完成硬件置1,写入0清零(写DR+读SR也可清0)5RXNE可读/可写接收数据没有就绪标志位。接收数据准备好时硬件置1,读DR或写0均可清零4IDLE只读空闲线路检测标志位。空闲时自动置1,读DR+读SR可清零3ORE只读溢出错误标志位。接收溢出时硬件置1,读DR+读SR清零2NE只读噪声错误标志位。接收的位在采样时出现噪声时则硬件置1,读DR+读SR可清零1FE只读帧错误标志位。帧错误发生时硬件置1,读DR+读SR可清零该位0PE只读校验位错误标志位。接收的数据校验错误时硬件置1,读DR+读SR可清零该位

(4)串口控制寄存器USART_CR1(偏移地址为0x0C,复位值为0x0)32位的串口控制寄存器USART_CR1只有第[13:0]位有效,如表所示位号名称属性含义31

显示全部
相似文档