在那个网站找模具做,wordpress推广网站插件,WordPress干什么的,wordpress修改页面title目录
概述
1 字符编码
1.1 USART 字符说明
1.2 字长编程
2 发送器
2.1 字符发送
2.2 可配置的停止位
2.3 配置停止位方法
3 单字节通信
4 中断字符
5 空闲字符 概述
本文主要讲述STM32 USART的发送端功能实现的原理#xff0c;包括字节编码长度#xff0c;发送器…目录
概述
1 字符编码
1.1 USART 字符说明
1.2 字长编程
2 发送器
2.1 字符发送
2.2 可配置的停止位
2.3 配置停止位方法
3 单字节通信
4 中断字符
5 空闲字符 概述
本文主要讲述STM32 USART的发送端功能实现的原理包括字节编码长度发送器的波形特点发送字节bit位的波形的变化特点和中断相关的配置参数等内容。
1 字符编码
任何 USART 双向通信均需要至少两个引脚接收数据输入引脚 (RX) 和发送数据引脚输出 (TX) RX 接收数据输入引脚就是串行数据输入引脚。过采样技术可区分有效输入数据和噪声从而用于恢复数据。 TX 发送数据输出引脚。如果关闭发送器该输出引脚模式由其 I/O 端口配置决定。如果使 能了发送器但没有待发送的数据则 TX 引脚处于高电平。在单线和智能卡模式下该 I/O用于发送和接收数据 USART 电平下随后在 SW_RX 上接收数据。 1.1 USART 字符说明
可通过对 USART_CR1 寄存器中的 M 位进行编程来选择 8 位或 9 位的字长。
TX引脚的电平 起始位电平 TX 引脚在起始位工作期间处于低电平状态。 停止位电平 在停止位工作期间处于高电平状态。空闲字符可理解为整个帧周期内电平均为“1”停止位的电平也是“1”该字符后是下一个数据帧的起始位。 停止字符 在一个帧周期内接收到的电平均为“0”。发送器在中断帧的末尾插入 1或 2 个停止位逻辑“1”位以确认起始位。 空闲字符 整个帧周期内电平均为“1”停止位的电平也是“1”该字符后是下一个数据帧的起始位。 发送和接收由通用波特率发生器驱动发送器和接收器的使能位分别置 1 时将生成相应的发送时钟和接收时钟。
1.2 字长编程 控制寄存器 1 (USART_CR1) Control register 1 偏移地址 0x0C 复位值 0x0000 0000 位 12 M字长 (Word length) 该位决定了字长。该位由软件置 1 或清零。 0 1 起始位 8 数据位 n 停止位 1 1 起始位 9 数据位 n 停止位 注意 在数据传输发送和接收期间不得更改 M 位 19 位字长 M 位置 1 1 个停止位 28 位字长 M 位复位 1 个停止位 2 发送器
发送器可发送 8 位或 9 位的数据字具体取决于 M 位的状态。发送使能位 (TE) 置 1 时发送移位寄存器中的数据在 TX 引脚输出相应的时钟脉冲在 SCLK 引脚输出。
2.1 字符发送
USART 发送期间首先通过 TX 引脚移出数据的最低有效位。该模式下 USART_DR 寄存器的缓冲区 (TDR) 位于内部总线和发送移位寄存器之间。每个字符前面都有一个起始位其逻辑电平在一个位周期内为低电平。字符由可配置数量的停止位终止。
USART 支持以下停止位 0.5、 1、 1.5 和 2 个停止位。 注意 数据发送期间不应复位 TE 位。发送期间复位 TE 位会冻结波特率计数器从而将损坏 TX 引 脚上的数据。当前传输的数据将会丢失。使能 TE 位后将会发送空闲帧。 2.2 可配置的停止位 可以在控制寄存器 2 的位 13 和 位 12 中编程将随各个字符发送的停止位的数量。 ● 1 个停止位 这是停止位数量的默认值。 ● 2 个停止位 正常 USART 模式、单线模式和调制解调器模式支持该值。 ● 0.5 个停止位 在智能卡模式下接收数据时使用。 ● 1.5 个停止位 在智能卡模式下发送和接收数据时使用 空闲帧发送将包括停止位
m 0 时中断发送是 10 个低电平位然后是已配置数量的停止位 m 1 时中断发送是11 个低电平位然后是已配置数量的停止位。无法传送长中断中断长度大于 10/11 个低电平位。
可配置的停止位的波形如下 2.3 配置停止位方法
实现步骤 1. 通过向 USART_CR1 寄存器中的 UE 位写入 1 使能 USART。 2. 对 USART_CR1 中的 M 位进行编程以定义字长。 3. 对 USART_CR2 中的停止位数量进行编程。 4. 如果将进行多缓冲区通信请选择 USART_CR3 中的 DMA 使能 (DMAT)。按照多缓冲通信中的解释说明配置 DMA 寄存器。 5. 使用 USART_BRR 寄存器选择所需波特率。 6. 将 USART_CR1 中的 TE 位置 1 以便在首次发送时发送一个空闲帧。 7. 在 USART_DR 寄存器中写入要发送的数据该操作将清零 TXE 位。为每个要在单缓冲区模式下发送的数据重复这一步骤。 8. 向 USART_DR 寄存器写入最后一个数据后等待至 TC1。这表明最后一个帧的传送完成。禁止 USART 或进入暂停模式时需要此步骤以避免损坏最后一次发送。 3 单字节通信
始终通过向数据寄存器写入数据来将 TXE 位清零。 TXE 位由硬件置 1它表示 ● 数据已从 TDR 移到移位寄存器中且数据发送已开始。 ● TDR 寄存器为空。 ● USART_DR 寄存器中可写入下一个数据而不会覆盖前一个数据。TXEIE 位置 1 时该标志位会生成中断。 1发送时要传入 USART_DR 寄存器的写指令中存有 TDR 寄存器中的数据该数据将在当前发送结束时复制到移位寄存器中。
2未发送时要传入 USART_DR 寄存器的写指令直接将数据置于移位寄存器中数据发送开始时 TXE 位立即置 1。
3如果帧已发送停止位后且 TXE 位置 1 TC 位将变为高电平。如果 USART_CR1 寄存器中的 TCIE 位置 1将生成中断。
向 USART_DR 寄存器中写入最后一个数据后必须等待至 TC1之后才可禁止 USART或使微控制器进入低功率模式请参见图 发送时的 TC/TXE 行为。 TC 位通过以下软件序列清零 1. 从 USART_SR 寄存器读取数据 2. 向 USART_DR 寄存器写入数据
4 中断字符
将 SBK 位置 1 将发送一个中断字符。中断帧的长度取决于 M 位 。 如果 SBK 位置“1”当前字符发送完成后将在 TX 线路上发送一个中断字符。中断字符发送完成时发送中断字符的停止位期间该位由硬件复位。 USART 在上一个中断帧的末尾插入一个逻辑“1”位以确保识别下个帧的起始位。 注意 如果软件在中断发送开始前对 SBK 位进行了复位将不会发送中断字符。对于两个连续的中断应在上一个中断的停止位发送完成后将 SBK 位置 1。 5 空闲字符
将 TE 位置 1 会驱动 USART 在第一个数据帧之前发送一个空闲帧。 控制寄存器 1 (USART_CR1) Control register 1 偏移地址 0x0C 复位值 0x0000 0000 位 3 TE发送器使能 (Transmitter enable) 该位使能发送器。该位由软件置 1 和清零。 0禁止发送器 1使能发送器 注意 1除了在智能卡模式下以外传送期间 TE 位上的“0”脉冲“0”后紧跟的是“1”会在当前字的后面发送一个报头空闲线路。 2当 TE 置 1 时在发送开始前存在 1 位的时间延迟。