「一文搞定」串口,mysql 存储过程菜鸟教程
一、串口
串行接口简称为串口,也叫串行通信接口,一般也叫 COM 口,这是一个统称,采用串行通信的接口都叫作串口,串口是一个硬件接口。
有公头和母头之分,大家可以自行记忆,左边有孔的为母头,另外一个就为公头。

公头和母头
串行:计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。
并行:在串行端口上通过一次同时传输若干位元数据的方式进行通信,所以并行的速度比串行快。

串行和并行
二、UART
UART 是 Universal Asynchronous Receiver/Transmitter 的简称,意为通用异步收发传输器,UART 包含 TTL 电平的串口和 RS-232 电平的串口,使用 UART 通信的双方设备都需要遵从 UART 协议。
三、TTL 电平
TTL 是 Transistor-Transistor Logic 的简写,是一种电平逻辑,晶体管-晶体管逻辑。
逻辑 1 代表高电平,连接到电源 VCC,逻辑 0 为低电平,连接到电源地。
逻辑 1,高电平,VCC(3.3V/5V)
逻辑 0,低电平,GND(0V)
TTL 有电压范围,分为输出高、低电平和输入高、低电平,输出高电平用 V O H V_{OH}VOH?表示,输出低电平用 V O L V_{OL}VOL?表示;输入高电平用 V I H V_{IH}VIH?表示,输入低电平用 V I L V_{IL}VIL?表示。
对 TTL 电平的器件来说,当输入电压高于 2V 时,才会被识别为逻辑 1,输入的低电平低于 1.2V 时,才会被识别为 0,这是为什么输出高电平 2.4V,高于 2V;输出低电平 0.8V,低于 1.2V 的原因所在。如下是标准 TTL 电平,TTL 有很多类型,电压有所区别。
V O H > 2.4 V , V O L < 0.8 V V_{OH}>2.4V,V_{OL}<0.8VVOH?>2.4V,VOL?<0.8V
V I H > 2.0 V , V I L < 1.2 V V_{IH}>2.0V,V_{IL}<1.2VVIH?>2.0V,VIL?<1.2V
玩过 51 单片机的小伙伴都用过 CH340G 模块,用来下载 HEX 文件,这个模块的作用就是将 USB 转成 TTL 电平,一般单片机的电平都是 TTL 电平,模块的内部芯片是 CH340T,ST 官方推荐。

USB转TTL模块
使用 CH340T 芯片,USB 转 TTL 电平的电路原理图。

USB转TTL原理图
TTL 电平的器件之间通信,只需要三根信号线:TXD、RXD 和 GND,和单片机接法很简单,3.3V 单片机就接 3.3V,5V 单片机就接 5V,如果单片机有单独的供电,3.3V 和 5V 都不接。

USB转TTL模块与单片机的连接
四、USB
USB 是 Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在 PC 领域的接口技术,特点是传输速度快,支持热插拔,可连接多个设备。
我们在很多地方可以看到 USB 的身影,鼠标,键盘,手机充电器,现在几乎所有的电子充电设备都是 USB 接口,如下是各个 USB 的物理接口。

USB接口分类
1MB/s=8Mbps(1 个 Byte 等于 8bit)
USB1.0 低速(Low Speed) 传输速率为 1.5Mbps;
USB1.1 全速(Full Speed) 传输速率为 12Mbps;
USB2.0 高速(High Speed) 传输速率为 480Mbps;
USB3.0 超速(SuperSpeed) 传输速率为 5Gbps;
USB3.1 Gen2 超高速(SuperSpeed+) 传输速率为 10Gbps;
最常见的的 Type-A 型 USB 接口定义如下。
| Pin# | Name | 颜色 |
| --- | --- | --- |
| 1 | VBUS/+5V | 红色 |
| 2 | D-/Data-/DM | 白色 |
| 3 | D+/Data+/DP | 绿色 |
| 4 | GND | 黑色 |

