打印
[其他ST产品]

STM32——USART

[复制链接]
1193|71
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
通信
1.1通信是什么;
通信是将一个设备的数据发送到另一个设备中,从而实现硬件的扩展;

1.2通信的目的是什么;
实现硬件的扩展-在STM32中集成了很多功能,例如PWM输出,AD采集,定时器等,在STM32中是通过内部硬件电路实现的,可以通过指针操作相应的寄存器,来控制硬件电路,通过读来获取电路状态,通过写来操控电路;而有一些功能是STM32内没有集成的例如蓝牙无线遥控,陀螺仪测姿态等,此时需要外挂模块,来实现这些功能,而这些功能的数据是保存在外挂模块的寄存器中的,STM32想要获取这些数据来控制外挂模块就需要与该设备进行通信,通过读写外挂模块相应的寄存器,实现对外挂模块的控制,从而达到硬件扩展的功能;

1.3设备间如何进行通信
通过在设备间连接一根或者多根通信线,实现数据的接收和数据的发送,从而达到主控模块控制外挂模块的功能;

1.4通信协议是什么;
通信协议是指通信双方规定的通信规则,双方按照协议进行数据的收发;

1.5有哪些通信协议;
主要的通信方式:串口通信(USART),I2C,SPI,CAN,USB通信;

1.6通信协议有哪些模式;
通信方式的特点主要由以下几种模式决定:双工模式,时钟模式,电平模式,设备模式;

1.7通信特性具体是什么;
1.7.1双工模式:
双工模式分为全双工,半双工,单工;

全双工:通信双方可以同时接收或者发送数据,一般有两根通信线,接收线路和发送线路互不干扰,全双工;

半双工:通信双方在指定时间,只能接收或者只能发送,一根通信线,半双工;

单工:数据只能由一个设备发送另一个设备接收,一根通信线(全双工撤去一根通信线可转换为单工);

1.7.2时钟模式
同步时钟:通信双方在时钟线的时钟脉冲驱动下,进行数据的收发;

异步时钟:通信双方没有时钟线,需要双方约定传输频率(波特率),根据传输频率来接收数据;

*波特率和比特率

波特率:单位时间内接收的码元个数,单位是码元/s,也称波特;在通信系统中,二进制的一位称为码元或者符号;波特率是指单位时间内传送二进制数据的位数,单位用bps(位/秒)表示,记作波特。

比特率:单位时间内接收的比特的个数,单位是bit/s,比特率来衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位用bps表示。

在二进制下波特和比特是相同的,多进制下是不同的;

1.7.3电平模式
单端信号:通信线上的电平是对GND的电平,所以通信设备需要共地;

差分信号:俩根传输线上的电位差,差分信号具有很强的抗干扰性,所以差分信号一般可以传输很远的距离;

1.7.4设备模式
点对点设备:

多设备;

多设备分为一主多从模式和多主多从模式;

一主多从模式:指的是有一个主机,多个从机,主机对总线的时钟线有绝对的控制权,从机在任何时候都只能接收,不能发送;主机在数据线空闲时候,可以调用,从机只能在接收或者发送数据的时候才可以短暂的控制;

多主多从模式

一根总线上挂载了多个设备,这些设备既可以作为从机又可以作为主机;

又分为:固定多主机模式和可变多主机模式;

固定多主机模式:主机的数量是固定的,每个主机都可以掌握总线的控制权,当多个主机同时申请总线控制权时,总线进行仲裁,失败的让出总线控制权;

可变多主机模式:每一个挂载在总线的设备都可以作为主机,当需要作为主机与其他设备进行通信时,申请总线控制权,对从机设备进行寻址即可,通信完成后,让出总线控制权,变回从机;当多个主机同时申请总线控制权时,总线进行仲裁,失败的让出总线控制权;

使用特权

评论回复
沙发
键盘手没手|  楼主 | 2024-1-31 12:14 | 只看该作者
1.8总结:

使用特权

评论回复
板凳
键盘手没手|  楼主 | 2024-1-31 12:14 | 只看该作者
二、USART串口通信协议
2.1串口通信介绍:
串口是一种应用十分广泛的通讯接口,串口按位bit发送和接收字节,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信

单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力;

使用特权

评论回复
地板
键盘手没手|  楼主 | 2024-1-31 12:15 | 只看该作者
2.2串行通信和并行通信
1.通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式,它们的通讯传输对比说明见下图:

