STM32开发 | 移远4G-Cat.1模组EC200N-CN开发

一、硬件说明

1、引脚分配图

在这里插入图片描述文章来源地址https://www.yii666.com/blog/326636.html文章来源地址:https://www.yii666.com/blog/326636.html

2、常用引脚说明

  • 模块输入电源

    引脚名描述
    VBAT_BB模块基带电源(Vnom = 3.8 V)
    VBAT_RF模块射频电源(Vnom = 3.8 V)
    GND接地引脚
  • 模块输出电源

    引脚名描述
    VDD_EXT外部电路 1.8 V 供电(Vnom = 1.8 V)
  • 开/关机

    引脚名描述
    RESET_N模块复位(低电平有效,1.8 V 电压域,不用则悬空。)
    PWRKEY模块开/关机 (VBAT 电压域)
  • SIM 接口

    引脚名描述
    USIM_VDD(U)SIM 供电电源(模块自动识别 1.8 V或 3.0 V (U)SIM 卡。)
    USIM_DATA(U)SIM 数据
    USIM_CLK(U)SIM 时钟
    USIM_RST(U)SIM 复位
  • 主串口

    引脚名描述
    MAIN_TXD主串口发送(1.8 V 电压域)
    MAIN_RXD主串口接收(1.8 V 电压域)
  • 天线接口

    引脚名描述
    ANT_MAIN主天线接口(50 Ω 特性阻抗)

二、常用AT指令说明

1、AT

  • 说明: 检测AT指令收发是否正常
  • 模组收到指令回复:
    AT
    OK
    

2、AT+CPIN?

  • 说明: 查询SIM卡状态(是否插入SIM卡、锁定SIM卡、解锁SIM卡),返回 READY则表示模组正常
  • 模组收到指令回复:
    AT+CPIN?
    +CPIN: READYOK
    

3、AT+CREG?

  • 说明: 查询当前网络注册状态,正常则回复 +CREG: 0,1
  • 模组收到指令回复:
    AT+CREG?
    +CREG: 0,1OK
    

4、AT+CEREG?

  • 说明: 查询当前EPS网络注册状态,正常则回复 +CEREG: 0,1
  • 模组收到指令回复:
    AT+CEREG?
    +CEREG: 0,1OK
    

5、AT+QICSGP=1,1,“CMNET”,“”,“”,0

  • 说明: 配置 TCP/IP 场景1参数,指令原型为AT+QICSGP=<contextID>,<context_type>,<apn>,<username>,<password>,<authentication>;

  • 模组收到指令回复:

    AT+QICSGP=1,1,"CMNET","","",0
    OK
    
  • 参数说明:

    参数说明
    contextID整型。移动场景 ID。范围:1~15。
    context_type整型。协议类型。(1 IPv4 \ 2 IPv6 \ 3 IPv4v6)
    APN字符串类型。接入点名称。(CMNET 中国移动 \ CTNET 中国电信 \ UNINET 中国联通)
    username字符串类型。用户名。最大长度:127 字节。
    password字符串类型。密码。最大长度:127 字节。
    authentication整型。APN 鉴权方式。(0 None \ 1 PAP \ 2 CHAP \ 3 PAP 或 CHAP)

6、AT+QIACT=1

  • 说明: 激活移动场景1配置,正常则回复 OK,指令原型为AT+QIACT=<contextID>;
  • 模组收到指令回复:
    AT+QIACT=1
    OK
    

