电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口
注意:关于设计芯片原理图都有,在这里讲的更多的是硬件的设计的细节,比如为什么会有这么个电阻?设计的时候要注意什么?
前置知识
USART串口
注意:在串口助手的接收模式中有文本模式和HEX模式两种模式,那么它们有什么区别?
文本模式和Hex模式是两种不同的文件编辑或浏览模式,不是完全相同的概念。
文本模式通常是指以ASCII编码格式表示文本文件的编辑或浏览模式。在文本模式下,文本文件的内容以可读的字符形式显示,包括字母、数字、符号等,这些字符被转换为计算机能够识别和处理的二进制编码。
而Hex模式则是指以十六进制编码格式显示文件内容的编辑或浏览模式。在Hex模式下,文件的内容以16进制数值的形式显示,每个字节(byte)用两个十六进制数表示,从0x00到0xFF,可以查看文件的二进制编码,包括数据、指令、标志位等信息。
因此,虽然文本模式和Hex模式都是用于文件编辑或浏览的模式,但它们的显示和处理方式不同,用途也不同。

STM32如何才能获取到陀螺仪、蓝牙器等这些外挂模的数据呢?
这就需要我们在这两个设备之间,连接上一根或多根通信线,通过通信线路发送或者接收数据,完成数据交换,从而实现控制外挂模块和读取外挂模块数据的目的。所以在这里,通信的目的是,将一个设备的数据传送到另一个设备,单片机有了通信的功能,就能与众多别的模块互联,极大地扩展了硬件系统。
下面我们分别对串口通讯协议的物理层及协议层进行讲解。
物理层
串口通讯的物理层有很多标准及变种,我们主要讲解RS-232标准 ,RS-232标准主要规定了信号的用途、通讯接口以及信号的电平标准。
使用RS-232标准的串口设备间常见的通讯结构见图 串口通讯结构图 。

在上面的通讯方式中,两个通讯设备的“DB9接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232标准”传输数据信号。 由于RS-232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL标准”的电平信号,才能实现通讯。

电平标准
根据通讯使用的电平标准不同,串口通讯可分为TTL标准及RS-232标准,见表 TTL电平标准与RS232电平标准 。

使用RS232与TTL电平校准表示同一个信号时的对比见图 RS-232与TTL电平标准下表示同一个信号 。
因为控制器一般使用TTL电平标准,所以常常会使用MAX3232芯片对TTL及RS-232电平的信号进行互相转换。
RS-232信号线
在最初的应用中,RS-232串口标准常用于计算机、路由与调制调解器(MODEN,俗称“猫”)之间的通讯 ,在这种通讯系统中, 设备被分为数据终端设备DTE(计算机、路由)和数据通讯设备DCE(调制调解器)。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。
在旧式的台式计算机中一般会有RS-232标准的COM口(也称DB9接口),见图 电脑主板上的COM口及串口线。
其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号就是使用前面讲解的RS-232标准调制的。
在这种应用场合下,DB9接口中的公头及母头的各个引脚的标准信号线接法见图 DB9标准的公头及母头接法 及表 DB9信号线说明 。

上表中的是计算机端的DB9公头标准接法,由于两个通讯设备之间的收发信号(RXD与TXD)应交叉相连, 所以调制调解器端的DB9母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用“直通型”的串口线连接起来即可, 见图 计算机与调制调解器的信号线连接 。
串口线中的RTS、CTS、DSR、DTR及DCD信号,使用逻辑 1表示信号有效,逻辑0表示信号无效。 例如,当计算机端控制DTR信号线表示为逻辑1时,它是为了告知远端的调制调解器,本机已准备好接收数据,0则表示还没准备就绪。
在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线, 直接传输数据信号,而RTS、CTS、DSR、DTR及DCD信号都被裁剪掉了。
单端信号与差分信号
单端信号与差分信号到底有什么区别? - 知乎
三种通信方式——单工、半双工和双工通信
三种通信方式——单工、半双工和双工通信
一、RS-232信号线
在最初的应用中,RS-232串口标准常用于计算机、路由与调制调解器(MODEN,俗称“猫”)之间的通讯 ,在这种通讯系统中, 设备被分为数据终端设备DTE(计算机、路由)和数据通讯设备DCE(调制调解器)。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。
基本信息
在旧式的台式计算机中一般会有RS-232标准的COM口(也称DB9接口),见图 电脑主板上的COM口及串口线.

其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号就是使用前面讲解的RS-232标准调制的。
在这种应用场合下,DB9接口中的公头及母头的各个引脚的标准信号线接法见图 DB9标准的公头及母头接法 及表 DB9信号线说明 。


