Cat.1模块使用总结(EC600N)

由于Cat.4模块(EC20)功耗大,考虑到NB网络覆盖问题(设备在野外工作场景),因此项目上用选择了Cat.1(EC600N)模块,现在把调试过程总结下,希望能够帮助到大家。EC20使用总结请看:单片机和4G模块通信总结(EC20)

一、电源

手册说供电电压≥3.4V,峰值电流3A。

二、通信口

UART和IO口都是1.8V,需要做电平准换。

三、开机顺序

我是上电1s后复位,复位低电平600ms,然后100ms后开机,开机等待10s后进行操作。

四、AT指令

采用消息地图原理,具体请看

《AT指令的一种解析想法》

《编程学习笔记之消息地图》

 指令和Cat.4还是有些区别:

const static msg_t c_tMSGMap[]  =  {
    {"ATE0\r\n",                lte_4g_protocol_default_send},
    {"ATE0\r\n",                lte_4g_protocol_default_send},
    {"ATE0\r\n",                lte_4g_protocol_default_send},
    {"ATE0\r\n",                lte_4g_protocol_default_send},
    {"AT+CPIN?\r\n",            lte_4g_protocol_CPIN},
    {"AT+CSQ\r\n",              lte_4g_protocol_CSQ},
    {"AT+CREG?\r\n",            lte_4g_protocol_CREG},
    //{"AT+CGREG?\r\n",           lte_4g_protocol_CGREG},
//    {"AT$MYNETCON",             lte_4g_protocol_MYNETCON},          //设置APN
//    {"AT$MYNETCON1",            lte_4g_protocol_MYNETCON1},         //设置用户名和密码
    {"AT+QICSGP",               lte_4g_protocol_QICSGP},            //设置APN,用户名和密码
//    {"AT$MYNETACT=0,0\r\n",     lte_4g_protocol_MYNETACT},          //去激活
//    {"AT$MYNETACT=0,1\r\n",     lte_4g_protocol_default_send},      //激活
//    {"AT$MYNETACT?\r\n",        lte_4g_protocol_default_send},      //是否激活成功
    {"AT+QIDEACT=1\r\n",        lte_4g_protocol_MYNETACT},          //去激活
    {"AT\r\n",                  lte_4g_protocol_default_send},
    {"AT\r\n",                  lte_4g_protocol_default_send},
    {"AT+QIACT=1\r\n",          lte_4g_protocol_default_send},      //激活
    {"AT+QIACT?\r\n",           lte_4g_protocol_default_send},      //是否激活成功
//    {"AT$MYNETSRV",             lte_4g_protocol_MYNETSRV},          //配置服务器IP和端口号
    {"AT+QICLOSE=0\r\n",        lte_4g_protocol_MYNETCLOSE},        //关闭socket
    {"AT+QIOPEN",               lte_4g_protocol_QIOPEN},            //创建socket
//    {"AT+QISTATE=1,0\r\n",      lte_4g_protocol_default_send},      //查询连接状态
};

 五、socket客户端操作

5.1通信模式

有三种通信模式:

5.2创建TCP客户端

指令执行流程如消息地图所示,其中AT+QIOPEN 打开Socket 服务

六、数据发送与接收

6.1AT+QISEND 发送数据

说明:

1、此命令只有在缓存模式和直吐模式才有效;

2、此命令发送的是文本格式;

3、此命令需要等待响应‘>’后,再发送用户数据,然后发送<Ctrl+Z> ,发送数据;

6.2AT+QISENDEX 发送16 进制字符串数据

说明:

1、此命令在缓存模式下测试OK,其它模式未测试;

2、此命令支持16进制字符,即:

AT+QISENDEX=0,\"123456ABCDEFTG\"\r\n 返回错误

AT+QISENDEX=0,\"123456ABCDEF\"\r\n 正确,并且服务器收到0x12 0x34 0x56 0xAB 0xCD 0xEF

6.3AT+QIRD 读取收到的TCP/IP 数据

 此模式只在缓存模式有用。

由于我的项目需要支持多种协议,既有RTU(16进制)协议,又有MQTT(文本)协议,因此我配置模块为透传模式。

接收处理如下:

//透明传输出错怎么处理?
static fsm_rt_t lte_4g_protocol_transparent_transmission_ack(uint8_t* pchBuffer,uint16_t hwSize)
{
    uint16_t    n=0;

    if(NULL == pchBuffer || !hwSize){
        return fsm_rt_err;
    }

    if(NULL != strstr((const char*)pchBuffer,"ERROR")){
        POST_MAIL(&s_tLte4gAppBuffer.tMailBoxTemp,(void*)LTE_4G_MAIL_ERROR);
        //printf("mail=%d\r\n",LTE_4G_MAIL_ERROR);
        return fsm_rt_err;
    }else if(NULL != strstr((const char*)pchBuffer,"CARRIER")){//检查到服务器断开
        POST_MAIL(&s_tLte4gAppBuffer.tMailBoxTemp,(void*)LTE_4G_MAIL_ERROR);
        return fsm_rt_err;
    }

    n=(s_tLte4gAppBuffer.hwAPPRxBufferSize+hwSize > UART_BUFFER_SIZE)? (UART_BUFFER_SIZE - s_tLte4gAppBuffer.hwAPPRxBufferSize): hwSize;
    memcpy(s_tLte4gAppBuffer.chAPPRxBuffer+s_tLte4gAppBuffer.hwAPPRxBufferSize,pchBuffer,n);
    if(eeprom_4g_rx_log_is_activate()){
        uint16_t i=0;
        for(i=0;i<n;i++){
            log_in_hex(s_tLte4gAppBuffer.chAPPRxBuffer[s_tLte4gAppBuffer.hwAPPRxBufferSize+i]);
        }
    }            
    s_tLte4gAppBuffer.hwAPPRxBufferSize+=n;

    POST_MAIL(&s_tLte4gAppBuffer.tMailBoxTemp,(void*)LTE_4G_MAIL_OK);
    return fsm_rt_cpl;
}

  • 0
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值