使用特权

评论回复
5
键盘手没手|  楼主 | 2024-1-31 12:15 | 只看该作者
很明显,因为一次可传输多个数据位的数据,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及 PCB 的布线面积,串行通讯与并行通讯的特性对比见下表:



不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。

使用特权

评论回复
6
键盘手没手|  楼主 | 2024-1-31 12:15 | 只看该作者
2.3UART协议
UART全称是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),它通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串并转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(RX 和TX)就可以完成通信过程,因此也称为异步串行通信。

对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层(硬件规定)和协议层(软件规定)。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

使用特权

评论回复
7
键盘手没手|  楼主 | 2024-1-31 12:16 | 只看该作者
2.4USART串口硬件规定:
简单的双向串口通信需要两个通信线(TX数据发送端,RX数据接收端)

TX 数据发送引脚

RX 数据接受引脚

TX和RX需要交叉连接(一个设备的TX连接在另外一个设备的RX);

GND是单端信号,即所有的电平信号是相对于GND的,所以需要共地;

VCC当从设备没有单独供电时,需要接VCC;

当只需要单向数据传输时,可以只接一个通信线;

当电平标准不一样的时候需要接电平转换芯片;

全双工模式,发送端设置为复用推挽输出,接收端设置为浮空输入或上拉输入;

使用特权

评论回复
8
键盘手没手|  楼主 | 2024-1-31 12:16 | 只看该作者

使用特权

评论回复
9
键盘手没手|  楼主 | 2024-1-31 12:56 | 只看该作者
2.5USART的软件规定
2.3.1时序组成:
串口的参数:起始位,停止位,校验位,数据位,波特率;

波特率,单位时间接收二进制的位数,单位是bsp/s(位/s);

起始位:标志一个数据帧的开始,固定为低电平;

停止位:  用于数据帧的间隔,固定为高电平;

数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行;

校验位:用于数据验证,根据数据位计算得来;

串口的时序:

1位起始位+8位有效数据位+1位停止位=1帧(10位);

1位起始位+8位有效数据位+1位停止位+1位校验位=1帧(11位);

过程:串口处于空闲状态时,为默认为高电平为1,串口需要传输的时候,必须要发送一个起始位,这个起始位必须是低电平,打破空闲状态的高电平,这个下降沿就是告诉接收设备,这一帧的数据要开始了,发送数据后,停止位固定为高电平,为下一帧发送做准备;

奇偶校验位:例如奇校验:就是如果数据中1的数为奇数则校验位为0,默认1为奇数,如果1为偶数,则校验位补1,使1为奇数个;

引脚高低电平反转是STM32USART外设自动完成,也可以通过软件模拟,就是设置一个对应波特率时间的定时器,然后定时调用GPIO完成引脚反转;

接收时候需要一个外部中断,在接收位下降沿触发,进入接收状态,对齐采样时钟,依次采样八次;

使用特权

评论回复
10
键盘手没手|  楼主 | 2024-1-31 12:57 | 只看该作者
*停止位可以设置长度;

使用特权

评论回复
11
键盘手没手|  楼主 | 2024-1-31 12:57 | 只看该作者
2.3.2时序图


总结:TX引脚发送高低电平,RX引脚读取高低电平,每个字节的数据加上起始位,停止位 ,可选的校验位打包成数据帧,依次输出在TX引脚,另一端RX引脚依次接收,完成数据传输,这就是串口通信;

使用特权

评论回复
12
键盘手没手|  楼主 | 2024-1-31 12:58 | 只看该作者
三、电平标准
*电平标准:

电平标准是数据0和数据1的表达方式,在传输线缆中人为的规定电压和数据的对应关系,串口通信常见的三种电平标准:

TTL电平:0V表示0,3.3V~5V表示1;

RS232:-3.3V~-15V表示1,3.3V~15V表示0;

RS485:两线压差-2V~-6V表示0,2V~6V表示1;RS485是差分信号;

使用特权

评论回复
13
键盘手没手|  楼主 | 2024-1-31 12:59 | 只看该作者
四、STM32的USART串口外设
4.1USART串口外设的介绍
通用同步/异步收发器;

*同步模式多加一个时钟输出,没有时钟输入,主要是为了兼容其他通信协议,不支持两个USART直接的同步;

USART是STM32内部集成的硬件外设,可以根据数据寄存器的一个字节数据,自动生成数据帧的时序,从TX引脚发送,也可以自动接收RX引脚的数据帧时序,拼接成一个字节数据,存放在数据寄存器中;

