您的位置:首页 > 娱乐 > 八卦 > 优化网络速度_网站免费推广_百度seo搜搜_杭州推广系统

优化网络速度_网站免费推广_百度seo搜搜_杭州推广系统

2025/1/8 14:06:39 来源:https://blog.csdn.net/weixin_46281529/article/details/144926217  浏览:    关键词:优化网络速度_网站免费推广_百度seo搜搜_杭州推广系统
优化网络速度_网站免费推广_百度seo搜搜_杭州推广系统

串口发送(一)

  • 1 串口通讯协议简介
  • 2 串口电平标准
    • 2.1 RS-232信号线
  • 2.2 物理层简述
  • 3 协议层简述
    • 3.1 起始与停止信号
    • 3.2 有效数据
    • 3.3 数据校验
  • 4 STM32的USART简介
  • 5 USART功能框图
    • 5.1 功能引脚
    • 5.2 数据寄存器
    • 5.3 控制器
    • 5.4 发送器
    • 5.5 接收器
    • 5.6 小数波特率生成
    • 5.7 校验控制
    • 5.8 中断控制

1 串口通讯协议简介

串口通讯(Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常用该通讯方式来输出调试信息。
在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32标准库则是在寄存器与用户代码之间的软件层。对于通信协议,我们也可以以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。简单来说,物理层规定我们用嘴巴还是用肢体来交流,协议层是规定我们用中文还是英文。

2 串口电平标准

根据通讯使用的电平标准不同,串口通讯可分为TTL标准RS-232标准

通讯标准电平标准(发送端)
5V TTL逻辑1:2.4V ~ 5V; 逻辑0:0 ~ 0.5V
RS-232逻辑1:-15V ~ -3V;逻辑0:+3V ~ +15V

因此控制器一般使用TTL电平标准,所以常常会使用MAX3232芯片、CH340等对TTL及RS-232电平的信号进行互相转换。
注意:尽量不要让电路中的电平处于中间未知电平,要么偏于0,要么偏于3.3v等。

2.1 RS-232信号线

在最初的应用中,RS-232 串口标准常用于计算机、路由与调制调解器(MODEN) 之间的通讯,在这种通讯系统中,设备被分为数据终端设备DTE(计算机、路由) 和数据通讯设备DCE(调制调解器)。
在这种应用场合下,DB9 接口中的公头及母头的各个引脚的标准信号线接法见图DB9 标准的公头及母头接法及表DB9 信号线说明。
在这里插入图片描述
在这里插入图片描述

2.2 物理层简述

串口线中的RTS、CTS、DSR、DTR 及DCD 信号,使用逻辑1 表示信号有效,逻辑0 表示信号无效。例如,当计算机端控制DTR 信号线表示为逻辑1 时,它是为了告知远端的调制调解器,本机已准备好接收数据,0 则表示还没准备就绪。
在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD 以及GND 三条信号线,直接传输数据信号,而RTS、CTS、DSR、DTR 及DCD 信号都被裁剪掉了。

3 协议层简述

串口通讯的数据包由发送设备通过自身的TXD 接口传输到接收设备的RXD 接口。在串口通讯的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据,其组成见图串口数据包的基本组成。
在这里插入图片描述

3.1 起始与停止信号

串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑0 的数据位表示,而数据包的停止信号可由0.5、1、1.5 或2 个逻辑1 的数据位表示,只要双方约定一致即可。

3.2 有效数据

在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度常被约定为5、6、7 或8 位长。

3.3 数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。
校验方法有奇校验(odd)偶校验(even)0 校验(space)1 校验(mark) 以及无校验(noparity)

  • 奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个8 位长的有效数据为:01101001,此时总共有4个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是8 位的有效数据加上1 位的校验位总共9 位。
  • 偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为4个,所以偶校验位为“0”。
  • 0 校验是不管有效数据中的内容是什么,校验位总为“0”。
  • 1 校验是校验位总为“1”。

4 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通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等。

5 USART功能框图

USART的功能框图包含了USART最核心内容,掌握了功能框图,对USART 就有一个整体的把握,在编程时就思路就非常清晰。
在这里插入图片描述

5.1 功能引脚

  • TX:发送数据输出引脚。
  • RX:接收数据输入引脚。
  • SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
  • nRTS:请求以发送(Request To Send),n 表示低电平有效。如果使能RTS 流控制,当USART 接收器准备好接收新数据时就会将nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高电平。该引脚只适用于硬件流控制。
  • nCTS:清除以发送(Clear To Send),n 表示低电平有效。如果使能CTS 流控制,发送器在发送下一帧数据之前会检测nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
  • SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。
  • USART 引脚在STM32F103ZET6 芯片具体分布见表STM32F103ZET6 芯片的USART 引脚。USART 引脚
  • STM32F103ZET6 系统控制器有三个USART和两个UART,其中USART1 和时钟来源于APB2总线时钟,其最大频率为72MHz,其他四个的时钟来源于APB1总线时钟,其最大频率为36MHz,UART只是异步传输功能,所以没有SCLK、nCTS和nRTS功能引脚。

5.2 数据寄存器

  • USART 数据寄存器(USART_DR) 只有低9 位有效,并且第9位数据是否有效要取决于USART控制寄存器1(USART_CR1)的M位设置,当M位为0时表示8位数据字长,当M位为1表示9位数据字长,我们一般使用8位数据字长。
  • USART_DR包含了已发送的数据或者接收到的数据。USART_DR实际是包含了两个寄存器,一个专门用于发送的可写TDR,一个专门用于接收的可读RDR。当进行发送操作时,往USART_DR写入数据会自动存储在TDR内;当进行读取操作时,向USART_DR读取数据会自动提取RDR数据。
  • TDR和RDR都是介于系统总线和移位寄存器之间。串行通信是一个位一个位传输的,发送时把TDR内容转移到发送移位寄存器,然后把移位寄存器数据每一位发送出去,接收时把接收到的每一位顺序保存在接收移位寄存器内然后才转移到RDR。
  • USART支持DMA传输,可以实现高速数据传输。

5.3 控制器

  • USART 有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等等。使用USART之前需要向USART_CR1寄存器的UE 位置1使能USART,UE位用来开启供给给串口的时钟。
  • 发送或者接收数据字长可选8 位或9 位,由USART_CR1的M位控制。

5.4 发送器

当USART_CR1寄存器的发送使能位TE置1时,启动数据发送,发送移位寄存器的数据会在TX引脚输出,低位在前,高位在后。如果是同步模式SCLK 也输出时钟信号。
一个字符帧发送需要三个部分:起始位 + 数据帧 + 停止位。起始位是一个位周期的低电平,位周期就是每一位占用的时间;数据帧就是我们要发送的8 位或9 位数据,数据是从最低位开始传输的;停止位是一定时间周期的高电平。
停止位时间长短是可以通过USART 控制寄存器2(USART_CR2) 的STOP[1:0] 位控制,可选0.5个、1 个、1.5 个和2 个停止位。默认使用1 个停止位。2 个停止位适用于正常USART 模式、单线模式和调制解调器模式。0.5 个和1.5 个停止位用于智能卡模式。
当选择8 位字长,使用1 个停止位时,具体发送字符时序图见图字符发送时序图。
在这里插入图片描述
当发送使能位TE 置1 之后,发送器开始会先发送一个空闲帧(一个数据帧长度的高电平),接下来就可以往USART_DR 寄存器写入要发送的数据。在写入最后一个数据后,需要等待USART 状态寄存器(USART_SR) 的TC 位为1,表示数据传输完成,如果USART_CR1 寄存器的TCIE 位置1,将产生中断。
在发送数据时,几个比较重要的标志位:

名称描述
TE发送使能
TXE发送寄存器为空,发送单个字节的时候使用
TC发送完成,发送多个字节数据的时候使用
TXIE发送完成中断使能

5.5 接收器

如果将USART_CR1 寄存器的RE 位置1,使能USART 接收,使得接收器在RX 线开始搜索起始位。在确定到起始位后就根据RX 线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器数据移到RDR 内,并把USART_SR 寄存器的RXNE 位置1,同时如果USART_CR2 寄存器的RXNEIE 置1 的话可以产生中断。
在接收数据时,几个比较重要的标志位:

名称描述
RE接收使能
RXNE读数据寄存器非空
RXNEIE接收完成中断使能

5.6 小数波特率生成

  • 波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,单位为波特。比特率指单位时间内传输的比特数,单位bit/s(bps)。对于USART波特率与比特率相等,以后不区分这两个概念。波特率越大,传输速率越快。
  • USART 的发送器和接收器使用相同的波特率。计算公式如下:
    波特率
    其中,fPLCK 为USART 时钟,USARTDIV 是一个存放在波特率寄存器(USART_BRR) 的一个无符号定点数。其中DIV_Mantissa[11:0] 位定义USARTDIV 的整数部分,DIV_Fraction[3:0] 位定义USARTDIV 的小数部分。
例如:DIV_Mantissa=24(0x18),DIV_Fraction=10(0x0A),此时USART_BRR 值为0x18A;那么USARTDIV的小数位10/16=0.625;整数位24,最终USARTDIV 的值为24.625。 
如果知道USARTDIV 值为27.68,那么DIV_Fraction=16*0.68=10.88,最接近的正整数为11,所以DIV_Fraction[3:0] 为0xB;DIV_Mantissa= 整数(27.68)=27,即为0x1B。

波特率的常用值有2400、9600、19200、115200。 下面以实例讲解如何设定寄存器值得到波特率的值:

我们知道USART1 使用APB2 总线时钟,最高可达72MHz,其他USART 的最高频率为36MHz。 
我们选取USART1 作为实例讲解,即fPLCK=72MHz。为得到115200bps 的波特率,此时: 115200 =72000000/(16 ∗ USARTDIV) 
解得USARTDIV=39.0625 , 可 算 得 DIV_Fraction=0.0625*16=1=0x01,DIV_Mantissa=39=0x27
即 应该设置USART_BRR 的值为0x271。

5.7 校验控制

  • STM32F103 系列控制器USART 支持奇偶校验。当使用校验位时,串口传输的长度将是8 位的数据帧加上1 位的校验位总共9位,此时USART_CR1 寄存器的M 位需要设置为1,即9 数据位。
  • 将USART_CR1 寄存器的PCE 位置1 就可以启动奇偶校验控制,奇偶校验由硬件自动完成。启动了奇偶校验控制之后,在发送数据帧时会自动添加校验位,接收数据时自动验证校验位。接收数据时如果出现奇偶校验位验证失败,会见USART_SR寄存器的PE 位置1,并可以产生奇偶校验中断。
  • 使能了奇偶校验控制后,每个字符帧的格式将变成:起始位+ 数据帧+ 校验位+ 停止位。

5.8 中断控制

USART 有多个中断请求事件,具体见表USART 中断请求。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com