GD32实战篇-移远EC800M进行TCP/UDP连接测试-上位机测试

 本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发

向上代码兼容GD32F450ZGT6中使用

后续项目主要在下面该专栏中发布:

https://blog.csdn.net/qq_62316532/category_12608431.html?spm=1001.2014.3001.5482

感兴趣的点个关注收藏一下吧!

电机驱动开发可以跳转:

GD32F103RCT6/GD32F303RCT6-实战项目-无刷电机驱动(1)_gd32f103rct6例程-CSDN博客

BMS电源系统开发可以跳转:

暂未放链接

DCDC-双向BUCK-BOOST实战链接:

GD32实战篇-双向数控BUCK-BOOST-BUCK降压理论基础-CSDN博客

GD32实战篇-双向数控BUCK-BOOST-BOOST升压理论基础-CSDN博客

介绍

EC800M-CN是由移远通信推出的一款专为机器对机器和物联网应用设计的超小型LTE Cat 1无线通信模块。这款模块以其紧凑的设计、高效的性能和合理的成本效益,在众多应用中脱颖而出。

尺寸小巧:EC800M-CN的尺寸仅为17.7mm × 15.8mm × 2.4mm,非常适合对空间有严格要求的小型设备或终端。
高速率:支持最大10 Mbps的下行速率和5 Mbps的上行速率,满足大多数物联网应用的数据传输需求。
封装形式:采用LCC封装,便于集成到各种终端产品中。
工作温度范围广:能够在-40°C至+85°C的温度范围内稳定工作,适应各种恶劣环境。
兼容性高:与移远通信的其他模块如EC800E-CN、EC800G-CN、EC800N-CN、EC800K-CN和EG800K-CN等兼容,方便用户进行产品升级或替换。
支持多种功能:除了基本的数据传输外,还支持DFOTA(Device Firmware Over-The-Air,设备固件空中升级)、Wi-Fi Scan定位、GNSS(全球导航卫星系统)定位等功能,增加了模块的应用灵活性。
内置丰富协议:内置多种网络协议和工业标准接口,支持多种操作系统下的USB虚拟串口驱动,进一步扩展了其应用范围。

AT命令手册:提供模块使用的AT命令集,帮助开发者快速掌握模块控制方法。
应用指导:涵盖Wi-Fi Scan、文件管理、FTP(S)、HTTP(S)、IMS/XML、MQTT、MUX、PPP、QuecCell、SSL/TLS、TCP/IP等多种协议和功能的应用指南。
硬件设计手册:为开发者提供详细的硬件设计指导,确保模块正确集成到目标产品中。

模块购买

本次实验购买移远的EC00M模块进行测试,EC800M/EC800E/EC800N等同系列产品均可通用一个封装。

硬件连接

使用USB转TTL模块进行连接!

VCC->5V

GND->GND

TXD->RXD

RXD->TXD

(注意,模块需要稳定5V供电,否则会出现模块上电异常、不工作等问题)

上位机调试

使用SSCOM串口助手进行上位机串口调试

AT指令

接下来进行AT指令测试!

初始化测试

首先是进行UDP/TCP/MQTT连接前的初始化测试,确保模块正常使用与联网:

AT测试

首先发送AT:

注意!上电后芯片默认波特率为115200,并且需要勾选加回车换行,否则无法正常收发,在上位机中选择对应端口,找不到的可以查看一下资源管理器。

发送AT以后默认返回OK说明模块目前能够正常收发AT指令。

查询是否有卡

然后便是查询是否有卡

返回如下代表卡就绪,如果返回ERROR则代表没卡。

查询卡信号
如果网络连接成功,会返回一个数,最大为 31, 若是数据小于 10,
说明当前网络信号不佳。

查询注册状态

如果注册成功,会返回 1, 如果失败,返回 0。

以上步骤如果没有任何问题,则说明该模块能够正常工作以及上网

DUP测试(非透传)

DUP测试可以参考移远的用户手册

其中,我们首先需要一个用于测试的服务器,我这里使用的是安信可透传云

这是链接:

安信可透传云 V1.0

建立一个测试用服务器

我们刷新以后会获得一组服务器以及端口,将其记录

UDP连接指令

发送一下语句即可连接。

返回OK,以及+QIOPEN:0,0代表已经成功连接,若返回的不是0,说明连接有问题。

UDP 是无连接模式,不管当前的端口是否存在,他依然会显示连接成功。TCP则不会,因为TCP具有握手协议以及检测机制,所以我们这里UDP连接上以后,安信可透传云上面没有显示,但是TCP就不会这样,大家如果想具体去了解的话,可以去看这个链接:

