STM32F2技术培训_通用同步异步收发器_USART
嵌入式复习题

嵌入式复习题1、STM32的嵌套向量中断控制器(NVIC) 管理着包括Cortex-M3核异常等中断,其和ARM处理器核的接口紧密相连。
2、STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
3、系统计时器(SysTick)提供了1个24位、降序的计数器,具有灵活的控制机制。
4、STM32通用定时器TIM的16位计数器可以采用三种方式工作,分别为向上计数模式、向下计数模式和中央对齐模式。
5、ST公司的STM32系列芯片采用了Cortex-M3 内核,其分为两个系列。
STM32F101 系列为基本型,运行频率为36MHZ ;STM32F103 系列为增强型,运行频率为72MHZ 。
6、STM32提供了用户可通过多个预分频器,配置AHB 、高速APB2 和低速APB1 域的频率。
7、为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。
这时,复用功能不再映射到它们原始分配的引脚上。
在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR) 来实现引脚的重新映射。
8、ADC的校准模式通过设置ADC_CR2 寄存器的CAL 位来启动。
9、在STM32中,ADC_CR2 寄存器的ALIGN 位选择转换后数据储存的对齐方式。
10、通用TIMx定时器包括TIM2 、TIM3 、TIM4 和TIM5,是可编程预分频器驱动的16 位自动装载计数器构成。
11、STM32的ADC 是12 位逐次逼近型的模拟数字转换器,可测量16 个外部和 2 个内部信号源。
ADC 的转换分为2个通道组:规则通道组最多包含16 个转换,注入通道组最多包含 4 个通道。
12、TIM1具备16 位可编程预分频器,时钟频率的分频系数为1~65535 之间的任意数值。
13、在STM32中,只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR 寄存器传输到用户指定的目的地址。
stm32复习资料答案

一、填空题1.当STM32的I/O端口配置为输入时, 输出缓冲器被禁止, 施密特触发输入被激活。
根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。
出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.STM32的所有端口都有外部中断能力.当使用外部中断线时,相应的引脚必须配置成输入模式。
3.STM32具有单独的位设置或位清除能力.这是通过GPIOx_BSRR 和GPIOx_BRR 寄存器来实现的.4.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_gpio。
c ,对应的头文件为stm32f10x_gpio.h 。
5.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。
这时,复用功能不再映射到它们原始分配的引脚上。
在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR) 来实现引脚的重新映射。
二、选择题1.在APB2上的I/O脚的翻转速度为( A ).A.18MHz B.50MHzC.36MHz D.72MHz4.当输出模式位MODE[1:0]=“10”时,最大输出速度为( B )。
A.10MHz B.2MHzC.50MHz D.72MHz三、简答题1.简述不同复用功能的重映射。
答:为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。
这时,复用功能不再映射到它们原始分配的引脚上。
在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)来实现引脚的重新映射。
各个复用功能的重映射可以参阅正文的介绍,由于内容比较多,正文介绍非常详细,这里省略。
2.简述STM32的GPIO的一些主要特点(至少5个)。
答:主要特点如下:❑通用I/O,可以作为输出、输入等功能。
❑单独的位设置或位清除.❑外部中断/唤醒线。
❑复用功能(AF)和重映射。
❑GPIO锁定机制。
STM32F030_USART详细配置说明_stm32f030串口

