
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换 - g6 ^/ n1 ?+ ]! R# o: b USART利用分数波特率发生器提供宽范围的波特率选择,它支持同步单向通信和半双工单线通信,还允许多处理器通信' {( W' k8 P( L- T7 G+ P t5 r USART的主要特性如下: 全双工的,异步通信% ~ z2 Y- ^ v/ }) r NRZ标准格式3 d6 a; x% \0 G x+ e 分数波特率发生器系统(发送和接收共用的可编程波特率,最高达4.5Mbits/s) 可编程数据字长度(8位或9位) }$ F. Q% C% @! I8 J7 [; J$ D4 h/ t" Y 可配置的停止位-支持1或2个停止位) [3 F& V+ w7 x+ l' J3 c2 `( y' T 发送方为同步传输提供时钟+ C" d2 t) y2 K 单独的发送器和接收器使能位" B$ [+ y2 t+ A8 ^ 检测标志(接收缓冲器满,发送缓冲器空,传输结束标志)6 ^9 J3 } \: F% y, D/ l2 h 校验控制(发送校验位,对接收数据进行校验) 接口通过三个引脚与其他设备连接在一起 RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活, 并且不发送数据时,TX引脚处于高电平: B" \7 \4 f3 k8 n! p' F ![]() ) s$ n7 k+ \4 ^0 ]* \ 寄存器方面: 一个状态寄存器(USART_SR) 数据寄存器(USART_DR) 一个波特率寄存器(USART_BRR),12位的整数和4位小数 一个智能卡模式下的保护时间寄存器(USART_GTPR)) B# [' n% Z+ r& \ 6 o6 g. P3 P* t; \ 字长可以通过编程USART_CR1寄存器中的M位,选择成为8或9位。在起始位期间,TX脚处于低电平,在停止位期间处于高电平。& |# Z5 L1 V/ ?$ e+ S( z" c" ? 空闲符号被视为完全由’1’组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位(‘1’的位数也包括了停止位的位数)。 断开符号 被视为在一个帧周期内全部收到’0’(包括停止位期间,也是’0’)。在断开帧结束时,发送器再插入1或2个停止位(‘1’)来应答起始位。 发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其 产生时钟。2 {5 I1 G# g7 _9 s/ O ![]() 在USART发送期间,在TX引脚上首先移出数据的最低有效位。在此模式里,USART_DR寄存器包含了一个内部总线和发送移位寄存器之间的缓冲器。每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置 : w2 _4 O: J: o8 @) M& ? 在USART接收期间,数据的最低有效位首先从RX脚移进。在此模式里,USART_DR寄存器包 含的缓冲器位于内部总线和接收移位寄存器之间 m/ ~9 B% e4 D6 l. S 3 Q$ `, _" n. f2 H5 y 分数波特率的产生8 h5 X1 A c' }6 W/ {7 F- q 接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同 ![]() , q3 M7 L% J2 N& ~5 K6 c! ? USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器 注意:在写入USART_BRR之后,波特率计数器会被波特率寄存器的新值替换。因此,不要在通信进行中改变波特率寄存器的数值+ Y, q- ^4 P% P" U, I$ B : R* [, Y2 U3 X* K USART的寄存器6 L1 ~' z+ N/ a, Z- W9 ` 可以用半字(16位)或字(32位)的方式操作这些外设寄存器4 S5 b: F" ~0 \4 Y5 U" J & p9 A$ }) j, I# q/ [% { 状态寄存器(USART_SR), N( f& c. z5 Q/ y2 f 4 P$ l0 o" k3 ]% L8 H3 @ ![]() ![]() $ b- O/ W: w) }" G* { 数据寄存器(USART_DR) ![]() 8 O8 X* A0 k Q# _5 R. E ![]() % r! e }2 F9 \ 波特比率寄存器(USART_BRR)+ h3 R9 P* m4 u7 S % X# s( D0 A: g2 O, e- C ![]() ' o+ E7 i3 c& h1 Y1 }' ^! a 控制寄存器 1(USART_CR1) / O5 U8 [( n: }0 I9 Q ![]() - L& ?, U9 e4 }& H. ~+ E5 ~2 E. V ![]() 8 l3 @/ L8 G. L+ `7 V1 S ![]() 2 Q8 t' ?) q' l @ { ) f. N: E5 i! R; \8 O# r; F 控制寄存器 2(USART_CR2) ![]() / S M! i% v- p* \; W ![]() / [% r/ I0 S6 R) b4 } 控制寄存器 3(USART_CR3) + T6 L7 E6 k9 t! }7 ? y ; n, [8 I) O7 ?* I ![]() 8 i& Z( E% y3 a2 q* ] ![]() 保护时间和预分频寄存器(USART_GTPR)2 s4 b. C, m0 K 5 {- P% j, Z; M9 Q2 v ![]() ) ~+ ?+ I8 L9 B/ B+ S# x# k ![]() ) s0 O! b/ ?2 ?, s5 t ————————————————/ ^" N7 l9 b! Y* T2 l- r 版权声明:CodeForCoffee ! l7 v) L% J @7 [4 R |
STM32G系列RS485自动收发控制以及自适应波特率实战
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32MP135-DK】裸机移植shell
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
NUCLEO-U545RE-Q评测】4. 串口实用收发测试
基于STM32模拟UART串口通信
【STM32H503评测】+ coremark跑分移植测试
基于STM32H563演示UART+DMA经验分享
STMCube UART与ADC配置
STM32™ 自举程序中使用的 USART 协议