本内容包括RS232、RS485与RS422串口、优缺点、针脚定义介绍,所用集成的介绍与其相关电路,验证串口好坏与波特率实测,STM32的URAT与单片机串口调试的几个小招数等。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易!
目录:
一、RS232、RS485与RS422介绍
1、RS422/RS232/RS485简述
2、RS232/RS485/RS422电平
1)RS232电平 2)RS485、RS422电平
3、传输方式
1)RS232传输方式 2)RS422/RS485传输方式 3)消除通讯线的差共模干扰
二、RS232/RS485优缺点及针脚定义
1、RS232优缺点
2、RS485优缺点
3、DB9针脚定义
4、USB转RS232
三、芯片介绍与相关电路
1、SP3232EEN与SP232EEN区别
1)两者实物图片 2)检测电路 3)检测结果 4)MCU与设备通讯(通过串口芯片或直连)
2、SP485EE电路形式
1)芯片简介 2)一般应用电路 3)带隔离的RS485电路
3、RS232转RS485电路
1)电路图 2)无源转换原理 3)RS485接口保护电路
4、USB转串口(RS232)电路图
1)PL2303连接电路 2)CH341连接电路
四、验证串口好坏与波特率实测
1、验证串口好坏
2、解决COM串口被占用
3、STM32串口1只能发不能收
4、波特率测试
1)实验方法 2)两种波特率示波器实测 3)总结
五、单片机串口的几个小招数
1、函数发生器当串口发送器用
2、验证串口远距离传输的可靠性和信号与传输媒介的适配性
3、用同步头初始实现波特率自适应和判断数据包起始
4、虚拟串口
六、STM32单片机USART中RTS、CTS的作用与意义
1、USART的RTS、CTS介绍
2、STM32硬件流控配置
七、串口监控
1、软件监控Serial Monitor
2、串口监控线的制作
附录
1、波特率与字节传输速率计算
2、更改电脑串口号
一、RS232、RS485与RS422介绍
1、RS422/RS232/RS485简述
EIA-422(过去称为RS-422)是一系列规定采用4线、全双工、差分传输、多点通信的数据传输协议。它采用平衡传输、单向/非可逆,有使能端或无使能端的传输线。
和RS-485不同的是EIA-422不允许出现多个发送端而只能有多个接收端。硬件构成上EIA-422(RS-422)相当于两组EIA-485(RS-485),即两个半双工的EIA-485(RS-485)构成一个全双工的EIA-422(RS-422)。
RS-422差模传输,故其抗干扰能力强,能传1200米,RS232最多传输15米。
2、RS232/RS485/RS422电平
1)RS232电平
逻辑1(MARK检验位固定为1) | -3V~-15V |
逻辑0(SPACE检验位固定为0) | +3V~+15V |
介于-3V~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。
------------------------------
2)RS485、RS422电平
RS485电平和RS422电平由于两者均采用差分传输(平衡传输)的方式,所以它们的电平方式,一般有A、B两个引脚。
发送端AB间的电压差:
+2V~+6V | 逻辑1 |
-2V~-6V | 逻辑0 |
----------------
接收端AB间的电压差:
大于+200mV | 逻辑1 |
小于-200mV | 逻辑0 |
----------------
逻辑1 | B > A的状态 |
逻辑0 | A > B的状态 |
AB之间的电压差不小于200mV。
3、传输方式
单工、半双工和全双工通信定义:
单工是指在通信过程的任意时刻,信息只能由一方A传到另一方B的单向传输;半双工是指在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。全双工指在任意时刻,信息既可由A传到B,又能由B传A的双向传输。
RS232:3线制、全双工、点对多主从,最高传输速率20Kbps,项目应用:电力-DTU基础讲解与配置汇总。
RS485:2线制、半双工、点对点,最高传输速率10Mbps,项目应用:ModBus RTU-上位机与PLC通信。
RS422:5线制、全双工、点对多主从,最高传输速率10Mbps,项目应用:三菱PLC-信捷人机通信(编程)。
----------------
RS232与RS485同为异步数据传输方式,都是用于数字信号的传输,仅仅是传输的方法不同。以传输一个8位二进制数值“01001000”为例说明。
------------------------------
1)RS232传输方式
由于RS232采用三线制传输分别为TXD、RXD、GND,其中TXD为发送信号,RXD为接收信号。
在RS232中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”,为信号线对GND电压为-5V~-15V;逻辑“0”,为信号线对GND电压为 +5V~+15V。理论上说,当要发送“01001000”这个数据时,在TXD信号线上应该测量到的波形为:
之所以说是理论上,是因为在异步数据传输时,要增加起始位、校验位、结束位。
------------------------------
2)RS422/RS485传输方式
采用4线差分传输,发送数据线为T+\T-,接收数据线为R+\R-。
在RS422总线中:数据“1”以两线间的电压差为+2V~+6V表示;数据“0”以两线间的电压差为-2V~-6V表示。理论上说,当要发送“01001000”这个数据时,在T+/T-直接的差值在信号线上应该测量到的波形为:
也就是说,RS232的数据是TXD与GND之间的电压代表数据,而RS422的数据是T+与T-之间的电压代表数据。差分信号抗干扰性强,所以RS422更加适合于远距离传输。
RS485是RS422的半双工版本,即T+/T-与R+/R-不同时存在,传输线只有两根,当发送信号时切换为T+/T-,当接收信号时,切换为R+\R-。至于传输的方式与RS422一致。
------------------------------
3)消除通讯线的差共模干扰
485通信线由两根双绞的线组成,它是通过两根通信线之间的电压差的方式来传递信号,因此称之为差分电压传输。
差模干扰在两根信号线之间传输,属于对称性干扰。消除差模干扰的方法是在电路中增加一个匹配电阻,并采用双绞线。
共模干扰是在信号线与地之间传输,属于非对称性干扰。消除共模干扰的方法:
①采用屏蔽双绞线并有效接地;
②强电场的地方还要考虑采用镀锌管屏蔽;
③布线时远离高压线,更不能将高压电源线和信号线捆在一起走线;
④采用线性稳压电源或高品质的开关电源(纹波干扰小于50mV)。
----------------
485总线要采用手拉手结构,而不能采用星形结构。星形结构会产生反射信号,从而影响到485通信。总线到每个终端设备的分支线长度应尽量短,一般不要超出5米。分支线若未接终端,会有反射信号,对通讯产生较强的干扰,应将其去掉,最好在RS485设备两头接有120R终端电阻。
采用增加一个RS485分配器。可以有效地将星形连接转换为符合RS485工业标准所规定的连接方式,从而避免产生问题,提高通信可靠性,如图所示。
二、RS232/RS485优缺点及针脚定义
电路中常用DB9形式连接,管脚定义为2(RXD)、3(TXD)、5(GND),记忆为2R+3T = 5G(2G接收3G发送的值为5G)。因此习惯的把RS232接口叫做DB9。
市场上把公头的接插件叫做DR**,母头叫做DB**,比如我们电脑上的串口,在市场上叫做DR9,不是DB9,很多人都误叫做DB9,实际上DB9是把两个DR9互相连接在一起的接口。一般教材或文章中,大家常常把所有的串口设备接口都统一叫做RS232接口。
1、RS232优缺点
由于RS232接口标准出现较早,具有以下特点:
接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
传输速率较低,异步传输时,波特率20Kbps。
接口使用一根信号线和一根信号返回线而构成共地的传输形式,容易产生共模干扰,所以抗干扰性弱。
传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。
接收数据的发送数据分开,可以同时接收和发送数据,异步全双工传输。
2、RS485优缺点
针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS485就是其中之一,它具有以下特点:
RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。
RS485的数据最高传输速率为10Mbps。
RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
RS485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS232接口在总线上只允许连接1个收发器,即单站能力。而RS485接口在总线上是允许连接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS485接口方便地建立起设备网络。
RS485接口组成的异步半双工网络,一般只需二根连线(叫做AB线),不接地线,所以RS485接口均采用屏蔽双绞线传输。
3、DB9针脚定义
4、USB转RS232
三、芯片介绍与相关电路
1、SP3232EEN与SP232EEN区别
1)两者实物图片
------------------------------
2)检测电路
------------------------------
3)检测结果
SP3232EEN比SP232EEN通信波特率要高,SP3232EEN可以在115200及以上;SP232EEN在19200及以下。
------------------------------
4)MCU与设备通讯(通过串口芯片或直连)
MCU与DCE通讯可以有两种方式,如下图。
若MCU与DEC之间的电平不同,比如MCU 3.3V、DEC 1.8V,那么就需要电平转换, 祥见“电平转换与数字隔离”,这里可以通过TXB0108RGYR专用芯片转换。考虑到成本问题,也可以是三极管组成的简单电平匹配电路,如下图所示。
2、SP485EE电路形式
1)芯片简介
SP485EEN/SP3485EEN为SOIC封装,SP485EEP/SP3485EEP为PDIP封装。其中SP485EE一般5V电源,SSP3485EE可用在3.3V供电场合。
功能框图
SP485EE引脚定义
SSP3485EE引脚定义
----------------
接收器特性 RE为低电平时,SSP3485 进入接收器模式。功能真值表如下图所示:
----------------
驱动器特性 DE为高电平时,SP3485进入驱动器模式。功能真值表如下表所示:
------------------------------
2)一般应用电路
上图中,TX、RX引脚均需要上拉电阻,这一点特别重要。
接收:默认没有数据时,TX为高电平,三极管Q1导通,RE为低电平使能,RO收数据有效,RS485为接收态。
发送:发送数据1时,TX为高电平时,三极管导通,DE为低电平,此时收发器处于接收状态,驱动器就变成了高阻态,也就是发送端与A\B断开了,此时A\B之间的电压就取决于A\B的上下拉电阻了,A为高电平、B为低电平,也就成为RS485的逻辑1了。
发送数据0时,TX为低电平,三极管截止,DE为高电平,驱动器使能,此时正好DI接地,也就是低电平,驱动器也就会驱动输出B为1,A为0,也就是所谓的RS485的逻辑0了。
理解自收发的作用,关键是要理解RE和DE的作用,尤其是DE为0时,驱动器与A\B之间就是高阻态,也就是断开状态,而且A/B都要有上下拉电阻。然后就有了逻辑0-1间的切换。所以很巧妙,但这里也有一个很明显的bug,只适用于“半双工”,如果是全双工就不行了,因为TX为1时,接收使能,此时从机如果回复数据就乱了。
----------------
基本原理理解了,除了使用三极管实现,还可以使用施密特触发器,也就是所谓的“非”门来显现,如下图所示:
基本原理与三极管相同,TX为1时,经过施密特触发器进行“非”运算,DE为0,则接收使能,驱动器呈高阻态,此时A/B的电平就是上下拉电阻的电平,也就是逻辑1。TX为0时,DE为1,发送使能,由于DI接地,也就是0,A/B输出也是0。
------------------------------
3)带隔离的RS485电路
3、RS232转RS485电路
由于有的设备是232接口的,有的是485接口的。如果有一台232接口的设备与一台485接口的设备通信,那就需要一个RS232/RS485转换器,把232接口的设备的232信号转换成485信号,然后再与485接口的设备通信。如是两台232接口的设备要进行远距离的通信,那只要加上两个RS232/RS485转换电路就可以了。
市场上所谓的“无源RS232/RS485转换器”采用从计算机串口偷电技术,一般多用于负载少,通信距离短的485总线网络。
而“有源RS232/RS485转换器”在电路原理图与前者差不多,只是电源部分有所改动而己。有源的转换器相互间不共地,比无源的转换器抗干扰性能更好。说明如下。
------------------------------
1)电路图
------------------------------
2)无源转换原理
RS232/RS485转换器主要包括了电源、232电平转换、485电路三部分。本电路的232电平转换电路采用了NIH232或者也可以直接使用MAX232集成电路,485电路采用了MAX485集成电路。为了使用方便,电源部分设计成无源方式,整个电路的供电直接从PC机的RS232接口中的DTR(4脚)和 RTS(7脚)窃取。PC串口每根线可以提供大约9mA的电流,因此两根线提供的电流足够供给这个电路使用了。
经实验,本电路只使用其中一条线也能够正常工作。使用本电路需注意PC程序必须使串口的DTR和RTS输出高电平,经过D3稳压后得到VCC,经过实际测试,VCC电压大约在4.7V左右。因此,电路中要说D3起的作用是稳压还不如说是限压功能。
MAX485是通过两个引脚RE(2脚)和DE(3脚)来控制数据的输入和输出。当RE为低电平时,MAX485数据输入有效;当DE为高电平时,MAX485数据输出有效。在半双工使用中,通常可以将这两个脚直接相连,然后由PC或者单片机输出的高低电平就可以让MAX485在接收和发送状态之间转换了。
由于本电路 DTR和RTS都用于了电路供电,因此使用TX线和HIN232的另外一个通道及Q1来控制MAX485的状态切换。平时NIH232的9脚输出高电平,经Q1倒相后,使MAX485的RE和DE为低电平而处于数据接收状态。当PC机发送数据时,NIH232的9脚输出低电平,经Q1倒相后,使 MAX485的RE和DE为高电平而处于数据发送状态。
------------------------------
3)RS485接口保护电路
4、USB转串口(RS232)电路图
1)PL2303连接电路
------------------------------
2)CH341连接电路
四、串口问题与波特率实测
1、验证串口好坏
2、解决COM串口被占用
很多COM端口都显示在使用中,重启都无法关掉,但实际只使用了一个串口。
WIN+R输入regedit进入注册表编辑器。
打开注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/COM Name Arbiter,把ComDB删除后重新尝试即可!(注:这样会重建所有COM口)。重启电脑后,发现没有效果。
最终解决方法:
卸载不需要的设备,如下图。
3、STM32串口1只能发不能收
1)串口接收中断没有打开。
2)一个串口使用两个串口芯片,如下图所示。此时两个RXD相互干扰,造成不能接收。
4、波特率测试
1)实验方法
将板子上的串口初始化之后,循环发送数据。
while(1)
{
USART_SendData(USART1,0xAA);
}
之后每测量一次改一次波特率。串口初始化的方法,可参考USART1 Init。
------------------------------
2)两种波特率示波器实测
(1)9600
----------------
(2)115200
------------------------------
3)总结
波特率是脉冲频率的二倍。一个波形一秒钟发送的次数是多少,波特率就是多少。比如波特率是9600时候,测得的脉冲宽度是104.2uS,波形频率是4.8k,4.8k*2 = 9600bps。看完上面的图,再看看理论知识:波特率,说的还真对。
五、单片机串口的几个小招数
1、函数发生器当串口发送器用
若要调试串口,只有一块板,计算机又不在手边,你可以用函数发生器器当串口发送器来用,如你的波特率是9600,那你把函数发生器频率调到9600/2 = 4800Hz上输出TTL电平直接到RXD上就行了,如果是RS232接口,你频率不变就选函数发生器双极性(交流输出)就是了,注意电平有峰峰值12VPP就够了,此时你的单片机收到数据必须是55H,你可以用MOV P1,SBUF,在P1上去测电压,这样没显示也可测试串口了。理论依旧:
55H = 01010101 串口起始位是0,先发55H最低位,于是一帧就是0(启始)101010101(停止)................0(启始)101010101(停止)......正好是1/2波特率的方波。
2、验证串口远距离传输的可靠性和信号与传输媒介的适配性
可以这样来做:发送00H 0FFH 55H,如果这三个值都能正确接收,那网络一定能可靠传输,这就是以点代面的测试方法。
理由:00H 0FFH是最宽的脉冲和电平(代表能量)最大/最小的脉冲,用信号系统话说他们代表是直流,而55H是最窄脉冲,它代表是最高频和能量中间值.既然最低的能过,最大也能过,最宽能过最窄也能过,大能量(抗干扰强)低能量(代表抗干扰弱)中能量也能过,你会相信中间的和不垃圾的过不了吗!
3、用同步头初始实现波特率自适应和判断数据包起始
同步头用谁?------7FH,且开始同步时连续发送!
看7FH的发送 0起始11111110---1停止
瞧011111110多对称!当你收到两个0中间夹了连续个1的数据后,只要用连续1的时间除以0的持续时间 = 7,说明这就是同步头了,且一个标准码元持续时间就是码元0的持续时间,其波特率 = 1/(0码元持续时间)。
4、虚拟串口
关于虚拟串口使用的详细内容:大彩触摸屏与单片机通讯之1)设置VSPD软件与电力-ModBus_RTU通讯规约2之六、VSPD9.0调试ModBus。
六、STM32单片机USART中RTS、CTS的作用与意义
1、USART的RTS、CTS介绍
USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其它引脚:USART_CK、USART_RTS、USART_CTS,如下图:
ARM处理器USART基本上都具有硬件流控功能,也就是说一般都有RTS、CTS引脚(51、STM8等功能简单的处理器,很少有串口硬件流控功能)。
RTS:是模块的输入端,用于MCU通知模块,MCU是否准备好,模块是否可向MCU发送信息,RTS的有效电平为低。
CTS:是模块的输出端,用于模块通知MCU,模块是否准备好,MCU是否可向模块发送信息,CTS的有效电平为低。
RTS(Require ToSend发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS (Clear ToSend发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。
2、STM32硬件流控配置
七、串口监控
1、软件监控Serial Monitor
Serial Monitor软件的下载移步“Serial Monitor(串口数据监控_Win64位可用)”。
2、串口监控线的制作
附录
1、波特率与字节传输速率计算
以波特率115200 = 115200(bit/S)为例说明:
没有校验位,就应该除以 10(起始位1、数据位8、停止位1),得到的是每秒字节数。
波特率115200 = 115200(bit/S) = 11520(Byte/S)
再除以 1024,就是每秒 KB 数:波特率115200 = 115200(bit/S) = 11.25(KB/S)
有一位奇偶校验位,就应该除以 11(起始位1、数据位8、停止位1、奇偶校验位1),得到的是每秒字节数。
波特率115200 = 115200(bit/S) = 10.27(KB/S)
2、更改电脑串口号
右键,属性。
端口设置,高级。
点击 "COM 端口号" 下拉框,从中选择一个未被使用端口,确定。
回到设备管理器,COM端口号更改生效。
不过此时打开端口,一般都会提示打开错误,重新插拔一次端口设备即可被使用。
无知(没有认知)从某种意义来说是一种罪,盲目的努力也是在消耗生命,资源、选择与方法比努力更为重要。 觉得不错,动动发财的小手点个赞哦!