STM32F030_USART详细配置说明_stm32f030串口串口是我们在编程时最经常用的问题,通常用它来发送和接收数据,同时它还有另外一个功能——检测程序是否正确,stm32f030系类单片机自然而然少不了串口,本文主要介绍STM32F030_USART的几个常用的简单应用和它的功能配置。
1、概述通用同步异步收发器(USART)提供了一个灵活的方式,使 MCU 可以与外部设备通过工业标准 NRZ 的形式实现全双工异步串行数据通讯。
USART 可以使用分数波特率发生器,提供了超宽的波特率设置范围。
可以使用DMA 实现多缓冲区设置,从而能够支持高速数据通讯•全双工,异步通讯•可配置的 16 倍或 8 倍过采样方法提供速度和时钟容忍度间的灵活选择•小数波特率发生器•自动波特率检测•单线半双工通讯•停止位个数可设置 - 支持 1 个或 2 个停止位•十四个中断源和中断标志•- CTS 切换•- LIN 断开检测•-发送数据寄存器空•-发送完成•-接收数据寄存器满•-检测到线路空闲•-溢出错误•-帧错误•-噪声错误•-奇偶错误•-地址 / 字符匹配•-接收超时中断•-块结束中断•-从 Stop 模式唤醒•校验控制:•-发送奇偶校验位•-接收数据的奇偶检查2、准备工作1.认真阅读STM32F030x数据手册2.了解USART的运行原理3.查看STM32F030开发板原理图和封装图4.电脑装有keil等编译软件3、寄存器说明控制寄存器 1(USART_CR1)控制寄存器 2(USART_CR2)控制寄存器 3(USART_CR3)波特率寄存器( USART_BRR)保护时间和预分频器寄存器( USART_GTPR)中断和状态寄存器(USART_ISR)中断标志清除寄存器( USART_ICR)数据接收寄存器( USART_RDR)数据发送寄存器( USART_TDR)4、USART配置ART原理图ART代码分析3.①USART初始化void Usart_Init(uint32_t BaudRate){ USART_InitTypeDef USART_InitStruct; GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); /* PA9-TX-推挽复用PA10-RX-浮空输入/上拉输入*/ GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_1); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitStruct); /*USART基本配置*/ USART_ART_BaudRate=BaudRate;USART_ART_HardwareFlowControl=USART_Hardwa reFlowControl_None;USART_ART_Mode=USART_Mode_Tx|USART_Mode_ Rx; USART_ART_Parity=USART_Parity_No; USART_ART_StopBits=USART_StopBits_1;USART_ART_WordLength=USART_WordLength_8b; USART_Init(USART1,&USART_InitStruct); /*使能接收中断*/ NVIC_Config(USART1_IRQn); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_Cmd(USART1,ENABLE);}②USART发送数据void USART1_SendBuf(uint8_t *pBuf, uint32_tu32Len){ while(u32Len--) { /*判断发送缓冲区是否为空*/ while(!USART_GetFlagStatus(USART1,USART_FLAG_TXE)); USART_SendData(USART1,*pBuf++); }}③USART接收数据uint8_t USART1_ReciverBuf(void){ /*判断接收缓冲区是否为非空*/ while(!USART_GetFlagStatus(USART1,USART_FLAG_RXNE)); return USART_ReceiveData(USART1);}3 . printf函数重映射int fputc(int ch, FILE*f){ USART_SendData(USART1,(uint8_t)ch); while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); return (ch);}5、总结在进行USART的printf函数的使用时,一定要记得将微库打开:点击keil工具栏的小魔术棒符号,进入Target配置,勾选Use MicroLib。
stm32串口烧写程序的原理

stm32串口烧写程序的原理STM32是一种由意法半导体(STMicroelectronics)开发的32位微控制器系列。
它提供了丰富的外设接口和强大的处理能力,广泛应用于嵌入式系统中。
其中,串口烧写是一种常用的方式,用于在开发过程中向STM32芯片加载程序。
本文将介绍STM32串口烧写的原理。
串口烧写是通过串行通信接口将程序文件传输到STM32芯片的过程。
在STM32中,常用的串口通信接口为USART(通用同步/异步收发器)或UART(通用异步收发器)。
这两种接口通过串口与计算机连接,可进行数据的收发。
为了进行程序烧写,首先需要在计算机上安装相应的烧写软件,如ST-Link Utility或者STM32CubeProgrammer。
这些软件提供了用于将程序文件上传到芯片的功能,它们通过USB端口与ST-Link或者JTAG进行连接。
烧写过程中,需要将STM32芯片连接到计算机。
一种常见的连接方法是通过SWD(串行线路调试)接口连接,该接口位于STM32芯片上,并由4条线组成,包括SWDIO(串行数据线)、SWCLK(串行时钟线)、GND(地线)和VCC(供电线)。
在连接完毕后,烧写软件将打开与STM32芯片的通信通道。
软件首先对STM32芯片进行复位操作,然后通过串口发送烧写指令和数据。
烧写指令包含了一系列指示芯片进行烧写操作的命令,如擦除芯片、写入数据等。
STM32芯片接收到烧写指令后,会执行相应的操作。
首先,芯片会根据指令对内部存储器进行擦除操作,将原有的程序数据清空。
接下来,芯片会按照指令中的地址顺序,逐个写入新的程序数据。
写入完成后,芯片会进行校验操作,以确保写入的数据与发送的数据一致。
完成校验后,芯片将发送烧写结束的响应信号给烧写软件,表示完成烧写操作。
此时,软件会关闭与STM32芯片的通信通道,烧写过程结束。
总的来说,STM32串口烧写的过程是通过将程序文件通过串口发送给芯片,芯片按照指令进行擦除和写入操作,最后进行校验,完成烧写过程。
STM32 通用同步异步收发器 USART

