STM32通过4G模块实现TCP/UDP连接服务器

STM单片机需要支持freeRTOS系统

4G模块收发是异步操作,在发送的时候很有可能也会收到数据,如果只是单线程的话很容易导致丢数据,开发虽然简单,但是不够严谨,这样需要协议来实现重发才能保证业务正常进展,此处我们选择了F412这款芯片跑freeRTOS系统,启用多线程,一个收一个发,模块选择了国仪海聚科技有限公司的GH201系列模块作为测试

TCP/UDP使用注意事项

简单的demo很容易,但是我们实际应用中设备往往是无人值守的,这就需要产品非常稳定,自我恢复能力很强,下面介绍在使用通信模块过程中可能出现的异常:

  1. 网络异常,网络节点异常断电,底层链路极端环境未恢复
  2. 伪基站的干扰,注册失败
  3. 模块异常,导致网络假死

解决办法

针对上述异常情况,我们首先要考虑的是心跳,虽然tcp协议中底层是有心跳保证的,但是网络的复杂性,以及网络设备的兼容性,或多或少的存在一些问题,将自己产品的稳定性寄托在底层的链路上是不妥的
心跳
上层应用连接成功之后需要跟服务器保证间隔2min左右的心跳探测(此心跳时间可以设置更短,不宜太长)
模块设备异常恢复
防止4G模块设备在一些未知情况可能出现网络异常,网络假死,AT指令不通,此时需要对模块重新上电强制恢复工作
单片机异常恢复
防止单片机因为一些未知因素导致的死机而无法工作

业务流程图

Created with Raphaël 2.2.0 上电 每秒发送AT等待响应OK(超时60S) 返回OK 检测sim卡是否在位,AT+CPIN? sim ready 检测网络是否注册成功(1s一次120次),AT+COPS? 返回运营商信息 激活PDP 返回OK 创建socket,AT+GSOCR 创建成功 发送数据,AT+GSOST(如果是TCP需要收到^GSOCK: CONNECTED,才能发送数据,收到^GSOCK: DISCONNECTED表示连接断开) 跟服务器进行业务交互(以及心跳保护) yes no yes no yes no yes no yes no

F412源码下载地址

测试代码仅仅是简单的发送了一串测试字符,其他功能有待开发
在这里插入图片描述在这里插入图片描述
链接: https://pan.baidu.com/s/1pb1A6RvOURrg8_bcKLH_Og 提取码: z2r2

  • 17
    点赞
  • 185
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32作为一款功能强大的微控制器,可以通过串口与4G模块进行通信。下面我将阐述如何实现STM324G模块的串口通信。 首先,我们需要连接STM324G模块的串口引脚。通常情况下,STM32会有多个串口可供使用,我们需要选择其中一个串口的引脚进行连接。通常,将4G模块的RX(接收)引脚连接STM32的TX(发送)引脚,同时将4G模块的TX引脚连接STM32的RX引脚。此外,还需要将两者的地线(GND)相连。 接下来,我们需要在STM32的代码中配置串口通信。首先,我们需要初始化所选串口,设置通信参数,如波特率、数据位、停止位和校验位等。然后,通过使用STM32提供的串口相关函数,我们可以发送和接收数据。例如,使用串口发送函数可以向4G模块发送AT指令,而使用串口接收函数可以接收4G模块返回的响应。 需要注意的是,由于串口通信是一种异步通信协议,发送方和接收方之间需要使用相同的通信参数来进行正确的数据传输。在配置串口参数时,请务必确保STM324G模块使用相同的波特率、数据位、停止位和校验位等。 在实际应用中,我们可以使用STM32的定时器和中断功能来实现更稳定和高效的串口通信。例如,我们可以使用定时器中断来定时发送和接收数据,以确保数据传输的准确性和时效性。 综上所述,通过合理连接串口引脚并正确配置串口通信参数,我们可以实现STM324G模块之间的串口通信。这种通信方式可以让STM324G模块进行数据交互,从而实现更多功能和应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值