7、AT+QIOPEN=1,0,“TCP”,“112.168.19.12”,28014,0,2

  • 说明: 打开socket建立TCP连接并进入透传模式,指令原型为AT+QIOPEN=<contextID>,<connectI D>,<service_type>,"<IP_address>/<domain_name>",<remote_port>[,<local_port>[,<access_mode>]]

  • 模组收到指令回复:

    AT+QIOPEN=1,0,"TCP","112.168.19.12",28014,0,2
    CONNECT
    
  • 参数说明:

    参数说明
    contextID整型。移动场景 ID。范围:1~15。
    connectID整型。Socket ID。范围:0~11。
    service_type字符串类型。Socket 服务类型。(“TCP” \ “UDP” \ “TCP LISTENER” \ “UDP SERVICE”)
    IP_address字符串类型。(如果 service_type 是 “TCP” 或者 “UDP”, 则为远程服务器的IP地址,例如112.168.19.12。如果service_type是"TCP LISTENER"或者"UDP SERVICE",请输入 127.0.0.1。)
    domain_name字符串类型。远程服务器的域名地址。
    remote_port整型。远程服务器端口。范围:0~65535。仅当service_type是"TCP"或者"UDP"时才有效。
    local_port整型。本地端口。范围:0~65535。(如果service_type是"TCP LISTENER"或者"UDPSERVICE",该参数必须指定。如果service_type是 “TCP” 或者 “UDP”,且local_port是 0,那么将会自动分配本地端口;否则本地端口会被指定。)
    access_mode整型。Socket 服务的数据访问模式。(0 缓存模式 \ 1 直吐模式 \ 2 透传模式)
  • 透传模式说明

    透传模式下,相对应的串口(比如 UART 口、USB Modem 口等)会进入独占模式,通过 COM 口接收的数据会直接发送到网络端,从网络接收到的数据会从 COM 口直接输出。+++可以用来退出透传模式:当输入+++返回 OK 后,访问模式就会切换到缓存模式,如需切换回透传模式,可使用AT+QISWTMD命令。

  • 退出透传模式

    用户可以通过+++或者 DTR(需先设置 AT&D1)两种方式退出透传模式,为了防止+++被当成数据发送,实际操作时必须遵循以下步骤:网址:yii666.com<

    • +++输入前 1 秒或更长时间内不能输入其它任何数据;
    • 必须在 1 秒内输入+++,并且不能输入其它任何数据;
    • +++输入后 1 秒内不能输入其它任何数据;
    • 通过+++或者 DTR(设置 AT&D1)方式使模块退出透传模式,直到模块返回 OK;此时模块成功退出透传模式。
  • 在透传模式下,不可执行 AT 命令。 若因网络错误或者其他原因导致 Socket 连接断开,模块会上报 NO CARRIER,并退出透传模式,在这种情况下可以执行 AT+QICLOSE 来关闭 Socket 服务。文章地址https://www.yii666.com/blog/326636.html

三、实现流程