USART1唤醒连到EXTI25
AHB分频 因子 APB分频 因子 PCLK max 48MHz
fCK SYSCLK max 48MHz HSI LSE 8MHz 32.768KHz
USART1SW[1:0] @ RCC_CFGR3
USART1
检测阶段结束
成功检测到波特率 硬件置位ABRF、RxNE,并同时由硬件更新USART_BRR 如果线路噪声过大,检测值BRR不准确 硬件置位ABRF、RxNE,以及ABRE和FE等错误标志 无论是否成功检测,第一个数据都能接收 ABRE置位时,收到RDR中的数据可能不正确
硬件检测数据块结尾,无需软件或其他资源干预
RTU:通过超时@USART_RTOR检测长时间的空闲总线 中 断 ASCII:通过特定的字符序列进行字符匹配 中断
协议的控制部分,地址识别、数据块完整性控制、命令 解析,需要软件实现
13
智能卡模式
支持ISO 7816-3标准定义的智能卡异步通信协议
Transmit message DTE DEAT
DEM: 方向信号使能,DE信号从RTS引脚输出 DEP: 方向信号(输出)极性 DEAT[4:0]: Driver Enable assertion time DEDT[4:0]: Driver Enable deassertion time
发送、接收引脚可通过软件交换@SWAP 发送、接收使能应答 新增标志
BUSY:表示接收线上是否有通信在进行 REACK:进入STOP模式前用以确认模块准备好接收了 TEACK:用于发送空闲帧时确保满足TE=0的最小时间(复位TE之 后,置位TE之前)
串口(USART)的理解

串⼝(USART)的理解⼀、STM32 的 USART 简介通⽤同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是⼀个串⾏通信设备,可以灵活地与外部设备进⾏全双⼯数据交换。
有别于 USART 还有⼀个 UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。
简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时⽤的串⼝通信基本都是 UART。
串⾏通信⼀般是以帧格式传输数据,即是⼀帧⼀帧的传输,每帧包含有起始信号、数据信息、停⽌信息,可能还有校验信息。
USART 就是对这些传输参数有具体规定,当然也不是只有唯⼀⼀个参数值,很多参数值都可以⾃定义设置,只是增强它的兼容性。
USART 满⾜外部设备对⼯业标准 NRZ 异步串⾏数据格式的要求,并且使⽤了⼩数波特率发⽣器,可以提供多种波特率,使得它的应⽤更加⼴泛。
USART ⽀持同步单向通信和半双⼯单线通信;还⽀持局域互连⽹络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC 规范。
USART ⽀持使⽤ DMA,可实现⾼速数据通信。
USART 在 STM32 应⽤最多莫过于“打印”程序信息,⼀般在硬件设计时都会预留⼀个 USART 通信接⼝连接电脑,⽤于在调试程序是可以把⼀些调试信息“打印”在电脑端的串⼝调试助⼿⼯具上,从⽽了解程序运⾏是否正确、如果出错哪具体哪⾥出错等等。
USART 功能框图1. 功能引脚TX:发送数据输出引脚。
RX:接收数据输⼊引脚。
SW_RX:数据接收引脚,只⽤于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
nRTS:请求以发送(Request To Send),n 表⽰低电平有效。
STM32串口通信学习总结

