去年有一阵子,手里有好几块板子。有 Orange Pi Zero/Zero Plus,Nano Pi,也有 Rock Pi,甚至还试了华硕的一块 TinkerBoard。在系统引导出现问题的时候,一开始束手无策,到后来才经高人指点,说有一种东西叫 TTL 串口,可以把板子上的针脚和电脑的 USB 连起来,然后就可以在串口程序里观测到板子启动早期的很多输出信息。一直以来对串口的认识就是电脑上的九针 D 口,TTL 串口的出现吹皱了一池春水。
这几天看资料,又看到了 UART,这个东西也是很久以前遇到又放开了的,例如 MTK 解决方案的手机,有很多的里面都有 UART 相关的设置项,当时看上去和串口通讯也是有关联的。于是想把这些略微串一下。
UART 与 COM
嵌入式里面说的串口,一般是指 UART 口, 但是我们经常搞不清楚它和 COM 口的区别, 以及 RS232、TTL 等的关系。 实际上 UART、COM 指的是物理接口的形式(硬件),而 TTL、RS-232 是指的电平标准(电信号)。
UART 有 4 个针脚(也就是 pin),分别为 VCC、GND、RX、TX,用的 TTL 电平,低电平为 0(0V),高电平为 1(3.3V+)。
COM 口是 PC 上面常用的外设接口,9 个针脚, 用的 RS232 电平。它是负逻辑电平,其定义 +5~+12V 为低电平,而 -12~-5V 为高电平。
UART 的特征
UART 控制器在嵌入式系统里面一般都跟 CPU 做在一起。像飞思卡尔的 IMX6 芯片,有多个 UART 控制器。
针脚介绍(COM 口常用的也是这几个):
- VCC:供电针脚。一般是 3.3v,板子上若没有过电保护,这个 pin 一般不接更安全;
- GND:接地。有的时候 rx 接受数据有问题可以接上这个 pin,一般也可不接;
- RX:接收数据 pin;
- TX:发送数据 pin。
调试的时候多数情况下只引出 rx,tx 即可。比如调试 GPS 模块,IC 数据直接通过 UART 上报,直接用两条线引出了 rx、tx,连上串口转 USB 小板,电脑可以从串口直接获取数据,这样就跳过了开发板。
使用方法
用 UART 口进行调试,数据要传到电脑上分析就要匹配电脑的接口,COM 口或 USB 口(最终在电脑上其实是一个虚拟的 COM 口),但是要想连上这两种接口都要需要进行硬件接口转换和电平转换。
如果连接电脑 COM 口,需要一个类似下图的转换小板,它实现了 TTL 电平和 RS232 电平的互转。
如果要连接电脑 USB 接口,则需要类似下面的小板。它实现了 TTL 电平和 USB 电平的转换,这种现在使用的较多。
电路图和连接如下,通常上面有个专门转换芯片。
总结
1、串口、COM 口是指的物理接口形式(硬件)。而 TTL、RS-232、RS-485 是指的电平标准(电信号);
2、接设备的时候,一般只接 GND RX TX。不会接 VCC 或者+3.3v 的电源线,避免与目标设备上的供电冲突;
3、PL2303、CP2102 芯片是 USB 转 TTL 串口 的芯片,用 USB 来扩展串口(TTL 电平);
4、MAX232 芯片是 TTL 电平与 RS232 电平的专用双向转换芯片,可以 TTL 转 RS-232,也可以 RS-232 转 TTL;
5、TTL 标准是低电平为 0,高电平为 1(+5V 电平);RS-232 标准是正电平为 0,负电平为 1(±15V 电平);
6、RS-485 与 RS-232 类似,但是采用差分信号负逻辑(略)。
其他
串口进行通信的方式有两种:同步通信方式和异步通信方式。
- SPI(Serial Peripheral Interface:串行外设接口);
- I2C(INTER IC BUS:IC 间总线),一(host)对多,以字节为单位发送;
- UART(Universal Asynchronous Receiver Transmitter:通用异步收发器), 一对一,以位为单位发送。
更新
- CSDN 太小气,不让外链图片,所以本地化了一下。
永久链接
当年调试机顶盒和电视,这种串口可没少用
永久链接
兄弟你之前搞软硬件一体化解决方案的?