4. 网络注册与附着流程:SIM卡初始化、网络搜索与注册、PDP上下文激活、APN配置实战
模组要上网,得先过四关。
SIM卡初始化、网络搜索与注册、PDP上下文激活、APN配置。这四步走完,模组才算真正「在线」。
我见过不少新手,上来就发AT指令,结果卡在注册上半天没反应。其实,每一步都有它的脾气。
4.1 SIM卡初始化:模组的第一口奶
SIM卡里存着啥?IMSI、Ki、OPc这些鉴权密钥。模组上电后,第一件事就是跟SIM卡握手。
核心流程:
- 模组供电 → SIM卡复位 → 获取ICCID → 读取IMSI → 鉴权请求 → 网络侧返回鉴权向量 → 模组计算SRES → 鉴权通过
我习惯用AT+CCID先读ICCID,确认卡有没有插好。如果返回+CME ERROR: SIM not inserted,别急着怀疑卡槽,先看看卡座有没有虚焊。
实战指令:
AT+CPIN? // 查询PIN码状态
+CPIN: READY
AT+CCID // 读取ICCID
+CCID: 89860117812345678901
AT+CRSM=176,28423,0,0,9 // 读取IMSI(通过SIM文件系统)
+CRSM: 144,0,460011234567890
注意,有些卡启用了PIN码锁。你发AT+CPIN?返回+CPIN: SIM PIN,那就得先解锁。我遇到过一批测试卡,出厂默认PIN是1234,结果整条产线都卡在这一步。
4.2 网络搜索与注册:模组找基站的逻辑
SIM卡初始化完成后,模组开始搜网。这个过程,说白了就是模组在频段上「喊一嗓子」,看基站回不回应。
搜索顺序一般是:
- 上次驻留的频点(如果模组没断电)
- 全频段扫描(从低频到高频)
- PLMN选择(优先选HPLMN,再选VPLMN)
我建议用AT+COPS=?先看看当前有哪些运营商可用。如果返回空列表,大概率是天线没接好,或者频段不对。
避坑指南:
我曾经在海外项目里,模组一直搜不到网。折腾了两天,最后发现是频段配置没改。国内用Band 3/8,欧洲用Band 20/7。你想想看,模组在错误的频段上喊破嗓子,基站也听不见。
注册状态用AT+CREG?查:
AT+CREG?
+CREG: 0,1 // 0: 禁用URC, 1: 已注册到本地网
AT+CGREG? // 查看GPRS注册状态
+CGREG: 0,1 // 1: 已注册
状态码含义:
| 状态码 | 含义 | 常见原因 |
|---|---|---|
| 0 | 未注册 | SIM卡问题、信号弱 |
| 1 | 已注册(本地网) | 正常 |
| 2 | 未注册,正在搜索 | 模组正在扫频 |
| 3 | 注册被拒绝 | IMSI被拉黑、鉴权失败 |
| 5 | 已注册(漫游) | 不在归属地 |
如果一直卡在状态2,我建议检查一下天线驻波比。有一次,客户反馈模组搜网慢,我远程一看,天线接口都拧花了。
4.3 PDP上下文激活:建立数据通道
注册到网络后,模组还得激活PDP上下文,才能收发IP数据包。PDP上下文,你可以理解成一条「虚拟隧道」,模组和GGSN之间靠它传数据。
激活流程:
- 模组发送
AT+CGDCONT配置APN - 模组发送
AT+CGACT=1激活PDP - 网络侧分配IP地址
- 模组返回
+CGACT: 1,1表示激活成功
实战指令:
AT+CGDCONT=1,"IP","CMNET" // 配置APN为CMNET
OK
AT+CGACT=1,1 // 激活PDP上下文
OK
AT+CGPADDR=1 // 查询分配的IP地址
+CGPADDR: 1,10.123.45.67
注意,AT+CGACT返回OK不代表IP已经可用。我建议等几秒再查AT+CGPADDR,有时候网络侧分配IP需要时间。
小技巧:
如果AT+CGACT返回+CME ERROR: operation not allowed,先检查AT+CGREG?是不是状态1。注册都没完成,激活PDP肯定失败。
4.4 APN配置实战:别小看这几个字符
APN(接入点名称)决定了模组走哪条路上网。国内三大运营商的APN:
| 运营商 | APN | 用户名 | 密码 |
|---|---|---|---|
| 中国移动 | CMNET | 空 | 空 |
| 中国联通 | 3GNET | 空 | 空 |
| 中国电信 | CTNET | ctnet@mycdma.cn | vnet.mobi |
我遇到过最坑的事:客户用电信卡,APN配成了CMNET,结果死活上不了网。后来发现电信的APN是CTNET,而且还得带用户名密码。
APN配置指令:
AT+CGDCONT=1,"IP","CTNET","ctnet@mycdma.cn","vnet.mobi",0,0
OK
参数说明:
- cid:PDP上下文ID,通常用1
- PDP类型:IP或IPV4V6
- APN:接入点名称
- 用户名/密码:部分运营商需要
- 数据压缩:0表示关闭
- 头部压缩:0表示关闭
注意:
有些模组支持AT+CGDCONT?查询当前配置。如果APN配错了,可以用AT+CGDCONT=1清空,再重新配置。我曾经在产线上发现一批模组APN写死了,结果换卡就废,后来改成动态配置才解决。
4.5 全流程实战:一条指令走到底
我把整个流程串起来,写成一个脚本。你直接复制到串口工具里跑就行:
AT+CPIN?
+CPIN: READY
AT+CCID
+CCID: 89860117812345678901
AT+CREG?
+CREG: 0,1
AT+CGREG?
+CGREG: 0,1
AT+CGDCONT=1,"IP","CMNET"
OK
AT+CGACT=1,1
OK
AT+CGPADDR=1
+CGPADDR: 1,10.123.45.67
AT+CGDATA="PPP",1
CONNECT
最后一步AT+CGDATA进入PPP模式,模组就正式进入数据通信状态了。
核心要点:
- SIM卡初始化:先查CPIN,再读ICCID
- 网络注册:CREG和CGREG都要确认
- PDP激活:APN必须匹配运营商
- IP分配:激活后等几秒再查地址
嗯,到这里,模组已经能上网了。但别高兴太早,下一步才是真正的挑战——协议栈适配。不过那是下一章的事,咱们先把这四步练熟。