四、程序代码

  • 串口发送代码

    #include "stm32f10x.h"
    #include "stm32f10x_conf.h"/*** @brief  串口1发送字符串* @param  pStr: 字符串指针* @retval None*/
    void USART1_SendStr(char *pStr)
    {uint8_t tx_str;while(1){tx_str = *pStr++;if(tx_str == 0) break;USART_ClearFlag(USART1, USART_FLAG_TC);USART_SendData(USART1, tx_str);while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);}
    }/*** @brief  串口2发送字符串* @param  pStr: 字符串指针* @retval None*/
    void USART2_SendStr(char *pStr)
    {uint8_t tx_str;while(1){tx_str = *pStr++;if(tx_str == 0) break;USART_ClearFlag(USART2, USART_FLAG_TC);USART_SendData(USART2, tx_str);while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);}
    }/*** @brief  串口1发送命令帧* @param  pcmd: 命令帧指针* 		count: 命令帧长度* @retval None*/
    void USART1_SendCmd(uint8_t *pcmd, uint16_t count)
    {uint8_t tx_cmd;uint16_t i;for(i=0; i < count; i++){tx_cmd = *pcmd++;USART_ClearFlag(USART1, USART_FLAG_TC);USART_SendData(USART1, tx_cmd);while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);}
    }
  • EC200N-CN驱动程序网址:yii666.com

    /*** @brief  EC200N-CN初始化* @param  step: 步骤* @retval step: 步骤值*/
    uint16_t LTEUECat1Init(uint16_t step)
    {switch(step){case 0://查询AT指令是否正常SendCmd("AT\r\n", "OK", "Error: AT\r\n", 10, step);if(step == 0) break;case 1://检测SIM卡状态SendCmd("AT+CPIN?\r\n", "+CPIN: READY", "Error: AT+CPIN?\r\n", 2, step);if(step == 1) break;case 2://查询当前网络注册状态SendCmd("AT+CREG?\r\n", "+CREG: 0,1", "Error: AT+CREG?\r\n", 1, step);if(step == 2) break;case 3://查询当前EPS网络注册状态SendCmd("AT+CEREG?\r\n", "OK", "Error: AT+CEREG?\r\n", 1, step);if(step == 3) break;case 4://配置移动场景参数SendCmd("AT+QICSGP=1,1,\"CMNET\",\"\",\"\",0\r\n", "OK", "Error: AT+QICSGP\r\n", 1, step);if(step == 4) break;default: break;}if(step == 4){//激活移动场景USART2_SendStr("AT+QIACT=1\r\n");//等待30swhile(3000--){if(strstr((const char*)com2_rx_buffer, "OK") != NULL){step = 5;break;}else delay_ms(100);}}return step;
    }/*** @brief  发送AT指令进行初始化* @param  cmd: 命令帧指针* 		echo: 判断字收到的数据中所出现的字符* 		num: 发送命令帧的次数* 		count: 返回值* @retval None*/
    uint16_t SendCmd(char *cmd, char *echo, char *error, uint16_t num, uint16_t count)
    {for(int i = 0; i < num; i++){USART2_SendStr(cmd);//延时1秒delay_ms(1000);//判断接收到的数据中是否存在指定字符if(strstr((const char*)com2_rx_buffer, echo) != NULL) {//向串口输出USART2接收到的数据USART1_SendStr(echo);//初始化缓存memset(com2_rx_buffer, 0, sizeof(com2_rx_buffer));count++;return count;}else{USART1_SendStr(error);}}return 0;
    }/*** @brief  连接网络* @param  None* @retval None*/
    void LTEUECat1Connect(void)
    {short times = 3000;USART2_SendStr("AT+QIOPEN=1,0,\"TCP\",\"112.168.19.12\",28014,0,2\r\n");while(times--){if(strstr((const char*)com2_rx_buffer, "CONNECT") != NULL){USART1_SendStr("Connect OK!\r\n");break;}else delay_ms(100);}
    }
    

五、例程说明

  • STM32芯片串口USART2与EC200N-CN串口MAIN_TXD跟MAIN_RXD
  • 串口通讯采用DMA中断模式
  • ECC200N-CN默认串口通讯速率为115200

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/54448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试技术分享丨使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

设计模式之工厂方法模式

目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 1.抽象产品 2.具体产品 3.抽象工厂 4.具体工厂 5.调用 总结 抽象工厂模式 简介 结构 实现 区别 工厂方法模式 简介 提供一个用于创建对象的接口(工厂接口)&#xff0c;让其实现类(工厂实现类)决定实例化哪…

Redis内存策略

文章目录 Redis内存策略过期策略DB结构惰性删除周期删除 淘汰策略 Redis内存策略 Redis是基于内存存储&#xff0c;所以其性能很强。但单节点的Redis内存不宜过大&#xff0c;否则会影响持久化或主从同步性能。 可以手动修改配置文件来设置Redis的最大内存 # 格式&#xff1…

【Unity3D赛车游戏】【五】Unity中汽车加速效果是如何优化的?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【滑动窗口】leetcode3:无重复字符的最长子串

一.题目描述 无重复字符的最长子串 二.思路分析 题目要求我们找符合要求的最长子串&#xff0c;要求是不能包含重复字符 确定一个子串只需确定它的左右区间即可&#xff0c;于是我们可以两层循环暴力枚举所有的子串&#xff0c;找到符合要求的&#xff0c;并通过比较得到最长…

软件工程(十五) 行为型设计模式(一)

1、责任链模式 简要说明 通过多个对象处理的请求,减少请求的发送者与接收者之间的耦合。将接受对象链接起来,在链中传递请求,直到有一个对象处理这个请求。 速记关键字 传递职责 类图如下 由类图可以比较容易的看出来,其实就是自己关联自己,形成了一个链,并且自己有…

解锁Selenium的力量:不仅仅是Web测试

Selenium简介 Selenium&#xff0c;作为Web应用测试的领军者&#xff0c;已经成为了无数开发者和测试人员的首选工具。它不仅仅是一个自动化测试工具&#xff0c;更是一个强大的Web应用交互框架。 Selenium的起源与发展 Selenium的历史可以追溯到2004年&#xff0c;由Jason Hu…

CGLIB代理,jsp,EL表达式,JSTL标准标签库

1、CGLIB代理 有一个类没有实现接口&#xff0c;想要对这个类实现增强&#xff0c;就需要使用CGLIB代理 导入CGLIB的包 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version> </depende…

VictoriaLogs:一款超低占用的 ElasticSearch 替代方案

image.png 背景 前段时间我们想实现 Pulsar 消息的追踪流程&#xff0c;追踪实现的效果图如下&#xff1a; 实现其实比较简单&#xff0c;其中最重要的就是如何存储消息。 消息的读取我们是通过 Pulsar 自带的 BrokerInterceptor 实现的&#xff0c;对这个感兴趣的朋友后面会单…

1.6 服务器处理客户端请求

客户端进程向服务器进程发送一段文本&#xff08;MySQL语句&#xff09;&#xff0c;服务器进程处理后再向客户端进程发送一段文本&#xff08;处理结果&#xff09;。 从图中我们可以看出&#xff0c;服务器程序处理来自客户端的查询请求大致需要经过三个部分&#xff0c;分别…

35、下载、安装 jdk11 记录,Idea中把项目从 jdk8 换 jdk 11

之前一直用jdk8&#xff0c;现在改成 11的试试看 登录官网下载这个11 https://www.oracle.com/cn/java/technologies/downloads/#java11-windows 下载jdk的oracle官网 需要自己注册oracle账户 修改环境变量的 JAVA_HOME Path 路径这里原本添加8的时候有了&#xff0c;不…

让大数据平台数据安全可见-行云管家

数字化经济在快速发展&#xff0c;大数据时代已经到来&#xff0c;大数据已经成为企业和政府决策的重要依据。然而大数据行业快速发展所带来的一系列安全问题也继续解决&#xff0c;例如数据安全更难保障&#xff0c;例如认证体系不完善等等。为此行云管家推出了大数据平台数据…

Redis从基础到进阶篇(二)----内存模型与内存优化

目录 一、缓存通识 1.1 ⽆处不在的缓存 1.2 多级缓存 &#xff08;重点&#xff09; 二、Redis简介 2.1 什么是Redis 2.2 Redis的应用场景 三、Redis数据存储的细节 3.1 Redis数据类型 3.2 内存结构 3.3 内存分配器 3.4 redisObject 3.4.1 type 3.4.2 encoding 3…

【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶

大家好&#xff01;继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型&#xff0c;而Go语言为我们提供了一系列实用的字符串函数&#xff0c;方便我们进行各种操作&#xff0c;如查找、截取、替换等。在上一篇博客的基础上&#xff0c;我们将继续介绍更多字…

基于Java+SpringBoot+Vue前后端分离工厂车间管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+Vue前后端分离纺织品企业财务管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

前端学习记录~2023.8.10~JavaScript重难点实例精讲~第6章 Ajax

第 6 章 Ajax 前言6.1 Ajax的基本原理及执行过程6.1.1 XMLHttpRequest对象&#xff08;1&#xff09;XMLHttpRequest对象的函数&#xff08;2&#xff09;XMLHttpRequest对象的属性 6.1.2 XMLHttpRequest对象生命周期&#xff08;1&#xff09;创建XMLHttpRequest对象&#xff…

kubernetes--技术文档--可视化管理界面dashboard安装部署

阿丹&#xff1a; 使用官方提供的可视化界面来完成。 Kubernetes Dashboard是Kubernetes集群的Web UI&#xff0c;用户可以通过Dashboard进行管理集群内所有资源对象&#xff0c;例如查看资源对象的运行情况&#xff0c;部署新的资源对象&#xff0c;伸缩Deployment中的Pod数量…

Linux命令200例:telnet用于远程登录的网络协议(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

java八股文面试[JVM]——垃圾回收器

jvm结构总结 常见的垃圾回收器有哪些&#xff1f; CMS&#xff08;Concurrent Mark Sweep&#xff09; 整堆收集器&#xff1a; G1 由于整个过程中耗时最长的并发标记和并发清除过程中&#xff0c;收集器线程都可以与用户线程一起工作&#xff0c;所以总体上来说&#xff0c;…