发送不定长指令

发数据他支持不固定长度与固定长度发送,支持字符串与十六进制方式的发
送。这里使用AT+QISEND=0不定长发送模式进行演示,后续的定长以及16位发送和这个是一样的。

发送完以后就可以发送我们需要发送的数据了,这里我们随意发送一些字符串过去

发送不定长结束以后需要用1A去结尾,在发生结尾标识符的时候,需要勾选HEX发送才会生效,否则会被当成一帧数据而不是指令,如果返回了SEND OK则代表发送完成

TCP测试

接下来我们将会去演示TCP测试的方式

首先需要一个服务器以及端口:

建立TCP连接指令

发送该语句即可通过TCP连接到我们的服务器,注意这里是39262(端口),0,1

这里的1代表的是TCP模式,如果是2则代表的是透传模式

如果返回的是+QIOPEN:0,0则代表连接成功,否则连接失败。

连接成功后就可以在服务器上面看见已经连接的客户端了,这也是TCP协议和UDP协议的最大区别:

发送定长数据指令

这里我们讲解一下发送固定长度,这里的4代表的发送4个长度的数据,如图:

在上一句语句之后,我们知道要发送4个长度的数据了,这里我们用1234作为演示,发送完毕以后,他会自动去检查用户发送数据的长度,当到达4个长度以后,就会自动截取,意思是多发是没有用的,如果这里返回了SEND OK则代表发送成功了。

然后我们就能在服务器这端,看到我模块客户端发送过来的数据:1234了

发送不定长数据指令

刚刚我们讲述的是定长发送,我们删除后面的长度变量以后,就会变成不定长发送,这个时候从发送这个指令的时候开始,后续发送的都会是一个数据而不是指令。

在发送完不定长的数据以后,接下来我们需要用1A结尾,使用1A的时候需要勾选HEX发送。发送完成后,会返回SEND OK

我们在服务器上这个时候就能看见我们之前发的那串数据了

断开TCP/UDP连接指令

发送这端代码可以断开TCP连接,可以看到服务器上的设备已经下线了

TCP透传

透传连接指令

接下来是关于TCP透传的测试,首先我们需要断开连接的情况下,再去发送这段代码,否则会失败,其中结尾处的2代表的是透传模式,如果成功连接以后,会回复CONNECT这段代码。

透传建立成功后,会在服务器上显示,和之前TCP测试的时候是一样的

接下来我们发送的任何数据,都会属于数据的一部分,而不是指令,发送的任何都会被显示

结语

这里是我整理好的,关于TCP以及UDP传输中所使用到的AT指令,大家感兴趣可以看看

本节到此结束,接下来会是GD32的代码编写,记住大家需要先在上位机上面跑通以后,再移动到单片机上进行编写。