上表中的是计算机端的DB9公头标准接法,由于两个通讯设备之间的收发信号(RXD与TXD)应交叉相连, 所以调制调解器端的DB9母头的收发信号接法一般与公头的相反,两个设备之间连接时,只要使用“直通型”的串口线连接起来即可, 见图 计算机与调制调解器的信号线连接 。

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

数据发送逻辑
一般只用RX、TX、GND就可以进行数据传递了,但也有用到其他引脚的时候,其定义如下:

- A->B,A使得RTS引脚有效,表明“请求发送”数据给设备的B。
- A检测CTS引脚,CTS有效,说明B自己准备好接受数据了,才会真正开始发送数据。
- 在发送每个字符之前,都会去检测对应的CTS是否有效,如果有效,才会继续传输对应的数据,如果发现CTS无效,那么就不能发生数据了。
- 对于CTS一直有效的情况,A就一直发送数据给B,到了最后数据发送完之后,再把RTS设置为无效,表示数据已经发送完了。
- 这就是整个单个的数据发送流程。
数据帧格式

电气特性
EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了明确规定。
在TXD和RXD引脚上电平定义:逻辑1(MARK) = -3V~-15V
逻辑0(SPACE) = +3~+15V
在RTS、CTS、DSR、DTR 和DCD等控制线上电平定义:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;而介于-3~+3V之间的电压即处于模糊区电位,此部分电压将使得计算机无法准确判断传输信号的意义,可能会得到0,也可能会得到1,如此得到的结果是不可信的,在通信时候体现的是会出现大量误码,造成通信失败。因此,实际工作时,应保证传输的电平在±(3~15)V 之间。
电路设计
具有 ±15kV ESD 保护功能的 MAX3221 3V 至 5.5VRS-232 线路驱动器和接收器
以MAX3221芯片举例:


引脚说明:
(1)C1+(电荷泵倍压电容器正极)、C2+(电荷泵逆变电容器正极)、C1-(电荷泵倍压电容器负极)、C2-电荷泵逆变电容器负极):与RS232内部电路构成电荷泵电路,对RS232的输出电压进行调节,达到要求的电平。
c1正和c1负,它们分别代表了内部稳压电路所需的一个电容的正负极。同样地,c2正和c2负也是内部稳压电路所需的另一个电容的正负极。
这些电容的具体大小已经给出,我们只需按照要求和芯片手册将其正确连接到对应的管脚位置即可。关于内部稳压电路的具体细节,由于并未提供给我们,因此我们无法深入了解。但是,只要按照芯片的要求,将电容放置在靠近管脚的位置,就能确保电路的正常工作。
(2)DIN、DOUT、RIN、ROUT:用于MCU或其他具备TTL/CMOS 电平的芯片与RS232芯片通信的接口
DOUT: RS232线数据输出(到远程RS232系统)
RIN: RS232线路数据输入(来自远程RS232系统)
ROUT: 逻辑数据输出(至UART)
DIN: 逻辑数据输入(来自UART)



无法识别
MAX3221,是一个五点五伏的电源轨芯片。这意味着,无论我们输入的电源是三点三伏还是五伏,当它被转换成RS-232输出时,都会稳定在五点五伏。
这款芯片内部有一个升压电路,它的作用是将RS-232这一端的信号全部提升到五点五伏。因此,即使我们的电源是三点三或五伏,经过这个芯片处理后,TTL端出来的信号都是五点五伏。
当然,电源芯片的种类并不止这一种。有些RS-232芯片的输出电压可能会更高,比如七点几伏、八点几伏,甚至达到十伏左右。但通常,我们默认的标准是五点五伏。在实际测试中,由于各种因素,测得的电压可能会略高于或略低于五点五伏,这都是正常的。
在逻辑上,我们通常会认为正逻辑是五点五伏,而负逻辑是负五点五伏。这是因为,当芯片输出正信号时,它的电压就是五点五伏;而当输出负信号时,电压就是负五点五伏。
通常情况下,如果驱动出来的RS-232信号电压稍微偏高一点,并不会造成问题。因为理论上,只要电压不超过15伏,就不会有问题。然而,如果电压偏低,特别是在某些芯片中,可能会引发问题。例如,当RS-232的电压降低到四点几伏时,某些设备可能就无法正确识别了。
这可能是因为驱动能力不足,导致电压下降。尤其是在传输线较长、驱动能力较差的情况下,更容易出现这种问题。如果电压降低到四点几伏,虽然从RS-232的标准来看,负三三伏以上就应该被判定为有效电压,但实际情况可能会因为电压过低而无法被正确识别。
还有一个可能是PC机它的兼容性非常差。
解决这类问题的方法通常是增强芯片的驱动能力,或者选择更高的电源电压,比如九伏。当然,这并不意味着一定是芯片本身的