自带波特率发生器,最高可达4.5Mbits/S;(APB2总线给一个时钟频率72MKHZ,波特率发生器进行分频得到想要的时钟频率,作为采样频率)

可以配置数据位长度(8/9),停止位长度(0.5/1/2/2.5)

可选择校验位(无校验/奇校验/偶校验)

支持同步模式(多一个CLK时钟输出),硬件流控制(设备发送数据太块,会导致另外一个设备没有做好接收准备,通过实现一个设备准备好接收,另一个设备才继续发送,此时设置硬件流控制,就可以防止其中一个发送太块,导致另外一个没有接收导致数据丢失的问题),DMA(转运数据),智能卡,IRDA(红外光通信),LIN(局域网通信);

使用特权

评论回复
14
键盘手没手|  楼主 | 2024-1-31 12:59 | 只看该作者
4.2USART串口外设的结构图


过程分析:TX,RX分别是接收和发送引脚,通过DR寄存器,硬件上分为两部分TDR发送寄存器和RDR数据接收寄存器组成;

使用特权

评论回复
15
键盘手没手|  楼主 | 2024-1-31 13:02 | 只看该作者
剩下的三个引脚是智能卡和IrDA通信的引脚;

我们需要发送数据时候,操作TDR发送数据寄存器(只写),当我们读取数据时候,通过RDR接收数据寄存器(只读),我们进行写操作,此时数据会被写入TDR中,然后检测发送移位寄存器内是否有数据,如果没有,那么TRD中的数据会立刻转移到发送移位寄存器中,然后置标志位TXE(发送寄存器为空)为1,表示转运完成,然后新的数据会装载在TRD中,此时数据还没有发送出去,之后移位寄存器中的数据,在发送控制器的作用下,向右移位(低位先行),一位一位的对应数据帧的时序,把数据输出到TX引脚,通过TX发送出去,当数据移位完成后,新的数据就会再次自动从TDR发送到移位寄存器里来,如果当前移位还没有完成,TDR数据就会进行等待,直到移位完成;有了TRD和移位寄存器的双重缓存,可以保证连续发送数据,数据帧不会有空闲;

使用特权

评论回复
16
键盘手没手|  楼主 | 2024-1-31 13:02 | 只看该作者
我们需要接收数据时候,数据从RX段输入,到接收移位寄存器中,在接收器控制下,一位一位的读取RX电平,先放在最高位,然后移位8次,接收一个字节(从高位到低位),当一个字节的移位完成后,这个字节的数据就会整体转移到RDR接收数据寄存器中,转移过程中也会置一个标志位RXNE(接收寄存器非空),之后可以通过读取寄存器获取值;

使用特权

评论回复
17
键盘手没手|  楼主 | 2024-1-31 13:02 | 只看该作者
发送控制器,控制发送移位寄存器,硬件数据流控制,又称流空,防止数据丢失或覆盖,nRTS是请求发送,是输出脚,nCTS用于接收其他设备的nRTS(n低电平有效)

使用特权

评论回复
18
键盘手没手|  楼主 | 2024-1-31 13:03 | 只看该作者
原理:发送设备的TX引脚接入接收设备的RX引脚,同时接收设备的nRTS接到发送设备的nCTS上,RTS输出一个能不能接收的反馈信号,如果可以接收时,RTX置低电平,表示可以接收,如果不能接收,则置高电平表示不能接收;直到置低电平重新发送;、

同步模式:产生同步的时钟信号,配合发送移位寄存器使用,发送寄存器每移位依次,同步时钟电平跳变一个周期,时钟告诉对方,移出去一位,只支持输出,不指出输入;

用途:1.串口加时钟类似于SPI,可以于SPI兼容;

使用特权

评论回复
19
键盘手没手|  楼主 | 2024-1-31 13:04 | 只看该作者
2.可以做自适应波特率;原理:当接收设备不知道发送设备的波特率,可以通过测量是时钟周期来计算波特率;


使用特权

评论回复
20
键盘手没手|  楼主 | 2024-1-31 13:04 | 只看该作者
唤醒单元:一般串口只支持点对点通信,而对于多设备通信,即一根总线上挂在多个设备,想和某个设备通信,只需要进行寻址,确定通信对象后,在进行数据收发;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

1180

帖子

0

粉丝