4. 模块上电与启动流程
好,咱们直接切入正题。模块上电,听起来简单吧?插电就行。但做车载通信的兄弟都知道,这里头门道可不少。我见过太多开发板,上电时序没搞好,模块要么不启动,要么启动到一半就挂了。说白了,这就是个「先给谁喂电」的问题。
4.1 模块供电时序要求
车载无线通信模块,一般需要多路电源。比如主电源VCC、IO口电源VIO、还有内部PLL用的电源。这些电源谁先上、谁后上,是有严格要求的。
我个人的习惯是,先看芯片手册里的「Power Up Sequence」图。那图里一般会画几条线,标着t1、t2、t3。嗯,这里要注意:VCC必须先稳定,然后VIO才能上电。如果VIO先上电,模块内部的IO口可能会处于不确定状态,轻则漏电,重则烧坏。
具体时序参数,我整理了一个表格,大家可以参考:
| 参数 | 最小值 | 典型值 | 最大值 | 说明 |
|---|---|---|---|---|
| t1 (VCC上升时间) | 100μs | 500μs | 1ms | VCC从10%到90%的时间 |
| t2 (VCC到VIO延迟) | 0ms | 5ms | 10ms | VCC稳定后VIO才能开始上升 |
| t3 (VIO上升时间) | 100μs | 300μs | 1ms | VIO从10%到90%的时间 |
| t4 (所有电源稳定到复位释放) | 10ms | 20ms | 50ms | 确保内部电路初始化完成 |
你想想看,如果VCC上升太慢,模块内部的POR(上电复位)电路可能误触发。我曾经遇到过,用了一个廉价的LDO,输出上升时间到了2ms,结果模块每次上电都复位两次。后来换了颗快一点的LDO,问题就解决了。
4.2 复位时序设计
复位,说白了就是让模块「从头再来」。但怎么复位、什么时候复位,这里头有讲究。
模块一般有两个复位引脚:一个是硬件复位(RESET_N),一个是软件复位(AT+CFUN=1,1)。硬件复位是硬拉,软件复位是发命令。我个人建议,硬件复位引脚一定要加一个上拉电阻,不然上电瞬间电平不确定,模块可能反复复位。
复位时序要注意几点:
- 复位低电平持续时间:一般要求至少10ms。太短了,模块内部还没反应过来。
- 复位释放后的等待时间:释放复位后,不要立刻发AT命令。等个500ms到1秒,让模块内部初始化完成。
- 复位期间不要操作其他引脚:复位时,模块处于未知状态,这时候发数据可能会被误判。
我曾经在一个项目中,复位引脚直接连到了MCU的GPIO。结果MCU上电时GPIO电平不稳定,导致模块反复复位。后来加了一个RC延时电路,问题才解决。嗯,这里要注意,复位电路一定要可靠,不然调试起来很头疼。
4.3 启动日志分析
模块上电后,会通过串口输出一堆启动日志。这些日志,说白了就是模块的「体检报告」。我每次拿到一个新模块,第一件事就是接上串口,看启动日志。
启动日志一般包含以下信息:
- 硬件版本:比如「HW Rev 2.0」,确认硬件版本对不对。
- 固件版本:比如「FW v1.2.3」,确认固件是不是最新的。
- IMEI号:模块的唯一标识,核对一下。
- 网络状态:比如「Searching...」、「Registered」等。
- 错误信息:比如「SIM not inserted」、「No network」等。
我给大家看一段典型的启动日志:
[BOOT] Power On Reset
[BOOT] HW Version: 2.0
[BOOT] FW Version: 1.2.3
[BOOT] IMEI: 123456789012345
[BOOT] SIM Status: SIM_READY
[BOOT] Network: Searching...
[BOOT] Network: Registered (LTE)
[BOOT] Ready
看到「Ready」了吗?这说明模块启动成功了。如果卡在某个地方,比如一直「Searching...」,那就要检查天线或者SIM卡了。
你想想看,如果启动日志里没有「Ready」,那后面的AT命令肯定发不出去。所以,一定要等模块输出「Ready」后,再开始发AT命令。不然你发一百条,它一条都不回。
4.4 AT命令初始化流程
模块启动后,我们要通过AT命令来配置它。这个流程,我称之为「初始化三部曲」。
第一步:检查模块状态
先发一个AT,看看模块回不回「OK」。如果回,说明模块活着。如果不回,检查串口配置和硬件连接。
AT
OK
第二步:配置基本参数
比如关闭回显、设置波特率、设置APN等。我习惯先关回显,不然调试时看着乱。
ATE0
OK
AT+IPR=115200
OK
AT+CGDCONT=1,"IP","CMNET"
OK
第三步:注册网络
发AT+CREG? 查看网络注册状态。如果返回「+CREG: 0,1」,说明注册上了。如果返回「+CREG: 0,2」,说明正在搜索。如果返回「+CREG: 0,3」,说明注册被拒。嗯,这里要注意,注册被拒可能是SIM卡问题或者网络问题。
AT+CREG?
+CREG: 0,1
OK
我曾经在一个项目中,模块初始化时总是卡在「AT+CREG?」这一步。查了半天,发现是SIM卡接触不良。后来在SIM卡座上加了一个弹簧片,问题就解决了。所以,硬件问题往往比软件问题更隐蔽。
好了,模块上电与启动流程就讲到这里。下一章,咱们聊聊AT命令的详细用法。记住,上电时序、复位设计、日志分析、初始化流程,这四个环节环环相扣,一个都不能少。