
不知道大家有没有发现一个现象:不管你用的是咱们现在的ARM Cortex-M系列,还是经典复古的51单片机,甚至是某些极其小众的架构,你几乎总能在那密密麻麻的引脚中,找到那两个熟悉的标识——TX 和 RX。

这就引出了一个非常有趣的问题:在通信技术如此发达的今天,为什么所有单片机,几乎像约定好了一样,都要带上这个看似“古老”的串口通讯功能?
今天,咱们就围绕这一主题来聊一聊。
011
咱们说的“串口”,通常指的是异步串行通信,也就是常说的UART。它不是那些复杂的总线,硬件上非常简单:
只需要两根数据线:TX(发送线)和 RX(接收线)。
一根公共地线:确保双方电压基准一致。
就这么三根线,就能实现数据的全双工收发(可以同时收和发)。这种硬件上的极简,带来了第一个,也是最重要的优势:成本极低。

02
在很多情况下,串口通信就是咱们的生命线和最后的救命稻草。这主要体现在两个至关重要的功能上。
1、 调试利器
咱们硬件工程师和软件工程师,谁没靠printf
找过问题呢?通过串口在电脑上打印出来,就能很快定位大概是哪里出了问题,便于调试和排查错误。
虽然现在有更高级的调试工具,比如JTAG或SWD,可以进行单步调试、查看内存,功能非常强大。但是:
串口是“无侵入”的:它不需要像仿真器那样暂停CPU,可以实时观察系统在真实运行状态下的数据流和日志。
简单直接:接上USB转TTL模块,打开串口助手,立马就能用。而仿真器的驱动、配置可能有时候就能折腾你半天。
在很多对实时性要求高的场景,或者是在调试操作系统任务调度、中断处理时,串口打印往往是唯一可靠、不干扰系统运行的调试手段。
2、ISP下载利器
很多单片机都支持通过串口进行ISP。ISP的意思是“在系统编程”,简单说就是通过串口给空白的或者已经焊在板子上的单片机下载程序。

串口ISP是你的最后一根救命稻草。因为实现串口ISP的Bootloader程序,通常是固化在单片机内部一块受保护的存储区的,你一般无法直接修改该区域的代码。只要芯片没物理损坏,通过特定的引脚电平组合(比如拉低某个引脚再复位),就能唤醒这个Bootloader,然后通过串口“唰唰唰”地把新的、正确的程序灌进去,让设备“起死回生”。
对于厂商而言,保留串口ISP,就意味着预留了一个可靠的、成本低廉的恢复手段。这极大地降低了售后支持和生产的复杂度与成本。
3、协议简单,资源占用少
有人可能会说,现在单片机性能这么强,集成度这么高,SPI速度能上几十M,I2C也用得广,为啥不把它们作为标配,反而守着这个“慢吞吞”的串口呢?
实现一个串口通信,对于单片机内核来说,负担非常小。通常只需要一个波特率发生器和一个数据移位寄存器。这意味着它不占用大量的CPU资源,中断处理也简单。

相比之下,像USB、Ethernet这类高速复杂通信,需要专用的MAC层控制器和大量的FIFO缓冲区,硬件实现成本高,软件协议栈复杂,不是所有低成本单片机都愿意承担的。
串口,是在功能、性能和成本之间的最佳平衡点。
4、 很通用
串口是一种对等通信。它没有严格的主从之分,通信双方是平等的。它的数据格式(起始位、数据位、停止位、可选的校验位)是通用的、公开的。
这种通用性带来了巨大的生态优势:
模块连接的“万能钥匙”:正如我们开篇提到的,市面上绝大多数的蓝牙模块、Wi-Fi模块、4G/Cat.1模块、GPS模块、LoRa模块,以及很多传感器、显示屏、电表等等,它们与主控MCU通信的首选接口,默认都是串口(通常是TTL电平或RS232/RS485)。你几乎可以认为,串口是嵌入式世界模块之间的通用语言。

跨平台通信的桥梁:你可以用串口让一个8位的51单片机,与一个64位的ARM Linux处理器通信。因为它们都理解并遵循这个简单的、基于字节流的异步串行协议。这种跨平台能力是很多其他总线难以企及的。

5、性能够用
串口速度不算快,常见的波特率从9600到115200,再到更高的几Mbps。但对于绝大多数人机交互(如调试信息)、设备控制、中低速传感器数据采集等场景,这个速度已经完全“够用”了。

所以,下次当你看到TX和RX那两个引脚时,你会明白,它们承载的不仅仅是一串0和1的数据流,更是一份简单、可靠与通用的通信方式。

