建站网址什么意思,定制做网站开发,济南网站建设伍际网络,免费h5模板网站一、简介 EC200S-CN 是移远通信最近推出的 LTE Cat 1 无线通信模块#xff0c;支持最大下行速率 10Mbps 和最大上行速率 5Mbps#xff0c;具有超高的性价比#xff1b;同时在封装上兼容移远通信多网络制式 LTE Standard EC2x#xff08;EC25、EC21、EC20 R2.0、EC20 R2.1支持最大下行速率 10Mbps 和最大上行速率 5Mbps具有超高的性价比同时在封装上兼容移远通信多网络制式 LTE Standard EC2xEC25、EC21、EC20 R2.0、EC20 R2.1和 EC200T/EG25-G/EG21-G 模块以及 UMTS/HSPA UC20/UC200T 模块实现了 3G 网络与 4G 网络之间的无缝切换。EC200S-CN 还支持标准的 Mini PCIe 封装以满足不同行业产品应用需求。 Quectel EC2x 模块具有嵌入式 TCP/IP堆栈使主机可以通过 AT 命令直接上网。可以实现TCP客户端、UDP客户端、TCP服务器和UDP服务器。 二、AT指令
2.1 AT
测试AT指令功能是否正常等待模块返回 OK。 ATOK2.2 AT CPIN?
查询 SIM 卡状态返回 READY 则表示SIM卡正常如果 20 秒后还无法识别 SIM 卡重新启动模块。 ATCPIN?CPIN: READYOK2.3 AT CREG?
查询模组是否注册上GSM网络如果 90秒后未能在 CS 上注册域名服务重新启动模块。 如果返回 1 或 5 代表 CS 服务注册成功。 CREG:0,1 表示已注册上本地网CREG:0,5表示注册上漫游网。 ATCREG?CREG: 0,1OK2.4 AT CGREG?
查询模组是否注册上GPRS网络CGREG:0,1 表示已注册上本地网CGREG:0,5表示注册上漫游网。 ATCGREG?CGREG: 0,1OK2.5 AT QICSGP1,1,“CMNET”
该命令可用于配置APNusernamepassword等TCP / IP上下文参数。QoS设置可以由AT CGQMINAT CGEQMINAT CGQREQ和AT CGEQREQ配置 。
ATQICSGP?查询命令参数。ATQICSGPcontextID查询 contextID的配置信息。ATQICSGPcontextID[,context_type,APN[,username,password)[,authentication]]]配置 contextID信息。 contextID整数类型。上下文ID。范围是1-16。context_type整数类型。协议类型。1IPV4、2IPV4V6。APN字符串类型。接入点名称。移动CMNET联通UNINETusername字符串类型。用户名。password字符串类型。密码。authentication整数类型。身份验证方法。0没有、1PAP、2CHAP、3PAP或CHAP。返回信息OK 或 ERROR。 ATQICSGP1,1,\CMNET\,\\,\\,1OK2.6 AT QIDEACT1
在激活GPRS场景之前先关闭GPRS场景确保连接正确 ATQIDEACT1OK2.7 AT QIACT1
激活移动场景 ATQIACT1OK2.8 ATQIOPEN
该命令用于打开套接字服务。
ATQIOPEN?查询命令参数。ATQIOPENcontextID,connectID,service_type,IP_address/domain_name,remote_port[,local_po CONNECTrt[,access_mode]] 打开 Socket 服务。 contextID 整数类型。上下文ID。范围是1-16。connectID 整数类型。套接字服务索引。范围是0-11。SERVICE_TYPE字符串类型。套接字服务类型。 “ TCP ” 作为客户端启动TCP连接“ UDP ”作为客户端启动UDP连接“TCP LISTENER” 启动TCP服务器以侦听TCP连接“UDP SERVICE” 启动UDP服务IP_address字符串类型。 如果service_type是TCP或UDP 则表示远程服务器的IP地址例如 “220.180.239.212”。如果service_type是TCP LISTENER或UDP SERVICE 地址请输入“127.0.0.1”。domain_name字符串类型。远程服务器的域名地址。remote_port 远程服务器的端口仅在service_type为“TCP”或“UDP”时有效。范围是0-65535。LOCAL_PORT 本地端口。范围是0-65535。 如果service_type是“TCP LISTENER”或“UDP SERVICE”则此参数必须指定。如果service_type是“TCP”或“UDP”。如果local_port为0那么本地端口将是自动分配。否则将按指定分配本地端口。access_mode 整数类型。套接字服务的数据访问模式。 0 缓冲区访问模式1直推模式2透明访问模式err整数类型。操作的错误代码。请参阅第4章。 ATQIOPEN1,0,\TCP\,\180.97.81.180\,53540,0,1OKQIOPEN: 0,0Buffer模式Push模式透传模式。通过参数access_mode进行配置。 2.9 AT QISEND
如果指定套接字服务的access_mode是缓冲区访问模式或直接推送模式则数据可以是通过AT QISEND发送。如果数据成功发送到模块将返回“ SEND OK ” 。否则它将返回“ SEND FAIL ” 或“ ERROR ” 。“ SEND FAIL ” 表示发送缓冲区已满客户可以尝试重新发送数据。“ERROR”表示在发送过程中遇到错误 数据。客户应该延迟一段时间来发送数据。最大数据长度为1460字。“SEND OK”并不意味着数据已成功发送到服务器。客户可以查询数据是否通过AT QISEND connectID0命令到达服务器。透传模式下不需要AT指令发送数据 三、TCP/IP AT命令拨号流程 四、复位模块
RESET_N 引脚可用于使模块复位。拉低 RESET_N 引脚至少 300 ms 后释放可使模块复位。RESET_N 信号对干扰比较敏感因此建议在模块接口板上的走线应尽量的短且需包地处理。 五、移植文件
5.1 board_ec200s.c /********************************************************************** INCLUDES*/
#include stdlib.h
#include string.h
#include stm32f10x.h
#include FreeRTOS.h
#include task.h #include board_ec200s.h uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
void clearBuffer(void);
void reset(void);/********************************************************************** GLOBAL VARIABLES*/
uint8_t g_usart2RecvFinish 0; // 串口2接收标志串口接收完成标志
char g_ec200sBuf[1024] {0}; // 接收缓存
uint32_t g_ec200sCnt 0; // 接收计数 /********************************************************************** PUBLIC FUNCTIONS*/
/**brief 初始化param 无return 1 - 成功0 - 失败
*/
uint8_t EC200S_Init(void)
{ printf(EC200S_Init\r\n);uint8_t result 0;uint8_t step 0;switch(step){case 0:if(sendCmd(AT\r\n,OK, 10, 5)) // 测试AT指令功能是否正常{step;}else{printf(Err:AT\r\n);reset();break;} case 1:if(sendCmd(ATCPIN?\r\n,CPIN: READY, 20, 2)) // 查询SIM卡是否正常返回ready则表示SIM卡正常{step;}else{printf(Err:ATCPIN?\r\n); // 20秒内无法识别SIM状态重启模块reset();break;}case 2:if(sendCmd(ATCREG?\r\n,CREG: 0,1, 90, 2)) // 查询模组是否注册上GSM网络{step; }else{printf(Err:ATCREG?\r\n); // 90秒内没有注册上CS业务重启模块 reset();break;}case 3:if(sendCmd(ATCGREG?\r\n,CGREG: 0,1, 60, 2)) // 查询模组是否注册上GPRS网络{step; }else{printf(Err:ATCGREG?\r\n); // 60秒内没有注册上PS业务reset(); break;}case 4:if(sendCmd(ATQICSGP1,1,\CMNET\,\\,\\,1\r\n, OK, 40, 3)) // 查询模组是否注册上GPRS网络{result EC200S_NetConfig(); }else{printf(Err:ATQICSGP1,1\r\n); // 如果3次都没停止成功或超过40秒没有回应则重启模块reset();break;}}return result;
}/**brief 网络配置param 无return 无
*/
void EC200S_GpioConfig(void)
{GPIO_InitTypeDef gpioInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能GPIOgpioInitStructure.GPIO_Pin GPIO_Pin_8; // 选择要初始化的GPIOB引脚PB8gpioInitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 设置引脚工作模式为通用推挽输出 gpioInitStructure.GPIO_Speed GPIO_Speed_50MHz; // 设置引脚输出最大速率为50MHzGPIO_Init(GPIOB, gpioInitStructure);
}/**brief 网络配置param 无return 1 - 成功0 - 失败
*/
uint8_t EC200S_NetConfig(void)
{ uint8_t result 0;if(sendCmd(ATQIDEACT1\r\n, OK, 40, 1)) // 在激活GPRS场景之前先关闭GPRS场景确保连接正确{if(sendCmd(ATQIACT1\r\n, OK, 150, 1)) // 激活移动场景{EC200S_Connect();} else // 等待150秒后没有响应重启模块{printf(Err:ATQIACT1\r\n); // 重启模块reset();}} else // 等待40秒后没有响应重启模块{printf(Err:ATQIDEACT1\r\n); // 重启模块reset();}
}/**brief 连接TCP服务器param 无return 无
*/
void EC200S_Connect(void)
{if(sendCmd(ATQIOPEN1,0,\TCP\,\180.97.81.180\,53540,0,1\r\n, QIOPEN:, 150, 5)) {printf(Connect Success\r\n);} else{printf(Err:ATQIOPEN1,0\r\n);}
}/**brief 发送数据到TCP服务器param pString -[in] 发送数据return 无
*/
void EC200S_Send(char *pString)
{if(sendCmd(ATQISEND0\r\n, , 60, 1)) {if(sendCmd(ATQISEND0,0\r\n, OK, 5, 24)) // 2分钟后每5秒查询一次共24次{/* 发送数据成功对方收到数据 */}else{printf(Err:ATQISEND0\r\n); if(sendCmd(ATQICLOSE0\r\n, OK, 10, 1)) // TCP连接出现异常关闭TCP连接{printf(ATQICLOSE\r\n);EC200S_Connect();}else{reset(); // 等待10秒没有响应重启模块} }}else{reset(); // 等待60秒没有响应重启模块}
}/**brief 从TCP服务器接收数据param pRecvDataBuf -[out] 接收数据return 接收数据长度
*/
uint32_t EC200S_Receive(char *pRecvDataBuf)
{uint32_t recvDataLen 0;if(g_isUsart2RecvFinish) // 如果串口接收完成{if(strstr((const char *)g_ec200sBuf, QIURC: \recv\,0,) ! NULL) // 如果检索到关键词{memcpy(pRecvDataBuf, g_ec200sBuf, g_ec200sCnt);recvDataLen g_ec200sCnt;}clearBuffer();} return recvDataLen;
}/********************************************************************** LOCAL FUNCTIONS*/
/**brief 发送AT命令param pCmd -[in] 命令字符串param pRes -[in] 需要检测的返回命令字符串param timeOut -[in] 等待时间param sendNum -[in] 命令发送次数return 1 - 成功0 - 失败
*/
uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
{uint8_t i 0;uint32_t time;clearBuffer(); // 清空缓存 for(i 0; i sendNum; i){time timeOut * 10;USART_SendString(USART2, pCmd);while(time--){if(g_usart2RecvFinish) // 如果串口接收完成{if(strstr((const char *)g_ec200sBuf, pRes) ! NULL) // 如果检索到关键词{printf(%s, g_ec200sBuf);return 1;}} vTaskDelay(100); // 等待100毫秒}clearBuffer();}return 0;
}/**brief 清空缓存param 无return 无
*/
void clearBuffer(void)
{memset(g_ec200sBuf, 0, sizeof(g_ec200sBuf));g_ec200sCnt 0;g_usart2RecvFinish 0;
}/**brief 重启模块param 无return 无
*/
void reset(void)
{printf(reset\n); GPIO_ResetBits(GPIOB, GPIO_Pin_8);vTaskDelay(2000);GPIO_SetBits(GPIOB, GPIO_Pin_8);
}/****************************************************END OF FILE****************************************************/4.2 board_ec200s.h #ifndef _BOARD_EC200S_H_
#define _BOARD_EC200S_H_/********************************************************************** INCLUDES*/
#include stm32f10x.h/********************************************************************** GLOBAL VARIABLES*/
extern uint8_t g_usart2RecvFinish; // 串口2接收标志串口接收完成标志
extern char g_ec200sBuf[1024]; // 接收缓存
extern uint32_t g_ec200sCnt; // 接收计数/********************************************************************** API FUNCTIONS*/
uint8_t EC200S_Init(void);
void EC200S_GpioConfig(void);
uint8_t EC200S_NetConfig(void);
void EC200S_Connect(void);
void EC200S_Send(char *pString);
uint32_t EC200S_Receive(char *pRecvDataBuf);#endif /* _BOARD_EC200S_H_ */六、使用方法 EC200S_GpioConfig();
EC200S_Init();
while(1) // 任务都是一个无限循环不能返回
{EC200S_Send(TEST);vTaskDelay(10000); char recvDataBuf[256] {0};int recvDataLen EC200S_Receive(recvDataBuf);
}/**brief 串口2收发中断param 无return 无
*/
void USART2_IRQHandler(void)
{if(USART_GetITStatus(USART2, USART_IT_RXNE) ! RESET) // 接收中断{g_usart2RecvFinish 1; // 串口2接收标志if(g_ec200sCnt sizeof(g_ec200sBuf)){g_ec200sCnt 0; // 防止串口被刷爆}g_ec200sBuf[g_ec200sCnt] USART2-DR;USART_ClearFlag(USART2, USART_FLAG_RXNE);}
} 文章转载自: http://www.morning.cczrw.cn.gov.cn.cczrw.cn http://www.morning.lswgs.cn.gov.cn.lswgs.cn http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn http://www.morning.ujianji.com.gov.cn.ujianji.com http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn http://www.morning.lsqxh.cn.gov.cn.lsqxh.cn http://www.morning.nlbw.cn.gov.cn.nlbw.cn http://www.morning.fpyll.cn.gov.cn.fpyll.cn http://www.morning.clkyw.cn.gov.cn.clkyw.cn http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.clwhf.cn.gov.cn.clwhf.cn http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn http://www.morning.zbnts.cn.gov.cn.zbnts.cn http://www.morning.pcqxr.cn.gov.cn.pcqxr.cn http://www.morning.jfymz.cn.gov.cn.jfymz.cn http://www.morning.xkppj.cn.gov.cn.xkppj.cn http://www.morning.kbntl.cn.gov.cn.kbntl.cn http://www.morning.qzpqp.cn.gov.cn.qzpqp.cn http://www.morning.mglqf.cn.gov.cn.mglqf.cn http://www.morning.bsxws.cn.gov.cn.bsxws.cn http://www.morning.rcyrm.cn.gov.cn.rcyrm.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.kdfqx.cn.gov.cn.kdfqx.cn http://www.morning.zdxss.cn.gov.cn.zdxss.cn http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.xcyzy.cn.gov.cn.xcyzy.cn http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn http://www.morning.hwhnx.cn.gov.cn.hwhnx.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.ebpz.cn.gov.cn.ebpz.cn http://www.morning.tkgjl.cn.gov.cn.tkgjl.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.hsksm.cn.gov.cn.hsksm.cn http://www.morning.sfrw.cn.gov.cn.sfrw.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.fcqlt.cn.gov.cn.fcqlt.cn http://www.morning.mfrb.cn.gov.cn.mfrb.cn http://www.morning.dsgdt.cn.gov.cn.dsgdt.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.nfyc.cn.gov.cn.nfyc.cn http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn http://www.morning.tnrdz.cn.gov.cn.tnrdz.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.nhdmh.cn.gov.cn.nhdmh.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.kwcnf.cn.gov.cn.kwcnf.cn http://www.morning.flchj.cn.gov.cn.flchj.cn http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn http://www.morning.qtqk.cn.gov.cn.qtqk.cn http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn http://www.morning.cfmrb.cn.gov.cn.cfmrb.cn http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn http://www.morning.rmryl.cn.gov.cn.rmryl.cn http://www.morning.sbjhm.cn.gov.cn.sbjhm.cn http://www.morning.yjfzk.cn.gov.cn.yjfzk.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.mplb.cn.gov.cn.mplb.cn http://www.morning.kaylyea.com.gov.cn.kaylyea.com http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.rnpnn.cn.gov.cn.rnpnn.cn http://www.morning.htjwz.cn.gov.cn.htjwz.cn http://www.morning.bkkgt.cn.gov.cn.bkkgt.cn http://www.morning.lxthr.cn.gov.cn.lxthr.cn http://www.morning.pphbn.cn.gov.cn.pphbn.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.wdwfm.cn.gov.cn.wdwfm.cn