STM32F407上FreeRTOS+Lwip用SIM800C实现PPP拨号上网
本帖最后由 北极熊 于 2019-6-11 11:33 编辑单片机:STM32F407ZGTx
GSM模块:SIM800C
IP协议栈:Lwip-2.1.2
操作系统:FreeRTOS V10.1.1
实现原理:采用SIM800C内嵌PPP及Lwip对PPP拨号的支持,使用PPPos进行拨号上网。可实现TCP、UDP及Http等通信。
/*
* Lwip Initfunc
* ===================
*
* Initialize the TCP/IP protocol stack
* Creat a new PPPos interface and connect...
*
*/
/* Lwip Initfunc */
void lwip_comm_init(void)
{
/* Initfunc a function to call when tcpip_thread is running and finished initializing */
tcpip_init(modem_init,NULL);
//Create a new PPPoS interface
ppp = pppos_create(&ppp_netif, pppos_output_cb, ppp_link_status_cb, NULL);
/* Auth configuration, this is pretty self-explanatory */
ppp_set_auth(ppp, PPPAUTHTYPE_NONE, "", "");
/* Set this interface as default route */
ppp_set_default(ppp);
/* Initiate PPP negotiation, without waiting (holdoff=0), can only be called if PPP session is in the dead state (i.e. disconnected). */
ppp_connect(ppp, 0);
}
源码整理中,技术交流QQ:1018062633
基于RTX5+RL-TCPnet V7.X的PPP方式驱动4G模块EC20和2G模块M26的案例
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96082
https://img.anfulai.cn/dz/attachment/forum/201912/26/105818u8ynnrssbso3sdid.png
https://img.anfulai.cn/dz/attachment/forum/201912/26/105819avs611vv1fhiize6.png
https://img.anfulai.cn/dz/attachment/forum/201912/26/105819sodwg7ngzxi3xnxw.png
向楼主学习。
之前就一直在考虑怎么把这些GPRS模块用稳定
尝试了自己写AT,也用过rtthread的at框架,感觉都有各种不足
PPP想了一段时间,一直没付诸实践 barryxiao 发表于 2019-4-15 18:06
向楼主学习。
之前就一直在考虑怎么把这些GPRS模块用稳定
尝试了自己写AT,也用过rtthread的at框架,感觉 ...
有空可以尝试一下!我也是最近没事再了解!以前在裸机下用的AT指令,后来学习FreeRTOS后觉得操作系统上要是在用AT的话就显得太繁琐了!应该向windows那样直接socket操作! 北极熊 发表于 2019-4-16 09:27
有空可以尝试一下!我也是最近没事再了解!以前在裸机下用的AT指令,后来学习FreeRTOS后觉得操作系统上要 ...
嗯。在rtthread里边用at_socket转换成socket操作之后也挺不错的。
但还是会出现经常性的tcp连接超时,按经验来看3s没有回应就铁定失败,但失败时模块必须等40s才能继续下一条操作,这一点简直能把人逼死 barryxiao 发表于 2019-4-16 13:51
嗯。在rtthread里边用at_socket转换成socket操作之后也挺不错的。
但还是会出现经常性的tcp连接超时,按 ...
AT指令的封装操作起来过于繁琐,并且指令返回需要自己去判断,这点操作系统上使用势必有点臃肿!移植lwip的ppp后写tcp/udp之类的应用就如同在windows下,很方便,无需关心底层。但重要的是要掌握lwip的内存分配策略,负责会很容易造成系统崩溃! 北极熊 发表于 2019-4-16 16:01
AT指令的封装操作起来过于繁琐,并且指令返回需要自己去判断,这点操作系统上使用势必有点臃肿!移植lwip ...
内存分配倒还好说。重新定义一个链表式的块内存就可以了,我记得armfly也有自己写的内存分配策略,还挺好用的,基本上可以解决内存碎片的问题 barryxiao 发表于 2019-4-16 18:55
内存分配倒还好说。重新定义一个链表式的块内存就可以了,我记得armfly也有自己写的内存分配策略,还挺好 ...
lwip有自己的内存管理方式,无需自己分配!我的意思是他内部模块的内存分宏的定义要掌握! 楼主,有空研究下模组使用RL-TCPnet的PPP拨号连接,最近搞的一头雾水,ppp回复connect,后面发送数据提示失败 也许在明天 发表于 2019-4-18 14:49
楼主,有空研究下模组使用RL-TCPnet的PPP拨号连接,最近搞的一头雾水,ppp回复connect,后面发送数据提示失 ...
按照你的说法应该是接口没有对接好导致的! 你好,方便分享下源码吗? lanzi668 发表于 2020-6-24 21:13
你好,方便分享下源码吗?
基于RTX5+RL-TCPnet V7.X的PPP方式驱动4G模块EC20和2G模块M26的案例
http://www.armbbs.cn/forum.php?mod=viewthread&tid=96082&fromuid=58
(出处: 硬汉嵌入式论坛)
请问楼主,MCU用的是串口还是USB接口和SIM800C相连的?
页:
[1]