串口通信是嵌入式的起点,这么学才轻松

串口通信是嵌入式的起点,这么学才轻松

“嵌入式的第一步,从打开串口开始。”
不开串口,怎么调试?怎么和外部世界说话?串口搞不懂,学啥都没底气!

今天我们就来一篇最接地气的科普文,让你用最轻松的方式,搞懂这个“人人都听过却容易晕”的串口通信。
在这里插入图片描述


🧠 一句话解释串口通信

串口通信,全称 串行通信(Serial Communication),就是数据一位一位按顺序“排队”传过去,就像你吃面条——一根一根吞,不是一口塞完。

对比下并行通信(Parallel):它是“我有8条腿,能一次搬8个字节”,但更复杂、占用IO多、距离短,早就不流行了。

所以嵌入式系统最爱串口:简单、省资源、够用。


🎯 串口的几种经典类型

通信协议接口名字特点
UART通用异步收发器嵌入式开发最常见,MCU内置
USART带同步功能的 UARTSTM32中的标准串口模块
RS-232老式标准接口电平±12V,台式机老古董
TTL串口UART使用3.3V/5V电平单片机最常用的串口形式
USB转串口接电脑的神器外设调试用,CH340/CP2102/FT232
在这里插入图片描述

🏗️ 串口长啥样?硬件上这么连

以 STM32 或 ESP32 开发板为例:

开发板 TX(发) ----> USB转串口模块 RX(收)
开发板 RX(收) <---- USB转串口模块 TX(发)
GND 对接 GND(地线一定要连!)

搞反了?你串口打印就什么都收不到。
在这里插入图片描述


⚙️ 串口五要素(非常重要)

串口通信有“五大金刚”,设置错一个都收不到数据:

项目含义常见值
波特率(Baud)每秒传输的比特数9600 / 115200
数据位一个数据包里的数据位数8 位(最多见)
停止位表示数据帧结束1 位
校验位检查传输错误通常设为无(None)
流控管理数据流的方式无(None)最常用

比如你设置的是:

115200 8-N-1

意思是:波特率115200,8位数据,无校验,1位停止。

记住这串数字,调试串口的密码!


🧪 Hello, 串口:最基础的例子

在 STM32 中用串口打印一句话:

printf("Hello Serial World!\r\n");

它就会通过 TX 引脚把数据一位一位“吐”出去,你可以在串口工具(如 SecureCRT / XCOM / TeraTerm)中看到。

你会惊讶地发现:“原来 MCU 真能说话!”


🛠️ 不同平台怎么玩串口?

STM32

  • 使用 HAL_UART_Transmit()printf() 配合重定向 fputc
  • USART1/USART2/USART3 通常用于调试输出

ESP32

  • 自带多个 UART,使用 Serial.begin()(Arduino) 或 uart_write_bytes()(ESP-IDF)

EFR32(Silicon Labs)

  • 使用官方 IO Stream 模块配置串口输入输出
  • 配合 sl_iostream_uart_init_instances() 使用

Arduino

  • 使用 Serial.begin(9600); 初始化串口
  • Serial.println("Hello"); 直接发送字符串,入门超简单

🧰 推荐工具:串口调试神器们

工具优点
XCOM简洁、无需安装、支持多串口
SecureCRT功能强大,脚本自动化
CoolTerm跨平台、界面友好
串口调试助手(SSCOM)中文、好用、经典老将
minicom / screen(Linux)CLI终端用户首选

你还可以用 Python 写串口调试脚本,pyserial 是万能钥匙!
在这里插入图片描述


💡 小技巧:串口不通,怎么排查?

  1. TX/RX 有没有接反?
  2. 波特率对了吗?
  3. 开发板串口有没有初始化?
  4. GND 接了吗?没地线串口发不了电。
  5. 串口工具没打开多个端口冲突吧?
  6. USB驱动装了吗?(比如CH340驱动)

🎯 为什么说串口是嵌入式的起点?

  1. 调试输出:没有串口你连“Hello”都看不到
  2. 命令控制:你可以做个串口命令行,像在Linux下一样交互
  3. 设备通信:很多外设(GPS模块、蓝牙模块、LoRa、GSM)都用串口
  4. 学会串口 = 学会数据流处理:为学 SPI、I2C、CAN 打基础!

🎓 串口进阶还能玩啥?

  • DMA 方式提高效率
  • 串口中断接收,做个非阻塞交互系统
  • 环形缓冲区管理
  • 自定义串口协议,比如你自己定义个“AT指令”
  • 多串口并发通信(高级玩法)
  • 串口升级、串口 Bootloader(比如 STM32 的 ISP 模式)

✅ 总结一下

内容一句话总结
串口是啥?串行通信,省脚省心
为啥学它?所有嵌入式调试的起点
怎么玩?TX/RX连好,设置对五要素
常见错误?波特率错、引脚反、没GND
玩熟了干嘛?控制模块、调试系统、玩转外设!

🚀 最后送你一个顺口溜

串口通信要记牢,
TX对RX别乱搞。
波特率不对全白忙,
调试助手少不了。
GND没接串口闹,
一发一收别吵架。
玩转串口第一关,
嵌入式路上不迷茫!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢乐熊嵌入式编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值