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

news2024/9/28 11:13:02

一、硬件说明

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: READY
    
    OK
    

3、AT+CREG?

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

4、AT+CEREG?

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

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");
    		//等待30s
    		while(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.coloradmin.cn/o/933985.html

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

相关文章

SQL Server软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SQL Server是一种关系型数据库管理系统&#xff0c;由美国微软公司开发。它被设计用于存储、管理和查询数据&#xff0c;被广泛应用于企业级应用、数据仓库和电子商务等场景。 以下是SQL Server软件的主要特点和功能&#xff1…

春秋云镜 CVE-2022-0788

春秋云镜 CVE-2022-0788 wordpress插件 WP Fundraising Donation and Crowdfunding Platform < 1.5.0 SQLI 靶标介绍 wordpress插件 WP Fundraising Donation and Crowdfunding Platform < 1.5.0 的其中一个REST路由在SQL语句使用时没有对参数进行过滤&#xff0c;导致…

Visual Assist 10.9.2500 Crack

General Release Build 2023.3 (2491) Requires active software maintenance through general release date: 2023.05.24 NEW Added parser support for “is” operators in C#. UPDATE Code inspection engine updated to LLVM/Clang version 16. Summary: VA 2023.3 is …

学信息系统项目管理师第4版系列02_法律法规

1. 信息安全的法律体系可分为四个层面 1.1. 一般性法律法规&#xff0c;如宪法、国家安全法&#xff0c;国家秘密法 1.2. 规范和惩罚信息网络犯罪的法律&#xff0c;如刑法、《全国人大常委会关于维护互联网安全的决定》等 1.3. 直接针对信息安全的特别规定&#xff0c;如《…

兵力集中更容易进攻获胜

我兵力集中&#xff0c;敌兵力分散&#xff0c;进攻可胜 【安志强趣讲《孙子兵法》第21讲】 【原文】 进而不可御者&#xff0c;冲其虚也&#xff1b;退而不可追者&#xff0c;速而不可及也。 【趣讲白话】 进攻时&#xff0c;敌人无法抵御&#xff0c;那是攻击了敌人空虚的地方…

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能&#xff1a; 集成开发环境&#x…

如何使用基于SSH密钥的身份验证来实现安全地远程登录?

SSH密钥身份验证的优势SSH密钥身份验证的原理设置基于SSH密钥的身份验证感谢 &#x1f496; hello大家好&#x1f60a; 当涉及远程访问和安全通信时&#xff0c;SSH&#xff08;Secure Shell&#xff09;密钥身份验证成为一种强大的工具。SSH密钥身份验证通过使用公钥和私钥的组…

Cocos独立游戏开发框架中的事件管理器

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。在独立游戏开发中&#xff0c;事件管理器是一个不可或缺的组件。它为开发者提供了一种灵活的方式来处理游戏内部各种状态变化和用户交互&#xff0c;实现模块之间的解耦和通信…

BDCC - 闲聊数据仓库的架构

文章目录 典型数据仓库架构图数据仓库ETL vs ELTETLELT区别联系 数据仓库分层&#xff08;1&#xff09;数据仓库ODS层&#xff08;2&#xff09;数据仓库CDM层DWD数据明细层DWS数据汇总层 &#xff08;3&#xff09;数据仓库ADS层 典型数据仓库架构图 按自下而上的顺序&#x…

Linux系统---信号

文章目录 信号是什么信号的产生信号的系统调用接口软件条件产生信号硬件异常产生信号阻塞信号信号处理 一、信号是什么 1.生活中的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来。但即便快递没有到来&#xff0c;你也知道快递来临时&#xff0c; 你该怎么…

基于Java+SpringBoot+Vue前后端分离景区民宿预约系统设计和实现

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

Python3 元组

Python3 元组 Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 实例(Python 3.0) >>> tup1 (Go…

slice(切片)

在Python中&#xff0c;切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素&#xff0c;而切片取出序列中一个范围对应的元素&#xff0c;这里的范围不是狭义上的连续片段。 切片的基本语法为&#xff1a; object…

NPM 管理组织包

目录 1、关于组织范围和包 1.1 管理无作用域的包 2、使用组织设置配置npm客户端 2.1 配置您的npm客户端以使用您组织的范围 为所有新包设置组织范围 为单个包设置组织范围 2.2 将默认包可见性更改为public 将单个包的包可见性设置为public 将所有包的包可见性设置为pu…

字节一面:闭包是什么?闭包的用途是什么?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;因为在前端开发的日常开发中我们经常会用到闭包&#xff0c;我们会借助闭包来封装一些工具函数&#xff0c;所以更深的了解闭包是很有必要的&#xff0c;博主在这给大家细细…

C#,《小白学程序》第三课:类、类数组与排序

1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /// 学号 /// </summary> public int Id; /// <summary> /// 姓名 /// </summary> public string Nam…

MongoDB 双机热备那篇文章是 “毒”

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis &#xff0c;Oracle ,Oceanbase 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加微信号 liuaustin3 &#xff08;…

Web服务器基础 http协议

文章目录 1.Web基础1.1MIME1.2 URI 和 URL1.2.1定义1.2.2两者的区别 2.静态资源和动态资源2.1 静态资源2.2 动态资源 3.HTTP协议3.1HTTP协议简介3.2HTTP协议的版本及区别3.2.1http协议版本3.2.2http1.0和1.1的区别 3.3HTTP请求报文3.4HTTP请求访问的过程1、建立连接&#xff1a…

word 调整列表缩进

word 调整列表缩进的一种方法&#xff0c;在试了其他方法无效后&#xff0c;按下图所示顺序处理&#xff0c;编号和文字之间的空白就没那么大了。 即右键word上方样式->点击修改格式->定义新编号格式->字体->取消勾选 “……对齐到网格”->确定

微服务框架 go-zero logx 日志组件剖析

addTenant api 和 rpc 的实现 上一篇我们说到咱们还剩下 addTenant 功能还未实现&#xff0c;不知道有没有兄弟感兴趣去实验一波的&#xff0c;本篇文章进行简要补充 根据上一篇文章分析&#xff0c;其实我们只需要执行如下几步即可&#xff1a; 编写 tenant.api&#xff0c…