嵌入式分享合集7
时间:2022-11-12 09:30:00
一、STM32串口通信基本原理
通信界面背景知识
设备之间的通信方式
一般来说,设备之间的通信方式可分为并行通信和串行通信。并行通信与串行通信的区别如下表所示。
串行通信的分类
1、按数据传输方向分为:
-
单工:数据传输只支持数据在一个方向上传输;
-
半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。
-
全双工:允许数据同时向两个方向传输。因此,全双工通信是两种单工通信方式的结合,需要独立的接收端和发送端。
2、按通信方式分为:
-
同步通信:带时钟同步信号传输。SPI,IIC通信接口。
-
异步通信:不带时钟同步信号。比如:UART单总线(通用异步收发器)。
在同步通信中,在时钟信号的驱动下,双方将在收发设备上方使用信号线传输信号进行协调和同步数据。例如,在通信中,双方通常规定在时钟信号的上下沿采样数据线。
时钟信号不用于异步通信中的数据同步。它们直接穿插一些用于同步的信号位,或包装主题数据,以数据帧的形式传输数据。为了更好地同步,双方还需要规定数据的传输速率(即波特率)。常用的波特率为48000bps、9600bps、115200bps等。
在同步通信中,数据信号传输的大部分内容是有效数据,而异步通信将包含各种数据帧标识符,因此同步通信效率高,但同步通信时钟允许误差小,一点时钟错误可能导致数据混乱,异步通信时钟允许误差大。
常见的串行通信接口
STM32串口通信基础
STM串口通信接口有两种:UART(通用异步收发器),USART(通用同步异步收发器)。对于大容量。STM32F10x分别有三个系列芯片USART和2个UART。
UART引脚连接方法
-
RXD:数据输入引脚,数据接受;
-
TXD:数据发送引脚,数据发送。
两个芯片之间的连接GND共地,同时TXD和RXD交叉连接。这里的交叉连接意味着芯片1RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样可以在两个芯片之间进行TTL电平通信。STM32与51单片机串口通信相关实例,请在此移动:STM32与51单片机串口通信实例。
若是芯片与PC除共地外,机器(或上位机)不能直接交叉连接。尽管PC机器和芯片都有TXD和RXD引脚,但通常PC通常使用机器(或上位机)RS232接口(通常是DB9包装),不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要使芯片和PC机的RS232接口直接通信,芯片的输入输出端口也需要电平转换RS232类型,然后交叉连接。
经过电平转换后,芯片串口和RS232的电平标准不同:
-
单片机电平标准(TTL电平): 5V表示1,0V表示0;
-
RS232电平标准: 15/ 13 V表示0,-15/-13表示1。
RS-设备间通信结构图如下:
因此,单片机串口与PC串口通信应遵循以下连接方式:单片机串口和上位机给出的RS电平转换电路在232口之间(如下图所示Max232芯片) 实现TTL电平与RS232电平之间的转换。STM32与PC通信实例之间,请在此移动:STM32实例-用按钮控制串口发送数据,文末附代码。
RS232串口简介
台式机电脑后面的9针接口是com口(串口) 在工业控制 上图广泛应用于数据采集,最右边的串口接口统称为RS232接口是常见的DB9封装。
只有两只脚参与通信。
-
2脚:计算机输入RXD
-
三脚:计算机输出TXD 通过2 ,3 脚可实现全双工串行异步(可同时收发) 通信
-
5脚:接地
单片机的P三口有两个复用接口RXD 和TXD。这是单片机串行通信的收发口,连接应与计算机错位TDX RDX注:单片机和RS232的电平标准不同。
单片机电平标准 TTL电平 : 5V表示1 0V表示0。
RS232的电平标准 15/ 13 V表示1 -15/-13 表示0。
所以 单片机与计算机串口通信应遵循以下连接方式:
在单片机与上位机给出的RS电平转换电路在232口之间(上图中Max232芯片) 实现TTL电平与RS232电平之间的转换,PC串口与单片机串口连接方式图:
注意这两个DB9:DB91在电脑上 DB92焊接在单片机实验板上。
这里的交叉连接意味着 DB91的RXD连着DB92的TXD。
DB92的RXD连着DB91的TXD如果计算机没有这样的交叉连接RS232口 只有USB如下图所示,可用串口转接线将串口转出。
此时,串口驱动程序需要安装在计算机上位机上。
注意,这个驱动程序驱动PL2303芯片(在上图的大头) 使得RS232信息转换成USB信息。
下图为上图内部结构:
whaosoft aiothttp://143ai.com用ttl转uart使用方便 只是用了rx tx
使用串口通信比USB简单,因为串口通信没有协议,使用方便简单。
STM32的UART特点
-
全双工异步通信;
-
分数波特率发生器系统提供精确的波特率。发送和接受共用的可编程波特率最高可达4.5Mbits/s;
-
可编程数据字长度(8位或9位);
-
可配置的停止位(支持1或2位停止位);
-
可配置使用DMA多缓冲器通信;
-
单独的发送器和接收器使能位;
-
检测标志:
① 接受缓冲器
②空发送缓冲器
③传输结束标志;
-
多个带标志的中断源触发中断;
-
其他:校验控制,四个错误检测标志。
串口通信过程
STM32中UART参数
串口通信的数据包由发送设备发送TXD接口传输至接收设备RXD接口、通信双方的数据包格式通信双方的数据包格式应一致。
STM串口异步通信需要中需要定义的参数:起始位、数据位(8位或9位)、奇偶验证位(9位)、停止位(1、15位、2位)、波特率设置。相关文章推荐:学习STM32单片机,绕不开串口。
UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位 8位数据位 1位奇偶校准位(可选) 一个停止位。如下图所示:
奇偶校验位分为奇偶校验和偶校验,是一种简单的数据误码校验方法。奇偶校验是指每帧数据中包括数据位和奇偶校验位在内的所有9个位中的1个必须是奇数;偶校验是指每帧数据中包括数据位和奇偶校验位在内的所有9个位中的1个必须是偶数。
除了奇怪的校验(odd)、偶校验even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。 0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。
UART(USART)框图
这个框图分成上、中、下三个部分。本文大概地讲述一下各个部分的内容,具体的可以看《STM32中文参考手册》中的描述。
框图的上部分,数据从RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;数据从CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。
然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?
这就到了框图的下部分,在接收移位寄存器、发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号,但是在串口内部,是提供了时钟信号来进行控制的。而接收器时钟和发送器时钟有是由什么控制的呢?
延庆川北小区45孙老师 收卖废品垃圾破烂炒股 废品孙
可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个波特率发生器。同时也可以看到接收器时钟(发生器时钟)的计算方法、USRRTDIV的计算方法。
二、MOS管驱动电路
MOS管因为其导通内阻低,开关速度快,因此被广泛应用在开关电源上。而用好一个MOS管,其驱动电路的设计就很关键。下面分享几种常用的驱动电路。
1 电源IC直接驱动
电源IC直接驱动是最简单的驱动方式,应该注意几个参数以及这些参数的影响。
①查看电源IC手册的最大驱动峰值电流,因为不同芯片,驱动能力很多时候是不一样的。
②了解MOS管的寄生电容,如图C1、C2的值,这个寄生电容越小越好。如果C1、C2的值比较大,MOS管导通的需要的能量就比较大,如果电源IC没有比较大的驱动峰值电流,那么管子导通的速度就比较慢,就达不到想要的效果。
2 推挽驱动
当电源IC驱动能力不足时,可用推挽驱动。
这种驱动电路好处是提升电流提供能力,迅速完成对于栅极输入电容电荷的充电过程。这种拓扑增加了导通所需要的时间,但是减少了关断时间,开关管能快速开通且避免上升沿的高频振荡。
3 加速关断驱动
MOS管一般都是慢开快关。在关断瞬间驱动电路能提供一个尽可能低阻抗的通路供MOSFET栅源极间电容电压快速泄放,保证开关管能快速关断。相关推荐:MOS管驱动电路设计细节。
为使栅源极间电容电压的快速泄放,常在驱动电阻上并联一个电阻和一个二极管,如上图所示,其中D1常用的是快恢复二极管。这使关断时间减小,同时减小关断时的损耗。Rg2是防止关断的时电流过大,把电源IC给烧掉。
如上图,是我之前用的一个电路,量产至少上万台,推荐使用。
用三极管来泄放栅源极间电容电压是比较常见的。如果Q1的发射极没有电阻,当PNP三极管导通时,栅源极间电容短接,达到最短时间内把电荷放完,最大限度减小关断时的交叉损耗。
还有一个好处,就是栅源极间电容上的电荷泄放时电流不经过电源IC,提高了可靠性。
4 隔离驱动
为了满足高端MOS管的驱动,经常会采用变压器驱动。其中R1目的是抑制PCB板上寄生的电感与C1形成LC振荡,C1的目的是隔开直流,通过交流,同时也能防止磁芯饱和。