• 大小: 13KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-04-03
  • 语言: 其他
  • 标签: ME3630  驱动  4G模组  

资源简介

中兴物联ME3630(LCC)4G模组的驱动代码,由状态机配合拨号流程

资源截图

代码片段和文件信息

#include “includes.h“

//ME3630通信状态机
void Me3630_Proc(void)
{
static u8 step = ME3630_ATE0retry = 0;
u8 erri;
char *stristr[6]; 
static u8 me3630_count = 0;
u16 tmp = 0;

switch(step)
{
case ME3630_RESTART_STEP_1:
{
PNM_RST_H();
PNM_POWER_H();
if(MyTimeDly(001200))
{
PNM_RST_L();
step = ME3630_RESTART_STEP_2;
}
break;
}
case ME3630_RESTART_STEP_2:
{
if(MyTimeDly(0030500))
{
me3630_count = 0;
retry = 0;
step = ME3630_ATE0;
}
break;
}
case ME3630_ATE0:
{
if(MyTimeDly(0020))
{
LcSysWork.csq = 0;
strcpy((char *)U2.tx_buf“ATE0\r\n“);
usart2_tx_start(U2.tx_bufstrlen((const char *)U2.tx_buf));
step = ME3630_ATE0_CHK;
}
break;
}
case ME3630_ATE0_CHK:
{
MySemPend(&Usart2Sem3000&err);
if(err == 0x01)
{
if(strstr((const char *)U2.rx_buf“OK“))
{
retry = 0;
step = ME3630_CPIN;
}
else 
{
retry += 1;
step = ME3630_ATE0;
}
}
else if(err == 0x02)
{
retry += 1;
step = ME3630_ATE0;
}
if(retry > 10)
{
step = ME3630_RESTART_STEP_1;
}
break;
}
case ME3630_CPIN: //sim卡检测
{
if(MyTimeDly(0020))
{
strcpy((char *)U2.tx_buf“AT+CPIN?\r\n“);
usart2_tx_start(U2.tx_bufstrlen((const char *)U2.tx_buf));
step = ME3630_CPIN_CHK;
}
break;
}
case ME3630_CPIN_CHK:
{
MySemPend(&Usart2Sem3000&err);
if(err == 0x01)
{
if(strstr((const char *)U2.rx_buf“READY“))
{
retry = 0;
step = ME3630_COPS_SET;
}
else 
{
retry += 1;
step = ME3630_CPIN;
}
}
else if(err == 0x02)
{
retry += 1;
step = ME3630_CPIN;
}
if(retry > 3)
{
NetworkStatus = NET_CARD;
step = ME3630_ATE0;
}
break;
}
case ME3630_COPS_SET://网络选择
{
if(MyTimeDly(0020))
{
if(Pnm.copsmode==1)//手动2G网络
{
strcpy((char *)U2.tx_buf“AT+COPS=0000\r\n“);
}
else //自动
{
strcpy((char *)U2.tx_buf“AT+COPS=0\r\n“);
}
usart2_tx_start(U2.tx_bufstrlen((const char *)U2.tx_buf));
step = ME3630_COPS_SET_CHK;
}
break;
}
case ME3630_COPS_SET_CHK:
{
MySemPend(&Usart2Sem5000&err);
if(err == 0x01)
{
if(strstr((const char *)U2.rx_buf“OK“))
{
retry = 0;
NetworkStatus = NET_REGISTER;//1000ms闪!!!!
step = ME3630_CREG;
}
else 
{
retry += 1;
step = ME3630_COPS_SET;
}
}
else if(err == 0x02)
{
retry += 1;
step = ME3630_COPS_SET;
}
if(retry > 3)
{
step = ME3630_ATE0;
}
break;
}
case ME3630_CREG://网络注册
{
if(MyTimeDly(0020))
{
strcpy((char *)U2.tx_buf“AT+CREG?\r\n“);
usart2_tx_start(U2.tx_bufstrlen((const char *)U2.tx_buf));
step=ME3630_CREG_CHK;
}
break;
}
case ME3

评论

共有 条评论