SIMCom SIM7020C:集成MT2625的多功能NB-IoT模块详解

需积分: 0 0 下载量 199 浏览量 更新于2024-07-01 收藏 4.58MB PDF 举报
SIMCom SIM7020C是一款专为物联网应用设计的多频段NB-IoT模块,其主要特点如下: 1. **频段支持**:SIM7020C模块具有广泛的频段兼容性,包括FDD 2100M (B1), FDD 1800M (B3), FDD 850M (B5), 和 FDD 900M (B8),支持全球多个地区的通信标准,42PIN LCC封装设计。 2. **硬件接口丰富**:该模块配备了一个全功能串口以及一个2线接口,便于与外部设备进行数据交互。此外,它还提供了GPIO、ADC等通用输入输出接口,增强扩展能力。 3. **电源管理**:工作电压范围广泛,从2.1V到3.6V,典型值为3.3V,与许多MCU保持一致,有助于简化系统设计。支持多种工作模式,如PSM(5uA唤醒)、休眠(0.4mA唤醒)、空闲(5.6mA)和eDRX(70uA)模式,确保了高效能和低功耗。 4. **通信协议**:支持TCP/UDP、COAP/LWM2M/MQTT、HTTP/SSL等多种协议,满足不同应用场景的需求。然而,不支持域名解析的PING功能。 5. **云平台集成**:模块内置支持ONENET、电信云和艾拉云等主流云平台,方便设备接入云端,实现远程管理和数据分析。 6. **FOTA升级**:SIM7020C具备FOTA(固件空中下载)功能,允许通过差分包方式更新模块的软件,提升了维护和升级的便利性。 7. **ESIM选项**:该模块支持嵌入式SIM卡(ESIM),使得设备能够更便捷地实现网络连接,无需物理SIM卡插入。 8. **短信功能**:在具备网络支持的情况下,模块还支持短消息服务,增加了通信手段的多样性。 9. **尺寸紧凑**:模块封装尺寸仅为16.7mm x 17.5mm x 2.3mm,对于空间有限的应用场景尤为合适。 SIM7020C系列模块基于MTK MT2625平台,采用模组加应用处理器的设计,与高通 MDM9206方案相似,区别于华为海思方案,后者仅内置MODEM,需外挂MCU。在市场中,SIMCom SIM7020C与移远BC26/28、高新兴ME3616、中移物联网M5330系列、移科L620和骐俊ML5530等竞品共同竞争,各有所长,适应不同客户的具体需求。这款模块因其强大的功能和广泛的应用场景,是物联网领域中的热门选择之一。

解释下面代码static UINT8 libTXT2PDU( UINT8* msgData, UINT16 msgLen, UINT8* pTpdu, AtciMsgInfo *pAtSmsMessage, AtciCharacterSet chset_type ) { UINT8 offset = 0; UINT16 len=0; //CPUartLogPrintf("%s: enter", __FUNCTION__); //int i; //for(i=0;i<msgLen;i++) //CPUartLogPrintf("%s: msgData[%d] %d 0x%x", __FUNCTION__, i, msgData[i], msgData[i]); /* Copy the first octet */ /*SIMCom xiaokai.yang sync sms code @2023-02-06 begin*/ #ifdef FEATURE_SIMCOM_SMS char headbuf[PDU_HEAD_SIZE] = {0x05,0x00,0x03}; scCmssexInfoT* p_CmgsexInfo = (scCmssexInfoT*)getCmgsexInfoInd(); if(pAtSmsMessage->udhPresent) { pTpdu[ offset++ ] = (pAtSmsMessage->fo)|(0x1<<6); } else #endif /*SIMCom xiaokai.yang sync sms code @2023-02-06 end*/ pTpdu[ offset++ ] = pAtSmsMessage->fo; /* Message Reference */ pTpdu[ offset++ ] = pAtSmsMessage->msgRef; /* Originating Address (TP-OA) */ { UINT8 idx; UINT8 *data; data = pTpdu + offset; /* Set the Address Length octet */ *data++ = strlen( (char *)pAtSmsMessage->destAddr ); #ifdef FEATURE_SIMCOM_SMS PAL_LogIo(SC_MODULE_SMS,PAL_DBG_LEVEL_INFO,"destAddr [%s]",( (char *)pAtSmsMessage->destAddr )); #endif /* Format the TON/NPI octet */ *data++ = (UINT8)((pAtSmsMessage->addrType << 4) | pAtSmsMessage->addrPlan | 0x80); /* Format the BCD digits */ for ( idx = 0; idx < strlen( (char *)pAtSmsMessage->destAddr ); idx++ ) { libPutPackedBcd( data, idx, pAtSmsMessage->destAddr[ idx ], TRUE ); } /* check if we need to tack on a filler */ if( idx & 0x01 ) { /* Yup -- do it! , reversed nibbles */ libPutPackedBcd( data, idx, ATCI_BCD_FILLER, TRUE ); ++idx; } /* We're done -- update the PDU byte index */ offset += idx/2 + ATCI_SMS_BCD_POS; } /* Protocol Identifier (TP-PID) */ pTpdu[ offset++ ] = pAtSmsMessage->pid; /* Data Coding Scheme (TP-DCS) */ pTpdu[ offset++ ] = pAtSmsMessage->dcs; if(((pAtSmsMessage->fo&ATCI_TP_MTI_MASK)==ATCI_SMS_SUBMIT_MTI)&&((pAtSmsMessage->fo&ATCI_SMS_TP_VPF)==0x10)) { pTpdu[ offset++ ] = pAtSmsMessage->vp; } /*SIMCom xiaokai.yang sync sms code @2023-02-06 begin*/ #ifdef FEATURE_SIMCOM_SMS if(pAtSmsMessage->udhPresent) { headbuf[3] = p_CmgsexInfo->mr; headbuf[4] = p_CmgsexInfo->msg_total; headbuf[5] = p_CmgsexInfo->msg_seg; memmove(msgData+PDU_HEAD_SIZE,msgData,msgLen); memcpy(msgData, headbuf, PDU_HEAD_SIZE); msgLen+=PDU_HEAD_SIZE; } PAL_LogIo(SC_MODULE_SMS,PAL_DBG_LEVEL_INFO,"offset1 [%d],msgLen=%d",offset,msgLen);//274 #endif /*SIMCom xiaokai.yang sync sms code @2023-02-06 end*/ /* Now for the Message Data (TP-UDL + TP-UD) */ //ScShowDataByHex((char *)pTpdu, offset); //CPUartLogPrintf("[sms]msgLen=%d",msgLen); libMsgEncodeUserData( pAtSmsMessage->udhPresent, pAtSmsMessage->dcs, pTpdu, msgData, msgLen, offset, &len,chset_type); return len; }

2023-06-08 上传