2、硬件接口与引脚定义:UART串口通信基础,定位模块常见引脚与MCU接线方式
好,咱们进入第二章。上一章聊了定位模块能干什么,这一章就得动真格的了——你得知道怎么把它跟单片机(MCU)连起来,让它俩能“说话”。
说白了,定位模块就是个“话痨”,它算出了经纬度、时间,得通过一根线不停地往外念叨。MCU呢,就是个“听众”,得听懂它在说什么。这根线,就是UART串口。
2.1 UART串口通信基础
UART,全称Universal Asynchronous Receiver/Transmitter,通用异步收发器。名字挺长,但原理很简单:两根线,一根发(TX),一根收(RX),共地(GND),就能传数据。
为什么叫“异步”?因为没有独立的时钟线。收发双方得事先约定好“说话速度”,也就是波特率(Baud Rate)。常见的波特率有9600、115200等。我刚开始做项目时,就犯过傻——模块设的是115200,单片机配的是9600,结果读出来的全是乱码。嗯,波特率不匹配,这是新手最容易踩的坑。
UART的数据帧长这样:
- 起始位:1位,逻辑0,告诉接收方“我要开始说话了”。
- 数据位:5~9位,通常是8位,一个字节的数据。
- 校验位:可选,奇校验或偶校验,用于简单的错误检测。
- 停止位:1位或2位,逻辑1,表示“我说完了”。
定位模块最常用的配置是:8位数据位、无校验、1位停止位,简写为8N1。你想想看,这个配置几乎成了行业默认值,99%的模块出厂都是这个设置。
2.2 定位模块常见引脚
一个典型的GPS/BDS定位模块,引脚数量从6个到20多个不等。但核心的、你必须认识的,就那么几个。我把它们列在下面这张表里,你对照着看。
| 引脚名称 | 功能 | 方向(相对模块) | 重要说明 |
|---|---|---|---|
| VCC | 电源正极 | 输入 | 通常为3.3V或5V,注意模块规格 |
| GND | 电源地/信号地 | 输入 | 必须与MCU共地 |
| TX | 模块发送数据 | 输出 | 接MCU的RX |
| RX | 模块接收数据 | 输入 | 接MCU的TX |
| PPS | 秒脉冲输出 | 输出 | 1秒一个高电平脉冲,用于授时 |
| RST | 复位 | 输入 | 低电平复位,通常拉高 |
我来逐个拆解一下:
- VCC与GND:这是命根子。供电不稳,模块就罢工。我遇到过好几次,模块搜星慢,查了半天发现是电源纹波太大。后来我给VCC脚加了个100μF的电解电容并联一个0.1μF的瓷片电容,问题就解决了。
- TX与RX:这是数据通道。注意,交叉连接——模块的TX接MCU的RX,模块的RX接MCU的TX。别接反了,接反了就是“我说你听不见,你说我听不见”。
- PPS:这是个好东西。PPS(Pulse Per Second)每秒输出一个精确的脉冲,上升沿与UTC时间对齐。如果你做授时设备或者需要高精度时间同步,这个引脚就是宝贝。我做过一个基站同步项目,就是靠PPS来对齐多个模块的时间戳。
- RST:复位引脚。有些模块上电后需要拉低再拉高才能正常工作。我习惯在RST脚上接一个10kΩ上拉电阻到VCC,然后通过MCU的GPIO控制,这样既能手动复位,也能程序控制。
2.3 模块与MCU的接线方式
接线其实就三步:供电、共地、交叉连串口。我画了一张图,你看一眼就明白了。
这张图很直观了。我再补充几个实际接线中的要点:
2.3.1 标准接线步骤
- 供电:模块VCC接MCU的3.3V或5V输出。注意模块的工作电压范围,别超压。
- 共地:模块GND接MCU的GND。这是所有信号的基础,不共地,信号就是浮空的。
- 串口交叉:模块TX → MCU的RX;模块RX → MCU的TX。
- 可选引脚:如果需要PPS,接MCU的一个GPIO(带外部中断功能);RST接另一个GPIO,并加上拉电阻。
2.3.2 电平匹配问题
这是个大坑。很多定位模块是5V供电,但TX输出也是5V电平。如果你的MCU是3.3V系统(比如STM32、ESP32),5V信号直接灌进去,轻则读不到数据,重则烧引脚。
解决办法有几种:
- 电阻分压:在模块TX到MCU RX之间串联一个1kΩ电阻,再对地接一个2kΩ电阻,把5V分到3.3V。简单便宜,但速率高时波形会变差。
- 电平转换芯片:用TXS0108E或类似芯片,双向自动转换。我推荐这个,稳定可靠。
- 直接买3.3V模块:现在很多模块已经支持3.3V供电和电平,省心。
2.3.3 电源去耦
模块启动时电流会突然增大,尤其是搜星阶段。如果电源线太长或者内阻大,电压会被拉低,导致模块重启或搜星失败。
我的做法是:在模块VCC和GND引脚旁边,紧贴着焊一个100μF的电解电容和一个0.1μF的瓷片电容。电解电容负责“蓄水”,瓷片电容负责滤除高频噪声。这个组合,我用了十年,没出过问题。
2.4 常见接线错误与排查
我把这些年遇到过的接线问题整理了一下,你遇到了可以直接对照排查:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 串口收到乱码 | 波特率不匹配;TX/RX接反 | 检查模块和MCU的波特率设置;用逻辑分析仪看波形 |
| 串口无任何数据 | 模块未供电;GND未共地;TX/RX接错引脚 | 万用表测VCC和GND电压;检查接线是否正确 |
| 模块搜星慢或不定位 | 电源纹波大;天线没接好;模块被金属遮挡 | 示波器看电源纹波;检查天线接口和馈线 |
| PPS无输出 | 模块未定位成功;PPS引脚配置错误 | 等待定位成功;检查模块配置命令 |
嗯,这一章的内容就这些。硬件接线是基础中的基础,但也是出问题最多的地方。你只要把VCC、GND、TX、RX这四根线接对了,模块就能跑起来。剩下的PPS和RST,是锦上添花的功能,后面用到的时候再细说。