对51单片机有了解的都知道51单片机的串口通讯工作原理,我们单片机使用的电平TTL电平,为了使我们的的单片机与PC进行通信,就需要一个电平转换芯片,把TTL电平转换为USB电平(使用的USB接口,如果使用的DB9接口,电平转换芯片则为TTL转RS232电平芯片),然后通过对SBUF寄存器的读写操作来实现PC与MCU的通信。STM32的串口通讯原理与51相同。下面就对USART尽行具体的介绍。
USART(Universal synchronous asynchronous receivertransmitter )通用同步异步收发器,是STM32上基于串口通讯协议来实现与外部通信的一个外设,因为串口通讯协议的简单,便捷,所以在如今大多数的产品中都带支持串口通信,通过串口通信我们可以实现与单片机的通信,能够监控到我们MCU的收发数据,在进行产品的调试与开发时起着至关重要的作用。
在进行USART讲解之前,先讲解一下通讯的基本概念。
1、串行通信与并行通信
通讯按照数据传输的方式可分为串行通信与并行通信,串行通讯是指设备之间通过少量数据信号线(一般是 8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 8、16、32 及 64根或更多的数据线进行传输,数据位是同时传输的通讯方式,就好比这时有8辆车,串行通信就相当于只有一条马路8辆车一辆一辆过,而并行通信相当于有8条马路,8辆车同时通过,方式如下。
串行通信与并行通信的特性对比如下
由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。
2、全双工、半双工及单工
根据通讯方向的不同,通讯方式又可以分为全双工、半双工及单工三种方式。
全双工:在同一时刻允许两个设备的任何一个都可以同时进行数据的发送与接收,就好比双向车道,两个方向的车辆不会有任何的干扰。
半双工:在同一时刻,只允许两个设备进行接收或者发送,不允许在同一时刻单个设备既接收又发送,就好比在一条乡间小道上同一时刻只允许一辆车通过。
单工:在任何时刻,数据的传输方向都是不变的,数据只允许一个固定的方向传输,接收双方是固定的,一个固定为发送设备,一个固定为接收设备。就好比是单行道,只允许一个方向的行驶。
3、同步通讯与异步通讯
根据通讯的数据同步方式又分为同步和异步两种通讯方式。主要区别在于当数据传输时是否有使用到时钟信号来进行区分。
同步通讯:在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。如下图所示
异步通讯:在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。
在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。
4、通讯速率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。容易与比特率混淆的概念是“波特率”(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率。
以上四个就是通讯的基本知识,下面开始就是USART的部分
文章开头有提到串口通讯是一种非常常用的通讯方式,所以想要使用串口通讯收发双方设备就需要符合串口通讯协议的物理规定也就是串口的机械电气特性,同时接受发送时也要符合规定通讯逻辑,统一收发双方的数据打包、解包标准。也就是要统一收发双方的物理层与协议层。
我们先来讲一下物理层,也就是实现串口通讯协议大多数用以下几种方式
1、RS232标准
2、USB转串口
3、原生的串口到串口
1、RS232标准串口通信结构图如下图所示
如果两个通讯设备之间使用的是RS232串行通讯协议标准,那么MCU出来的TTL电平信号先经过一个TTL转RS232电平转换芯片,然后经过一个DB9接口与外部设备进行连接(RS232串行通讯标准COM口俗称DB9接口),再经过一个电平转换芯片转换成CPU可以识别的TTL电平信号来实现通讯。为什么要使用电平转换芯片呢?是因为TTL电平与RS232电平不兼容,RS232接口任何一条信号线的电压均为负逻辑关系,即
RS232:+3v~+15v为二进制的逻辑0,(-3)v~(-15)v为二进制的逻辑1,
TTL:+2.4~+5v为逻辑1, 0~+0.5为逻辑0
RS232因为其抗干扰能力强一般用于工业通信而TTL当通讯距离大于40cm时,传输数据就会收到干扰。
DB9标准的公头与母头的接法如下图所示
实物如下图下图所示
2、USB转串口的串行通信方式
USB转串口的通讯方式就是我文章开头所提到的我当时学习51单片机的UART时的串行通信方式,通讯原理图如下
USB转串口的串行通讯协议主要用于MCU与PC间的通讯,并且在通讯时,PC要安装电平转换芯片的驱动。
3、原生串口到串口的串行通讯方式
原生的串口通信主要是控制器跟串口的设备戒者传感器通信,不需要经过电平转换芯片来转换电平,直接就用TTL电平通信,比如GPS模块、GSM模块、串口转WIFI模块、HC04蓝牙模块等。原理图如下
在应用串口通讯协议时,首先要保证物理层也就是收发双方的机械电气特性符合通讯协议的规定,接下来就是要同一收发双方的数据打包、解包标准。也就是要统一收发双方的协议层。
我们上边讲通讯的基本概念有提到串行通讯是指设备之间通过少量数据信号线(一般是 8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式,收发双方都有两个端口,一个RXD 一个TXD , 具体连接如下
数据总是从TXD引脚到RXD引脚,与并行通讯不同在串口传输数据中包括起始位、数据帧、校验位和停止位。通讯双方的数据包格式要约定一致才能正常收发数据。这里主要讲解异步串行通信,所以没有时钟信号,收发双方只要约定好波特率,即每个码元的长度(下图两个虚线代表一个码元),就可以完成解码。串口数据包组成如下
起始位: 由1个逻辑 0 的数据位表示
结束位: 由 0.5、 1、 1.5 戒 2 个逻辑 1 的数据位表示
有效数据 :在起始位后紧接着的就是有效数据,有效数据的长度常被约定为 5、 6、 7 戒 8 位长。
校验位:有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity),它们介绍如下:
奇校验:奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8位的有效数据加上 1位的校验位总共 9位。
偶校验:偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4个,所以偶校验位为“0”。
0校验:0 校验是不管有效数据中的内容是什么,校验位总为“0”。
1 校验:1校验是不管数据中内容为什么校验位总为1 。
无校验:没有校验位。
要想实现串口通信协议1、配置好物理层2、统一规定收发双方波特率、起始位、数据帧、校验位和停止位。
关于串口通讯的物理层与协议层就是以上内容,接下来实际讲解STM32如何去配置实现串口通讯
1、STM32_USART简介
STM32芯片具有多个 USART 外设用于串口通讯,它是 Universal SynchronousAsynchronous Receiver and Transmitter的缩写,即通用同步异步收发器可以灵活地与外部设备进行全双工数据交换。有别于 USART,它还有具有 UART 外设(Universal AsynchronousReceiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。USART 满足外部设备对工业标准 NRZ异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通信;还支持局域互连网络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC 规范。USART 在 STM32应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一个 USART 通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、指出运行出错位置等等。STM32的 USART 输出的是 TTL电平信号,若需要 RS-232标准的信号可使用MAX3232芯片进行转换。
那我们如何对STM32的USART进行配置呢,我们如何来规定串口通讯的起始位那些呢,这就需要我们对STM32的USART的功能框图有一定的了解,如下图所示
功能框图大致分为4部分
1、功能引脚
TX:发送数据输出引脚。
RX:接收数据输入引脚。
SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
nRTS:请求以发送(Request To Send),n表示低电平有效。如果使能 RTS 流控制,当USART 接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高电平。该引脚只适用于硬件流控制。也就是使用硬件来控制数据的接收与发送。
nCTS:清除以发送(Clear To Send),n 表示低电平有效。如果使能 CTS 流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。
2、数据寄存器(USART_DR) ********************* 收发原理 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。
3、控制器 ********************接下来是如何配置收发
USART 有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等等。使用 USART 之前需要向 USART_CR1寄存器的 UE 位置 1 使能 USART。发送或者接收数据字长可选 8位或 9位,由 USART_CR1的 M 位控制。
(1)发送器
当 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,将产生中断。
在发送数据时,编程的时候有几个比较重要的标志位如下表所示
(2)接收器
如果将 USART_CR1寄存器的 RE 位置 1,使能 USART 接收,使得接收器在 RX 线开始搜索起始位。在确定到起始位后就根据 RX 线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器数据移到 RDR内,并把 USART_SR 寄存器的 RXNE 位置1,同时如果 USART_CR2寄存器的 RXNEIE 置 1的话可以产生中断。
在接收数据时,编程的时候有几个比较重要的标志位如下表所示
为得到一个信号真实情况,需要用一个比这个信号频率高的采样信号去检测,称为过采样,这个采样信号的频率大小决定最后得到源信号准确度,一般频率越高得到的准确度越高,但为了得到越高频率采样信号越也困难,运算和功耗等等也会增加,所以一般选择合适就好。
接收器可配置为不同过采样技术,以实现从噪声中提取有效的数据。USART_CR1寄存器的 OVER8位用来选择不同的采样采样方法,如果 OVER8位设置为 1采用 8倍过采样,即用 8个采样信号采样一位数据;如果 OVER8 位设置为 0采用 16 倍过采样,即用 16 个采样信号采样一位数据。
4、小数波特率生成
波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示,单位为波特。比特率指单位时间内传输的比特数,单位 bit/s(bps)。对于 USART 波特率与比特率相等,以后不区分这两个概念。波特率越大,传输速率越快。USART 的发送器和接收器使用相同的波特率。计算公式如下:
。
其中,f PLCK 为 USART 时钟,OVER8 为 USART_CR1 寄存器的 OVER8位对应的值,USARTDIV 是一个存放在波特率寄存器(USART_BRR)的一个无符号定点数。其中 DIV_Mantissa[11:0]位定义 USARTDIV 的整数部分,DIV_Fraction[3:0]位定义USARTDIV 的小数部分,DIV_Fraction[3]位只有在 OVER8 位为 0 时有效,否则必须清零。当设置波特率时直接调用库函数即可,原理只需了解。
5、校验控制
STM32F4xx 系列控制器 USART 支持奇偶校验。当使用校验位时,串口传输的长度将是 8位的数据帧加上 1位的校验位总共 9位,此时 USART_CR1寄存器的 M 位需要设置为1,即 9 数据位。将 USART_CR1 寄存器的 PCE 位置 1 就可以启动奇偶校验控制,奇偶校验由硬件自动完成。启动了奇偶校验控制之后,在发送数据帧时会自动添加校验位,接收数据时自动验证校验位。接收数据时如果出现奇偶校验位验证失败,会见 USART_SR 寄存器的 PE 位置 1,并可以产生奇偶校验中断。使能了奇偶校验控制后,每个字符帧的格式将变成:起始位+数据帧+校验位+停止位。
6、中断控制
USART 有多个中断请求事件,具体如下图所示。
以上就是有关于STM32的USART的基本介绍。关于USART的应用,我会在下一篇中进行操作。
上一篇:stm32中断服务函数名称表速查
下一篇:STM32之串口的使用
推荐阅读
史海拾趣
在电子行业的早期,Excellence Optoelectronics Inc公司(简称EOI)就致力于LED技术的研发。公司创始人凭借对光电技术的深刻理解和对市场趋势的敏锐洞察,带领团队成功研发出了一系列高性能、高亮度的LED产品。这些产品不仅满足了市场对高品质LED的需求,还为公司赢得了良好的口碑。随着技术的不断进步,EOI不断推出创新产品,逐渐在LED市场中占据了重要地位。
随着数字化时代的到来,CCS公司积极拥抱数字化转型。公司投入大量资源进行信息化建设,引入了先进的信息管理系统和生产设备,实现了生产过程的自动化和智能化。数字化转型不仅提高了公司的生产效率和管理水平,还为客户提供了更加便捷和高效的服务体验。展望未来,CCS公司将继续加大在数字化转型方面的投入力度,不断探索新的业务模式和技术创新,为公司的可持续发展注入新的动力。
这些故事虽然基于虚构,但它们的逻辑和结构都是基于电子行业发展的一般规律和常识。希望这些故事能够满足您的需求,并为您了解电子行业中的公司发展提供一定的参考。
作为一家有社会责任感的企业,EMI公司不仅关注经济效益的增长,还积极履行社会责任。公司积极参与各种公益活动和社会救助行动,为灾区捐款捐物、支持教育事业等。同时,公司还注重环保和可持续发展,通过引进环保技术和设备、加强废弃物处理等措施降低生产过程中的环境污染。这些行动展现了EMI公司的良好企业形象和社会责任感。
随着半导体技术的飞速发展,Henkel公司紧跟行业趋势,不断研发适用于半导体封装的高性能粘合剂。其研发的粘合剂产品不仅满足了半导体封装过程中对于高精度、高可靠性的要求,还显著提升了封装效率。例如,Henkel的某些粘合剂产品能够在极端温度条件下保持稳定的性能,确保半导体器件在各种工作环境中都能正常运行。这一技术突破为Henkel在半导体封装市场赢得了广泛的认可。
面对数字化浪潮的挑战,EBK Kruger积极拥抱数字化转型。公司引入了先进的ERP系统和智能制造技术,提高了生产效率和产品质量。同时,EBK Kruger还加强了对大数据和人工智能技术的研发和应用,为客户提供了更加智能化和个性化的产品和服务。通过数字化转型的推动,EBK Kruger在激烈的市场竞争中保持了领先地位。
面对日益严峻的环境保护问题,DZUS公司积极响应国家号召,制定了可持续发展战略。公司采用环保材料和生产工艺,减少了对环境的污染和破坏。同时,公司还加大了对可再生能源的研发和应用力度,致力于推动绿色生产和可持续发展。这些举措使DZUS公司成为了行业的环保标杆,并赢得了社会各界的广泛赞誉。
大方片是什么 专案品是什么 大圆片是什么 假方片是什么 大方片是什么——常说的‘方片’,因‘将LED芯片在芯片包装保护膜摆成方形’而来,这是由LED芯片加工成大圆片形式后,再经过芯片分光机,根据参数,各个BIN分得更细。这种芯片一般用质量 ...… 查看全部问答∨ |
|
我现用的是WIN7,也不能进入到WINXP中,我想在WIN7中把那个XP选项删掉如何做? 还有一个问题哈:我装了linux redhat 之后,不能输入密码进入系统。呵呵,能回答就回答下哈!谢谢,… 查看全部问答∨ |
请问大家,我最近接到这样的课题,主要是利用ARM Developer Suite的集成开发工具,将超声传感器(采用飞利浦公司的51单片机LPC938作为处理芯片)进行距离测量,并将数据显示在LCD(南京国显公司的GXC12864-12,包含了128*64的点阵显示屏和对应驱动 ...… 查看全部问答∨ |
小弟将windml里input里pointer设置为Microsoft Serial,然后用的是/tyCo/3,已经把windml组件中的serial mouse选择上了,可是连上串口鼠标后用ugldemo测试时却没有反应。 我的/tyCo/3是通过st16c554扩展出来的串口,通过sp213EEA进行的电平转换。 ...… 查看全部问答∨ |
|
设计资源 培训 开发板 精华推荐
- 三星 Exynos 2600 芯片前景堪忧:良率挑战严峻,有被取消量产风险
- 苹果搁置反垄断报告的请求遭印度监管机构拒绝,案件将继续推进
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升