关注公众号,回复“入门资料”获取单片机入门到高级开挂教程
开发板带你入门,我们带你飞
文 | 无际(微信:2777492857)
全文约2289字,阅读大约需要 10 分钟
有没有发现,现在的MCU串口数量好像越来越多了,动不动就标配个3,4个UART。
这到底是怎么回事?是厂商闲得蛋疼,还是现在需求越来越变态?
今天,我们就来聊聊这个话题,带你从初学者的视角一步步揭开现代单片机串口数量暴增的真相。
早年的单片机,比如经典的8051,一个芯片通常就带一个串口(UART)。那时候的开发场景也很简单:接个串口调试工具,打印点日志,或者连个简单的传感器,基本就够用了。毕竟,80年代的电子设备,简单粗暴。
但时代变了。现在的单片机不再是那个只会“嘀嘀嘀”发 摩尔斯电码的简单工具,而是进化成了能同时处理多个设备通信的强大核心。串口数量的增加,正是这种进化最直观的体现。
你有没有想过,为什么现在的电子产品功能越来越复杂?从智能手表到无人机,从扫地机器人到车载系统,一个小小的单片机得同时管着传感器、通信模块、显示屏、电机驱动……这就好比从单一的功能扩展到了多任务并行,仅靠一个接口怎么能满足需求呢?
举个例子,比如我们无际单片机的项目6这种WiFi+4G+Lora报警网关。
WiFi,4G,Lora都需要用URAT跟单片机交互数据。
这时候,一个串口显然不够用,哪怕你再怎么复用IO口、写复杂的时序代码,也会把自己逼疯。厂商显然也看到了这一点:与其让工程师们在代码里玩命挤性能,不如直接多塞几个串口,省时省力,皆大欢喜。
物联网(IoT)的兴起,这玩意简直是串口数量暴增的催化剂。物联网设备动不动就要跟云端、手机、其他设备互联互通,一个单片机得同时应付MQTT协议、BLE通信、传感器数据采集,串口不够用怎么办?厂商的回答很简单:加!于是,现代单片机从“单口“变成了“多口”。
当然,有人可能会问:串口多了,芯片不就贵了吗?以前的单片机为啥不这么干?答案藏在技术进步里。
早年间,芯片制造工艺粗糙,晶体管数量有限,一个串口模块可能就占了芯片好大一块地盘。设计者得精打细算,能省则省,多加一个串口就意味着成本飙升,性能缩水。
但现在不一样了。现代芯片用的是7nm、28nm甚至更先进的工艺,晶体管密度高得离谱,一个串口模块在芯片里占的那点面积,简直跟芝麻粒似的。厂商完全有能力在不增加太多成本的情况下,多塞几个串口进去。更别提现在的单片机动不动就集成几十万甚至上百万个逻辑门,串口模块的硬件开销几乎可以忽略不计。
串口数量的增加,本质上是芯片制造技术进步的红利。厂商一看,硬件成本低了,用户需求高了,不加白不加,傻子才不加呢。
作为一个单片机工程师,你有没有遇到过这样的场景:项目做到一半,发现串口不够用了,只能硬着头皮用GPIO去模拟UART?我2021年第一份研发工作就碰到过,恶心程度不能用语言来表达,那感觉就像用筷子吃西餐,费劲不说,还容易翻车。
当然,串口数量变多也不全是技术进步和用户需求的功劳,厂商的小算盘也功不可没。你有没有发现,每次新款单片机发布,宣传页上总会把“多串口”当成卖点大吹特吹?“看,我们的新芯片有6个UART、4个SPI、3个I2C,性能碾压上一代!”这话听着耳熟吧?
这其实是厂商的阳谋。一方面,多串口确实能吸引工程师选用新款芯片,毕竟谁不想用更省心的硬件呢?另一方面,这也变相逼着你升级开发工具链、买新开发板,甚至重新学习新芯片的寄存器配置。串口多了,芯片型号变了,开发板贵了,厂商的钱包自然也就鼓了。
更狠的是,有些厂商还会故意在低端型号上限制串口数量。比如某个入门级芯片只有1个UART,而中高端型号直接给你5个,价格翻倍。你要是项目需求稍微复杂一点,就不得不掏钱升级。
说到串口数量增加,还有个细节不能忽略:现在的不只是串口数量多,其它通讯接口数量也在增多。早年的单片机,通讯接口基本就只有UART,顶多再加个简单的异步串行接口。现在呢?UART、SPI、I2C,甚至CAN、USB都算上了。
这背后的原因也很简单:不同外设喜欢不同的“语言”。比如,I2C适合接传感器,SPI适合高速传输,UART适合调试和长距离通信。一个单片机如果只有UART,面对SPI设备就得抓瞎,反过来也一样。现代单片机索性把这些常用接口都配齐了,让你随便挑,想怎么玩就怎么玩。
举个例子,STM32系列的单片机,高端型号动不动就带七八个串口,UART、SPI、I2C一个不少,甚至还有SDIO、USB这些“高级货”。
看到这儿,你可能会好奇:串口数量是不是会一直增加下去?答案是:不一定。虽然现在的趋势是串口越来越多,但也得有个度。毕竟,芯片的引脚数量是有限的,每个串口都得占几个IO口,串口多了,引脚不够用怎么办?总不能把芯片做成刺猬吧。
而且,随着无线通信技术的发展,比如BLE、Wi-Fi、ZigBee的普及,有些设备压根不需要串口,直接通过无线协议就能搞定。未来,单片机的串口数量可能会达到一个平衡点:够用就好,不多不少。厂商也会把精力放在提升串口性能上,比如更高的波特率、更低的功耗,或者支持ISO7816 interface, LIN, IrDA, modem control,而不是一味地堆数量。
不过对初学者来说,这倒是个好消息。串口多意味着上手门槛低,你不用再为接口不够用而头疼,可以专心写代码、调功能。至于那些老工程师,可能还会怀念当年“一个串口打天下”的日子,毕竟那时候的单片机虽然简陋,但逼着你把基础功练得扎实无比。
end
下面是更多无际原创的个人成长经历、行业经验、技术干货。
1.电子工程师是怎样的成长之路?10年5000字总结
2.如何快速看懂别人的代码和思维
3.单片机开发项目全局变量太多怎么管理?
4.C语言开发单片机为什么大多数都采用全局变量的形式?
5.单片机怎么实现模块化编程?实用程度让人发指!
6.c语言回调函数的使用及实际作用详解
7.手把手教你c语言队列实现代码,通俗易懂超详细!
8.c语言指针用法详解,通俗易懂超详细!