Type-A型接口
五、RS-232
RS-232 接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始编号全称是 EIA-RS-232(简称 232,RS232)。它被广泛用于计算机串行接口外设连接,连接电缆和机械、电气特性、信号功能及传送过程。
RS-232 不同于 TTL 的电平逻辑,为负逻辑,负 12V 代表高电平逻辑 1,正 12V 代表低电平逻辑 0,电压也有标准范围。
高电平,逻辑 1,-15V to -3V
低电平,逻辑 0,+3V to +15
除了 TTL,RS232,还有一个 CMOS 电平标准。
V O H > 0.9 ? V C C V_{OH}>0.9*VCCVOH?>0.9?VCC,V O L < 0.1 ? V C C V_{OL}<0.1*VCCVOL?<0.1?VCC
V I H > 0.7 ? V C C V_{IH}>0.7*VCCVIH?>0.7?VCC,V I L < 0.3 ? V C C V_{IL}<0.3*VCCVIL?<0.3?VCC
下图是 DB9 公头和母头的定义,一般用的最多的是 RXD、TXD、GND,三个信号。

DB9公头和母头接口信号定义
工业场合还会用到 DB-25 的 RS232,DB9 和 DB25 接口可以转换。

DB9转DB25
USB 转 232,可以先将 USB 转换为 TTL,再将 TTL 转换为 RS232,当然市面上也有很多 USB 直接转 RS232 的线材,线材内部集成转换电路,淘宝上某 USB 转 RS232 用的两个芯片是 FT232 和 SP213。

USB转RS232线材
单片机接口一般是 TTL 电平,如果需要接 232 电平的外设,就需要加 TTL 转 RS232 的模块,转换方向是双向的。
TTL 和 RS232 电平互相转换最常用的芯片是 MAX232 和 SP3232。

TTL和RS-232转换模块
六、RS-485
RS-485 和 RS-232 一样,都是串行通信标准,现在的标准名称是 TIA/EIA-485-A,习惯称为 RS-485 标准,RS-485 弥补了 RS-232 通信距离短,速率低的缺点。
RS-485 和 RS-232 单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为 A,另一个定义为 B。
RS-485 是差分传输,一般收发器内部是一个发送器加一个收发器组成。下图是收发器典型的功能框图。
对于使能信号,字母上面加一横的为低电平有效,不加的为高电平有效。

对于发送器,有如下的真值表:
当驱动器使能引脚 DE 为逻辑高时,差分输出 A 和 B 遵循数据输入 D 处的逻辑状态。D 处的逻辑高导致 A 转为高,B 转为低。在这种情况下,定义为 V O D = V A – V B V_{OD}=V_A–V_BVOD?=VA?–VB?的差分输出电压为正。当 D 为低时,输出状态反转,B 变高,A 变低,V O D V_{OD}VOD?为负。
当 DE 低时,两个输出都变成高阻抗。在这种情况下,与 D 处的逻辑状态是不相关的。

RS-485发送器真值表
对于接收器,有如下的真值表
当接收器使能引脚 RE 逻辑低时,接收器被激活。当定义为 V I D = V A – V B V_{ID}=V_A–V_BVID?=VA?–VB?的差分输入电压为正且高于正输入阈值 V I T + V_{IT+}VIT+?时,接收机输出 R 变高。当 V I D V_{ID}VID?为负且低于负输入阈值 V I T ? V_{IT-}VIT??,接收机输出 R 变低。如果 V I D V_{ID}VID?在 V I T + V_{IT+}VIT+?和 V I T ? V_{IT-}VIT??之间,则输出不确定。
当 RE 为逻辑高或悬空时,接收机输出为高阻抗,V I D V_{ID}VID?的大小和极性无关。

RS-485接受器真值表
很多收发器的标准达到甚至超过 TIA/EIA-485A 规范,在实际使用中,以器件的 SPEC 参数为主。

TTL 转成 RS-485 很常见,收发器芯片市面上很多,比如 MAX485,用起来也很简单,一般左边接 MCU 的 GPIO,用来控制。

TTL转RS-485
RS-232 和 RS-485 之间可以转换,一个方法是 RS-232 转换成 TTL,再由 TTL 转换为 RS-485,当然也有芯片支持将 RS-232 支持转换成 RS-485,双向转换。

RS-232和RS-485转换模块
七、IIC
最后
金三银四到了,送上一个小福利!



评论