STM32串口通信学习总结STM32是STMicroelectronics推出的一款32位单片机系列,具有高性能、低功耗、丰富的外设等特点,广泛应用于工业控制、消费电子、汽车电子等领域。
其中,串口通信是单片机中常用的通信方式之一,本文将对STM32串口通信学习进行总结。
1.串口通信原理及基础知识在STM32中,USART(通用同步/异步收发器)是负责串口通信的外设。
USART提供了多种模式的串口通信,包括异步模式(Asynchronous)、同步模式(Synchronous)以及单线模式(Single-wire)等。
2.STM32串口通信配置步骤(1)GPIO配置:首先需要配置串口通信所涉及的GPIO引脚,通常需要配置为复用功能,使其具备USART功能。
(2)USART配置:根据需要选择USART1、USART2、USART3等串口进行配置,设置通信模式、波特率等参数。
在配置时需要注意与外部设备的通信标准和参数保持一致。
(3)中断配置(可选):可以选择中断方式来实现串口数据的收发。
通过配置中断,当接收到数据时会触发中断,从而实现接收数据的功能。
(4)发送数据:通过USART的发送寄存器将数据发送出去,可以通过查询方式或者中断方式进行发送。
(5)接收数据:通过读取USART的接收寄存器,获取接收到的数据。
同样可以通过查询方式或者中断方式进行接收。
3.常见问题及解决方法(1)波特率设置错误:在进行串口通信时,波特率设置错误可能会导致通信失败。
需要根据外设的要求,选择适当的波特率设置,并在STM32中进行配置。
(2)数据丢失:在高速通信或大量数据传输时,由于接收速度跟不上发送速度,可能会导致数据丢失。
可以通过增加接收缓冲区大小、优化接收中断处理等方式来解决该问题。
(3)数据帧错误:在数据传输过程中,可能发生数据位错误、校验错误等问题。
可以通过对USART的配置进行检查,包括校验位、停止位、数据位等的设置是否正确。
usart同步通信原理

