电子说
在智能双卡设计中,硬件电路的可靠性与软件配置的精准性直接决定双卡功能的稳定性。本文基于实际项目经验,详细拆解硬件设计中SIM卡供电电路、时钟信号匹配及卡槽复用设计的实现细节,并同步讲解软件层的初始化配置、双卡状态同步与运营商策略配置方法,形成一份可直接复用的实战指南。
今天我们以Air780EPM系列低功耗模组为例,分享双SIM卡硬件设计与软件配置要点,带你了解如何构建稳定可靠、功耗优化的物联网设备。
01. 模组相关管脚
Air780EPM系列模组与SIM相关的管脚,包括:
SIM1:VDD_SIM1,PIN14;SIM1_DAT,PIN11;SIM1_RST,PIN12; SIM1_CLK,PIN13;
SIM2:VDD_SIM2,PIN65;SIM2_DAT,PIN64;SIM2_RST,PIN63;SIM2_CLK,PIN62;
Air780EPM管脚图如下所示:

02. 主要功能说明
Air780EPM系列模组支持双卡,但只能单待;模组SIM1为原生SIM卡接口,SIM2的数字信号为GPIO模拟,电源共用SIM1。
1)GPIO复用
复用为SIM2的GPIO,在硬件上同时被引到了不同的模组管脚上,比如:
USIM2_RST:与CAM_BCLK(GPIO4)复用,二者不可同时使用;
USIM2_CLK:与CAM_CS(GPIO5)复用,二者不可同时使用;
USIM2_DAT:与CAM_RX0(GPIO6)复用,二者不可同时使用。
这里的不可同时使用:
是指在同一个硬件上,使用SIM2时就不能再使用GPIO4/5/6,包括这三个GPIO可以复用的其它功能,比如Camera、I2C、UART等。
具体见GPIO复用表:https://docs.openluat.com/air780ehnehu/product/shouce/

2)IO电平
SIM1支持1.8V/2.8V两种IO电平的SIM卡,SIM2由于是GPIO4/5/6复用,所以可以支持的SIM卡的电平与模组IO的电平保持一致。
模组IO电平设置为1.8V时:SIM2则只支持1.8V电平的SIM卡;
模组IO电平设置为2.8V/3.3V时:SIM2则只支持2.8V/3.3V电平的SIM卡(就IO电平而言,2.8V和3.3V可认为电平一致)。
当前运营商提供的SIM卡基本默认兼容1.8V/2.8V电平,所以大家在实际应用中很少遇到因为IO电平不一致而导致不识卡的情况。
3)模拟开关
也可以使用“SIM1+模拟开关”的方式实现双卡单待,我们验证调试过的SIM卡模拟开关为:BCT4567。
相关手册详见:https://docs.openluat.com/air780epm/product/air780exxpins/#sim1sim2
03. 硬件参考设计
双卡设计时,推荐SIM1带插入检测功能,且配合SIM卡座的规格,保证在SIM卡插入后USIM_DET信号悬空而不是接地,可以进一步降低功耗。
双卡设计且其中之一为贴片SIM卡时:推荐使用SIM2接贴片SIM卡,SIM1接SIM卡座。
接下来,我们一起看看硬件设计及相关注意事项:
▼ SIM1参考设计 ▼

相关注意事项如下:
1)USIM_DET为SIM卡插入检测管脚,不需要时可以不接;
2)USIM_DET推荐默认使用WAKEUP2,当然使用其它WAKEUP或GPIO中断也可以;
3)WAKEUP2被命名为USIM_DET,目的是为了引导大家默认使用WAKEUP2用作USIM_DET,当设计中不需要USIM_DET时,该管脚WAKEUP2与其它WAKEUP信号没有区别,也可以用作它用;
4)USIM_DET代码示例;

5)USIM_DET需上拉至某一AGPIO:
比如AGPIO3(GPIO23,软件可以控制一直高电平输出,此管脚在某些文档中也常被称为Vref),不能使用VDD_EXT(低功耗模式pm.WORK_MODE,1和PSM+模式pm.WORK_MODE,3下不能一直输出,后续的章节中会详细介绍)。
▼ SIM2参考设计 ▼

相关注意事项如下:
1)请严格按照SIM2参考设计电路进行设计,SIM2可以接SIM卡座,也可以接贴片SIM卡;
2)特别注意USIM2,无论电源还是信号(CLK/DATA/RST),均为复用模组的其它管脚。
USIM2_VDD:与USIM1_VDD使用同一个电源LDOSIM;
USIM2_RST:与CAM_BCLK(GPIO4)复用,二者不可同时使用;
USIM2_CLK:与CAM_CS(GPIO5)复用,二者不可同时使用;
USIM2_DAT:与CAM_RX0(GPIO6)复用,二者不可同时使用;
3)使用SIM2时,必须使用API函数mobile.simid(1)进行切换,否则模组不会自动初始化SIM2。
API函数详细说明参见:https://docs.openluat.com/osapi/core/mobile/#mobilesimidid-priority
4)TVS保护:SIM卡插拔时极易产生静电,电路上需要添加TVS保护。
推荐TVS型号为:芯禾微XESD100N-3V3
04. 与SIM相关的LuatOS API
以下是两个常见的API,详见资料中心:https://docs.openluat.com/osapi/core/mobile/
mobile.imsi(index)用于获取IMSI(国际移动用户识别码)
示例代码:

mobile.iccid(id)
获取或设置ICCID(集成电路卡识别码)
示例代码:

05. 常见问题解答
问题:SIM卡不识卡,使用万用表测量SIM卡电源VDD_SIM没有电压,怎么办???
解答如下:
首先,需要明确的是,是因为模组没有识别到卡,所以 VDD_SIM没有电压,并不是因为VDD_SIM没有电压所以识别不到SIM 卡,因果关系不要反了,这几乎是所有新用户都会遇到的常识性的认知错误。
真实原因是:SIM卡在初始化时,系统会尝试4次与SIM卡交互,此时 VDD_SIM也会打开4次,分别在1.8V和3.3V交替检测。若检测不到SIM卡,VDD_SIM卡就会关闭。因此在检测不到SIM卡的情况下你用万用表测量USIM_VDD总是低电平。
下图是使用示波器测量出来的,对应SIM卡未被识别到时的波形:

一般来说,不识别卡的主要原因大概有如下几个:
SIM卡封装做错;
SIM卡接触不良;
SIM卡信号线连错;
SIM卡信号使用的TVS容值太大,导致SIM卡信号变形严重;
SIM卡本身不良,一般做法是先使用个人手机SIM卡对比测试;
SIM2不识别时,大概率是没有设置 mobile.simid(1) 导致的;SIM2由GPIO复用而来,所以模组底层软件并不会主动轮询识别SIM1和SIM2,只会默认初始化识别SIM1。
再次强调:初始化SIM2需要主动设置mobile.simid(1) 。
详见资料中心:https://docs.openluat.com/osapi/core/mobile/#mobilesimidid-priority
今天的内容就分享到这里了~
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !