STMCU小助手
发布时间:2022-6-13 08:48
|
01. USART简介 通用同步异步收发器 (USART) 能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求。USART 通过小数波特率发生器提供了多种波特率。 它支持同步单向通信和半双工单线通信;还支持 LIN(局域互连网络)、智能卡协议与 IrDA(红外线数据协会)SIR ENDEC 规范,以及调制解调器操作 (CTS/RTS)。而且,它还支持多处理器通信。 通过配置多个缓冲区使用 DMA 可实现高速数据通信。 02. USART主要特性 ● 全双工异步通信 ● NRZ 标准格式(标记/空格): G" Z* V9 e' N/ m4 n& L }& M$ B0 C* r ● 可配置为 16 倍过采样或 8 倍过采样,因而为速度容差与时钟容差的灵活配置提供了可能 ● 小数波特率发生器系统 — 通用可编程收发波特率(有关最大 APB 频率时的波特率值,请参见数据手册)。6 y+ c( p# y* ]- A ● 数据字长度可编程(8 位或 9 位) ● 停止位可配置 - 支持 1 或 2 个停止位 ● LIN 主模式同步停止符号发送功能和 LIN 从模式停止符号检测功能 — 对 USART 进行 LIN 硬件配置时可生成 13 位停止符号和检测 10/11 位停止符号1 U# O0 B0 M" S: y ● 用于同步发送的发送器时钟输出 ● IrDA SIR 编码解码器 — 正常模式下,支持 3/16 位持续时间 ● 智能卡仿真功能 — 智能卡接口支持符合 ISO 7816-3 标准中定义的异步协议智能卡 — 智能卡工作模式下,支持 0.5 或 1.5 个停止位, z2 r+ v7 j$ B( q& i* i( b ● 单线半双工通信 ● 使用 DMA(直接存储器访问)实现可配置的多缓冲区通信; y" l8 A% ^8 J4 J' k2 u — 使用 DMA 在预留的 SRAM 缓冲区中收/发字节 ● 发送器和接收器具有单独使能位 ● 传输检测标志: — 接收缓冲区已满 — 发送缓冲区为空 — 传输结束标志 ● 奇偶校验控制:3 `& @7 c9 C) ]' u — 发送奇偶校验位 — 检查接收的数据字节的奇偶性 ● 四个错误检测标志:2 P# ?6 w# x, z+ J* h+ I — 溢出错误 — 噪声检测3 r4 {" a# A- [+ y& X6 n: G- s3 `( [ — 帧错误0 _* o& I4 j' h9 A — 奇偶校验错误& X% K" {( D* V ● 十个具有标志位的中断源:" T& ^9 J% y( U; a — CTS 变化 — LIN 停止符号检测 — 发送数据寄存器为空 — 发送完成 — 接收数据寄存器已满7 b9 n8 t, O( s; T# q9 } — 接收到线路空闲 — 溢出错误 — 帧错误, C! _2 n+ F% z. S" n" o8 J — 噪声错误* Y! }/ H" R% j% g6 a — 奇偶校验错误, W4 N! h% p& K ● 多处理器通信 - 如果地址不匹配,则进入静默模式 ● 从静默模式唤醒(通过线路空闲检测或地址标记检测) ● 两个接收器唤醒模式:地址位(MSB,第 9 位),线路空闲 $ L, |7 \* S1 v' _: o 03. USART功能说明 接口通过三个引脚从外部连接到其它设备。任何 USART 双向通信均需要至少两个引脚:接收数据输入引脚 (RX) 和发送数据引脚输出 (TX):" ?; e; Q0 T* `8 l6 m 1 T+ Z1 j+ l( m1 J4 M; Q/ Q1 A RX :接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声,从而用于恢复数据。 2 l8 _+ v4 f2 h0 s$ | TX :发送数据输出引脚。如果关闭发送器,该输出引脚模式由其 I/O 端口配置决定。如果使能了发送器但没有待发送的数据,则 TX 引脚处于高电平。在单线和智能卡模式下,该 I/O用于发送和接收数据(USART 电平下,随后在 SW_RX 上接收数据)。 04. USART字符说明1 n; j& t/ V$ ~2 @% v0 z 可通过对 USART_CR1 寄存器中的 M 位进行编程来选择 8 位或 9 位的字长。 6 A2 i! X1 A o TX 引脚在起始位工作期间处于低电平状态。在停止位工作期间处于高电平状态。空闲字符 可理解为整个帧周期内电平均为“1”(停止位的电平也是“1”),该字符后是下一个数据帧的起始位。6 k7 |5 C; |, T2 w* @6 G0 u. k 停止字符 可理解为在一个帧周期内接收到的电平均为“0”。发送器在中断帧的末尾插入 1或 2 个停止位(逻辑“1”位)以确认起始位。 发送和接收由通用波特率发生器驱动,发送器和接收器的使能位分别置 1 时将生成相应的发送时钟和接收时钟。* `" M! ~% h: c; \ $ }; h% `& H" t
05. USART寄存器 5.1 状态寄存器 (USART_SR) Status register1 R/ L" \9 R u, _4 a 偏移地址:0x00# b7 _) j$ x8 L1 r, [1 S 复位值:0x00C0 0000- |+ } p4 t3 G* Y( i + {% @* } w+ Y" Y% @: N% O) m
5.2 数据寄存器 (USART_DR) Data register% D" k, u4 [- g 偏移地址:0x04 复位值:0xXXXX XXXX; a/ v5 I I% k0 j
5.3 波特率寄存器 (USART_BRR)8 B' _; Q6 O' d9 l5 h0 R+ R Baud rate register$ d) D# `' o% G 注意: 如果 TE 或 RE 位分别被禁止,则波特计数器会停止计数。# h4 w y: d; N0 X/ v9 I' ?5 W 偏移地址:0x08 复位值:0x0000 0000' g# x2 ^6 w$ S% j4 L8 }/ | * Y6 ]2 Y7 ?* l+ U4 p8 g( E, Q4 v
# b' P- n* e1 K! U+ Z 位 31:16 保留,必须保持复位值5 \1 v1 W$ b. u. s# k3 z a0 B; ?; x 位 15:4 DIV_Mantissa[11:0]:USARTDIV 的尾数这 12 个位用于定义 USART 除数 (USARTDIV) 的尾数2 E" e a" A o; c 位 3:0 DIV_Fraction[3:0]:USARTDIV 的小数这 4 个位用于定义 USART 除数 (USARTDIV) 的小数。当 OVER8 = 1 时,不考虑 DIV_Fraction3位,且必须将该位保持清零。" O- d, }: I3 D% t1 ~9 g 7 R& g5 e- J* Y4 d 5.4 控制寄存器 1 (USART_CR1) Control register 1 偏移地址:0x0C% F1 ?. r: c) \3 A 复位值:0x0000 0000
' V# y# i. }+ i; X 5.5 控制寄存器 2 (USART_CR2) Control register 20 o$ w5 \/ E6 x2 D& i+ N 偏移地址:0x10 复位值:0x0000 0000
5.6 控制寄存器 3 (USART_CR3) Control register 3) q# T) o5 m( c0 d/ y 偏移地址:0x141 v& g4 y# e/ \3 y8 [, O% M$ [ 复位值:0x0000 0000 W5 i2 n6 ]6 o+ I) |
5.7 保护时间和预分频器寄存器 (USART_GTPR) Guard time and prescaler register0 P6 M* G: S0 E; l; I: S8 ~' k, ~6 ` 偏移地址:0x18 复位值:0x0000 0000
) i2 O( z( j- @5 V) r# A 9 {4 o- |6 E/ U$ p9 G! o % _" D$ y5 N1 v! N/ g' z4 N |
经验分享 | USART接收的数据怎么错位啦?
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32H563 UART+DMA 2D功能演示
经验分享 | 基于STM32H563演示UART+DMA功能
【STM32U3评测】实现双通道串口通信系统
STM32G系列RS485自动收发控制以及自适应波特率实战
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32MP135-DK】裸机移植shell
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
微信公众号
手机版