usart同步通信原理USART(Universal Synchronous/Asynchronous Receiver Transmitter)是一种通用的同步/异步收发器,常用于计算机与外设之间的串行通信。
与其他通信接口相比,USART具有使用简便、传输速率高、可靠性强等优点,广泛应用于工业自动化、通信设备、嵌入式系统等领域。
本文将详细介绍USART 同步通信的原理。
一、USART概述USART是一种支持同步和异步通信的串行通信接口。
它包含了发送和接收两个单独的模块,可以独立进行串行数据的发送和接收。
USART的工作模式可以是同步模式,也可以是异步模式。
同步模式下,由外设设备提供时钟信号,数据通过USART与时钟信号同步传输。
异步模式下,USART通过内部时钟信号进行数据传输。
二、USART同步通信原理USART同步通信是指数据传输的时钟信号由外部设备提供的通信方式。
在同步模式下,数据包含位同步的时钟信号,可以实现更稳定可靠的数据传输。
USART同步通信的原理如下:1. 产生时钟信号:在USART同步模式下,时钟信号由外设设备提供。
外设设备通常会产生一个固定频率的时钟信号,用于同步数据传输。
时钟信号可以是周期性的矩形波形。
2. 数据传输:数据传输分为发送和接收两个过程。
发送过程:当发送数据时,USART根据时钟信号的上升沿或下降沿来判断数据位的变化。
一般情况下,数据传输的时刻是在每个时钟信号的下降沿或上升沿进行的。
每个数据位都映射到一个时钟信号的周期。
发送方按照时钟信号的节拍,将数据按位发送。
接收过程:当接收数据时,接收方根据时钟信号的上升沿或下降沿来采样传输的数据。
接收方在每个时钟信号的节拍来临时,采样接收到的数据位。
发送和接收过程通常以字节为单位进行,即发送或接收一个字节的数据。
USART通信支持多种数据位宽,如8位、9位等。
一个字节的数据包括起始位、数据位、校验位和停止位。
3. 通信协议:USART同步通信需要一种规定的通信协议,以确保发送方和接收方之间的数据传输正确可靠。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
发送、接收操作以及DMA特性 标志和中断 STM32F1和STM32F2的USART比较
2
培训内容
帧格式
数据帧的字长度 校验位 时钟波特率控制和时钟容忍
通信方式
单线半双工通信 多处理器通信
集成的多种模式
支持同步通信模式(输出时钟信号) 支持调制解调操作(硬件流控) 支持红外(IrDA)SIR ENDEC规范 支持Smart Card协议 支持LIN协议
通用同步异步收发器 USART
1
培训内容
帧格式
数据帧的字长度 校验位 时钟波特率控制和时钟容忍
通信方式
单线半双工通信 多处理器通信
集成的多种模式
支持同步通信模式(输出时钟信号) 支持调制解调操作(硬件流控) 支持红外(IrDA)SIR ENDEC规范 支持Smart Card协议 支持LIN协议
RX对应引 脚可做它用
14
多处理器通信环境
一主多从的通信环境
只有目标从设备收到完整的数据帧 非目标从设备处于“静默”状态,以减少接收开销
“静默状态”的使能控制位:RWU@USART_CR1 静默状态下,RxNE不被置位,不会产生相应中断或DMA请求
退出“静默”状态(唤醒)的方式
发送、接收操作以及对应标志 DMA特性和中断 STM32F1和STM32F2的USART比较
13
单线半双工通信
置位HDSEL@USART_CR3
Tx和Rx线被内部连在一起
读取USRART_DR,获得内部RDR的数据 写入USART_DR的数据,从TDR发送出
只使用Tx引脚,Rx引脚可作为GPIO 发送使能的情况下(TE置位),只要往USART_DR写数据, 硬件就会把数据发送出去,需要软件来管理单线上的传 输冲突
数据帧的字长度 校验位 时钟波特率控制和时钟容忍
通信方式
单线半双工通信 多处理器通信
集成的多种模式
支持同步通信模式(输出时钟信号) 支持调制解调操作(硬件流控) 支持红外(IrDA)SIR ENDEC规范 支持Smart Card协议 支持LIN协议
发送、接收操作以及对应标志 DMA特性和中断 STM32F1和STM32F2的USART比较
20
支持调制解调操作
用于硬件流控的引脚
可以分别使能:RTSE&CTSE@USART_CR3 收/方双方的CTS和RTS引脚互联 nRTS
低有效,输出,“请求发送”流控信号 接收方可以继续接收数据了,就拉低它 接收缓冲中的数据未读走之前,该信号一直为高
21
流控信号
nCTS流控
18
支持同步通信模式
支持双向同步串口通信
只支持主模式
SCK引脚上的时钟信号只有输出方向 时钟的空闲电平和相位,由CPOL&CPHA@USART_CR2决定 起始和停止位时,没有时钟脉冲信号 由LBCL@USART_CR2决定最后一个数据位有无时钟信号
使能控制
CLKEN@USART_CR2
偶校验:使得数据和校验位中”1”的个数为偶数 奇校验:使得数据和校验位中”1”的个数为奇数
使能控制:PCE@USART_CR1
发送方产生校验位
一旦使能,数据的MSB发送时被校验位替代
接收方核对校验位
核对失败置位PE@USART_SR,并条件性地产生中断
校验位包含在字长度(8或9位)中
地址和自身不相符,进入静默状态
硬件置位RWU 不置位RxNE,没有中断和DMA请求
地址和自身相符合,退出静默状态
硬件清零RWU 地址字节的接收触发RxNE 随后的数据正常接收
可以通过软件写RWU来控制进入或退出静默状态,但是前提是RxNE=0;否则写操作 被忽略
16
静默模式小结
9
收、发子模块使用相同的时钟产生器
10
USARTDIV的计算举例
OVER8=0(16倍过采样)
例1:USART_BRR=0x1BC
整数部分=27,小数部分=12/16=0.75;因此USARTDIV=27.75
例2:设置USARTDIV=25.62
小数=16*0.62=9.9210=0xA,整数=25=0x19;因此 USART_BRR=0x19A
波特率= fCK / [8*(2-OVER8)*USARTDIV]
fCK表示USART模块所在的外设总线时钟 OVER8@USART_CR1表示8倍还是16倍过采样 波特率= fCK / [8*USARTDIV] @8倍过采样 波特率= fCK / [16*USARTDIV] @16倍过采样 USARTDIV是由USART_BRR计算出来 DIV_Mantissa[11:0]表示USARTDIV的整数部分 DIV_Fraction[3:0]表示USARTDIV的小数部分
空闲帧唤醒 WAKE=0
唤醒后硬件清零RWU 并不置位IDLE@USART_SR
地址标志唤醒 WAKE=1
总线上传输的字节
MSB=1:地址字节 MSB=0:数据字节
地址字节的低四位指明目标接收者 USART设备自身地址的定义
ADD[3:0]@USART_CR2
发送方继续发送数据之前检查该信号:
低电平:可以发送数据(前提是TxE置位了) 高电平:不发送,等待nCTS变成低电平
nCTS:
硬件流控引脚 高电平时,表示当前数据传输结束后停止数据的发送
nRTS:
硬件流控引脚 低电平时,表示USART准备好接收数据了
4
6个USART模块引脚分布
目前所有STM32F2系列产品都具有:
4个USART模块 2个UART模块
高速外设总线APB2 USART1 RX TX SCK nCTS
例3:设置USARTDIV=50.99
小数=16*0.99=15.8416=0x10,溢出DIV_frac[3:0],向整数部分进 位,整数=50+进位=51=0x33;因此USART_BRR=0x330
OVER8=1(8倍过采样)
例1:USART_BRR=0x1B6
整数部分=27,小数部分=6/8=0.75;因此USARTDIV=27.75
6
两种特殊帧
空闲帧(Idle frame)
从起始位到停止位全部是高电平 之后跟随了一个有效的数据帧的起始位
休息帧(Break frame)
从起始位到停止位全部是高电平 之后再发送1位或2位的停止位
举例:9位字长度1位停止位配置下的特殊帧
7
校验控制
奇偶校验: PS@USART_CR1
例2:设置USARTDIV=25.62
小数=8*0.62=4.965=0x5,整数=25=0x19;因此 USART_BRR=0x195
例3:设置USARTDIV=50.99
小数=8*0.99=7.928=0x8,溢出DIV_frac[2:0],向整数部分进位, 整数=50+进位=51=0x33;因此USART_BRR=0x330
11
接收方对时钟的容忍
为了保证异步通信的正确性,系统时钟的偏差必须小于接 收方USART的容忍度
造成系统时钟偏差的因素
DTRA:发送方晶振偏差 DQUANT:接收方波特率量化带来的误差 DREC:接收方晶振偏差 DTCL:传输线造成的误差(上升/下降沿的不对称性)
接收方提高自身时钟 容忍度的因素 M: 10 ONEBIT: 01 OVER8: 10 DIV小数部分: 非零 零
字长控制M@CR1 校验使能控制PCE@CR1 USART帧格式
0
0 1 1
0
1 0 1
起始位+8位数据+停止位
起始位+7位数据+校验位+停止位 起始位+9位数据+停止位 起始位+8位数据+校验位+停止位
8
时钟波特率控制
收、发子模块使用相同的波特率产生器
但是有各自的使能控制
TE & RE@USART1_CR
12
培训内容
帧格式
数据帧的字长度 校验位 时钟波特率控制和时钟容忍
通信方式
单线半双工通信 多处理器通信
集成的多种模式
支持同步通信模式(输出时钟信号) 支持调制解调操作(硬件流控) 支持红外(IrDA)SIR ENDEC规范 支持Smart Card协议 支持LIN协议
UART4
PA1/ PC11 PA0/ PC10
UART5
PD2 PC12
nRTS
* 蓝色标示的仅在176引脚封装的芯片上有 * 紫色标示的仅在100、144和176引脚封装上有
5
数据帧格式
USART数据帧的组成
起始位(1位) 数据字(8/9位,M@USART_CR1) 其中包含了校验位(0/1位,PCE@USART_CR1) 停止位(0.5/1/1.5/2位, STOP@USART_CR2)
唤醒模式
Wake = 0 如何进入 软件置位RWU
Wake = 1 软件置位RWU;或者收到不匹配的 地址 若是因为收到不匹配地址字节,则 硬件置位RWU;收到的地址字节不 会置位RxNE,也没有相应中断和 DMA请求;随后的数据不会置位 RxNE以及触发接收中断 收到匹配的地址字节 硬件清零RWU;该地址字节会置位 RxNE
WAKE@USART_CR1=0:检测到空闲帧 WAKE@USART_CR1=1:检测到与自己匹配的地址