<think>好的,我现在需要帮助用户找到关于STM32F103C8T6与EC800M模块进行4G通信的实现方法和示例代码。首先,我得回忆一下STM32F103C8T6的基本特性,这是一款常用的ARM Cortex-M3内核单片机,常用于嵌入式系统。EC800M模块是通信的4G模块,支持LTE Cat M1,通常用于物联网设备的无线通信。 用户的需求是让这两个设备进行通信,可能需要通过串口或其他接口连接。首先,我应该考虑硬件连接部分。STM32通常使用UART串口与外部模块通信,所以需要确认EC800M的通信接口是否为UART。查阅EC800M的数据手册,确认其支持UART通信,并了解其引脚定义,比如VCC、GND、TXD、RXD等。接着,STM32的USART外设需要配置相应的GPIO引脚,比如PA9作为TX,PA10作为RX,或者使用其他可用的UART端口。 接下来是软件配置部分。STM32需要初始化USART,设置正确的波特率(通常EC800M默认是115200或9600)、数据位、停止位和校验位。可能还需要使能DMA或中断来处理数据的接收和发送,以提高效率。例如,使用HAL库中的HAL_UART_Transmit和HAL_UART_Receive函数,或者使用中断方式接收数据。 然后是AT指令的使用。EC800M模块通常通过AT指令进行控制,比如AT+CPIN?检查SIM卡状态,AT+CREG?检查网络注册情况,AT+QIACT激活PDP上下文等。用户需要在STM32中发送这些指令,并解析模块返回的响应。这涉及到字符串的处理和状态机的实现,以确保正确解析模块的回复。 还需要考虑网络连接和数据处理。建立TCPUDP连接,发送数据到服务器。例如,使用AT+QIOPEN打开一个TCP连接,然后使用AT+QISEND发送数据。同时,要处理可能的错误情况,如网络断开、重连机制等。 示例代码方面,可能需要包括初始化UART,发送AT指令,接收和解析响应。例如,使用STM32CubeMX生成初始化代码,然后在主循环中发送AT指令,并通过中断回调处理接收的数据。同时,要注意缓冲区管理,防止数据溢出。 另外,用户提供的引用中提到了stm32f103的配置、串口DMA接收中断、以及阿里云连接等内容。可能用户最终希望将数据上传到云平台,比如阿里云,因此还需要集成MQTT协议或HTTP协议,通过EC800M模块将数据发送到云端。这部分可能需要额外的AT指令来建立MQTT连接,发布消息等。 需要注意的是,EC800M模块可能需要特定的APN设置,这取决于使用的SIM卡运营商。此外,电源管理也很重要,确保模块有足够的电流供应,避免电压不稳导致模块重启。 最后,测试和调试是关键步骤。通过串口调试助手监控STM32EC800M之间的通信,确认AT指令的正确执行,逐步排查可能的硬件或软件问题。例如,检查接线是否正确,波特率是否匹配,AT指令格式是否有误等。 总结下来,实现步骤大致分为硬件连接、USART配置、AT指令控制、网络连接、数据收发以及云端集成。需要结合具体的模块手册和STM32的外设配置,编写相应的代码,并进行充分的测试。</think>以下是关于STM32F103C8T6与EC800M模块实现4G通信的分步说明: --- ### 一、硬件连接 1. **接口选择** EC800M模块支持UART通信,需连接STM32的USART外设(如USART1、USART2)[^1]。 推荐引脚配置: - EC800M的`TXD` → STM32的`PA10`(USART1_RX) - EC800M的`RXD` → STM32的`PA9`(USART1_TX) - 共地连接(GND) 2. **电源配置** EC800M工作电压为3.4V-4.2V,需独立电源或通过LDO稳压供电,避免直接使用STM32的3.3V引脚。 --- ### 二、STM32软件配置 1. **USART初始化** 使用STM32CubeMX生成代码,配置USART1参数: - 波特率:115200(需与EC800M默认值一致) - 数据位:8 bits - 停止位:1 bit - 无校验位 ```c UART_HandleTypeDef huart1; huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; HAL_UART_Init(&huart1); ``` 2. **DMA/中断接收** 启用DMA或中断接收数据,提升效率(参考引用[2][^2]): ```c // 启动接收中断 HAL_UART_Receive_IT(&huart1, rx_buffer, BUFFER_SIZE); // 中断回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart == &huart1) { // 处理接收数据 } } ``` --- ### 三、AT指令交互 1. **基础指令发送** ```c // 发送AT指令并等待响应 void Send_AT_Command(char *cmd) { HAL_UART_Transmit(&huart1, (uint8_t*)cmd, strlen(cmd), 1000); HAL_Delay(100); // 等待模块响应 } // 示例:检查模块状态 Send_AT_Command("AT\r\n"); ``` 2. **网络配置** 激活4G网络并连接服务器: ```c Send_AT_Command("AT+CPIN?\r\n"); // 检查SIM卡 Send_AT_Command("AT+CREG?\r\n"); // 检查网络注册 Send_AT_Command("AT+QIACT=1\r\n"); // 激活PDP上下文 Send_AT_Command("AT+QIOPEN=1,0,\"TCP\",\"服务器IP\",端口,0\r\n"); // 建立TCP连接 ``` 3. **数据发送** ```c Send_AT_Command("AT+QISEND=0,5\r\n"); // 发送5字节数据 HAL_UART_Transmit(&huart1, "Hello", 5, 1000); ``` --- ### 四、示例代码片段 ```c // 主函数逻辑 int main() { HAL_Init(); SystemClock_Config(); MX_USART1_UART_Init(); HAL_UART_Receive_IT(&huart1, rx_buf, 128); // 初始化EC800M Send_AT_Command("AT+CFUN=1\r\n"); // 启用全功能模式 HAL_Delay(2000); while (1) { // 周期性发送数据 if (connected) { Send_Data_to_Cloud(); HAL_Delay(5000); } } } ``` --- ### 五、关键问题排查 1. **无响应** - 检查硬件接线(TXD/RXD是否交叉连接- 确认波特率与模块一致 2. **网络注册失败** - 检查SIM卡状态和APN设置(AT+QICSGP=1,1,\"APN\") 3. **数据发送失败** - 确认TCP连接已建立(AT+QISTATE?) - 检查服务器端口和IP是否正确 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不及你的温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值