[STM32F2] 单片机实现4G模块PPP拨号上网

[复制链接]
17345|53
1988020566 发表于 2018-3-18 21:50 | 显示全部楼层
这个的代码是直接移植的linux吗
51xlf 发表于 2018-3-18 21:59 | 显示全部楼层
怎么操作的?
i1mcu 发表于 2018-3-18 21:59 | 显示全部楼层
传输的速度怎么样?
pmp 发表于 2018-3-18 21:59 | 显示全部楼层
期待一个思路,看看能不能行
mmbs 发表于 2018-3-18 21:59 | 显示全部楼层
xuannin 发表于 2018-3-16 18:24
由于是公司项目,无法上传代码,我只说告诉各位,这条路走的通

楼主能够提供驱动的代码吗?
1988020566 发表于 2018-3-18 21:59 | 显示全部楼层
使用的宏定义吗?
877049204 发表于 2018-3-19 10:03 | 显示全部楼层
希望楼主以后跳槽了能给我们讲讲怎么做的
 楼主| xuannin 发表于 2018-3-19 10:55 | 显示全部楼层
代码不是移植linux的,其中CMUX和PPP部分代码完全按照网上下载的CMUX及PPP手册自己写的,TCPIP协议栈是移植uip的,另外lwip也有PPP拨号代码,看得头大,自己写吧;PPP的过程很简单,simcom有提供一个叫SIMCOM_WIRELESS_KIT.exe的工具,其中有PPP拨号过程,可以参考
thinkabout4451 发表于 2018-3-19 18:09 来自手机 | 显示全部楼层
xuannin 发表于 2018-3-17 23:19
4G模块是simcom的7600,要注意的是这个模块做cmux有个坑,7600手册上说cmux最大包长可以设置为1500byte,实 ...

串口接收的问题?
 楼主| xuannin 发表于 2018-3-21 19:35 | 显示全部楼层
说说hal库串口的问题,串口如果高速率大数据量收发的时候难免会出错,我不知道有多少人跟我一样忘了处理
HAL_UART_ErrorCallback(),那么怪问题就来了,程序会不停进入UART中断,最简单的处理办法是在if(huart->ErrorCode != HAL_UART_ERROR_NONE){huart->State = HAL_UART_STATE_READY;HAL_UART_ErrorCallback(huart);}注释掉huart->State = HAL_UART_STATE_READY;就行了;
 楼主| xuannin 发表于 2018-3-21 19:47 | 显示全部楼层
在说说串口接收的一个技巧;接收数据我们都是放在一个缓存中用HAL_UART_Receive_IT()函数,这个大家都会,这个函数在接受固定长度的数据包可能还行,但是不定长的包就麻烦了,因为不收够数据不会回调HAL_UART_RxCpltCallback(),我们就无法处理数据,看看手册串口有一个空闲中断,如是我在中断函数中添加了空闲中断回调函数tmp1 = __HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE);tmp2 = __HAL_UART_GET_IT_SOURCE(huart, UART_IT_IDLE);if((tmp1 != RESET) && (tmp2 != RESET)){__HAL_UART_CLEAR_PEFLAG(huart);UART_Idle_Callback(huart);}每次接收数据以缓存最大长度接收数据,在空闲中断时判断数据是否完成一帧,完成就处理,没完就继续收,这个比网上很多人一次收一个字节要好的多吧
CaLipton 发表于 2018-3-23 17:33 | 显示全部楼层
cmux 串口是什么
 楼主| xuannin 发表于 2018-3-23 20:30 来自手机 | 显示全部楼层
串口多路复用,也就是一个串口通过协议虚拟成多个串口
song19881218 发表于 2018-3-23 21:18 | 显示全部楼层
这样的意义何在呢?你这是荒废了模块的tcpip自己搞,能确保稳定?ppp拨号本身lwip内都集成了。如果使用lwip移植几个函数就搞定,ppp拨号的速度能快么?
 楼主| xuannin 发表于 2018-3-27 21:27 来自手机 | 显示全部楼层
串口的速度目前为961200,建立2路TCP链接,测试上下行的速度基本可以达到800k左右,串口速度没有继续往上调,这个用起来真不是一般的爽啊!可以说超出预期,没有浪费这个4g模块,而且是全网通的,电信移动联通全可用
 楼主| xuannin 发表于 2018-3-27 21:31 来自手机 | 显示全部楼层
另外,hal串口库就是个坑,大数据收发还是自己写吧
 楼主| xuannin 发表于 2018-3-27 21:55 来自手机 | 显示全部楼层
对应质疑这种做法的高工们,本山哥有句名言:谁用谁知道
song19881218 发表于 2018-3-28 19:13 | 显示全部楼层
xuannin 发表于 2018-3-27 21:27
串口的速度目前为961200,建立2路TCP链接,测试上下行的速度基本可以达到800k左右,串口速度没有继续往上调 ...

你这不科学啊,波特率961200,起始位+数据位+停止位 10bit  你理论速度是961200/10 = 96120B 才93K,理论速度才93K,你咋搞到800K的,我算法没错吧,哈哈
Rospiers 发表于 2018-3-28 19:15 | 显示全部楼层

传输的速度怎么样
 楼主| xuannin 发表于 2018-3-28 20:33 来自手机 | 显示全部楼层
本帖最后由 xuannin 于 2018-3-28 20:38 编辑
song19881218 发表于 2018-3-28 19:13
你这不科学啊,波特率961200,起始位+数据位+停止位 10bit  你理论速度是961200/10 = 96120B 才93K,理论 ...


你数学很好,计算完全没问题,但是你不知道网络传输速度基本都是以小B计算的吗?也就是bit,你除以10就是byte了,测试软件也是以bit计算的,我发帖都是验证过的,不是信口开河
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部