使用STM32F767驱动中移F02X5G模块中遇到的一些坑

本文记录了使用STM32F767驱动中移F02X5G模块过程中遇到的挑战,包括USB CDC通信的配置和调试。博主通过USBView获取设备描述符,解决描述符不对应问题,手动设置波特率,修复LCP和IPCP握手错误,最终实现5G模块的稳定连接。
摘要由CSDN通过智能技术生成

出于某种原因,导师要我用stm32F7来驱动5G模块。说实话这真的是吃力不讨好,单片机根本无法利用5G那么快的速度,官方给的程序只有Linux和windows的驱动,其他一点资料都没有。磨了两个月终于给磨出来了,虽然用的是USB Full Speed和速度受限的ppp通信,但好歹成功连上了。这期间遇到的坑实在是太多太多了,在这记录一下。博主是纯新手,轻喷。

模块只支持通过USB传输数据,鼓捣了一段时间确定是使用USB CDC。好在官方有STM32_USB-Host-Device_Lib库,在找不到CDC Host的教程(网上都是Device的)的情况下,只能硬着头皮上去看资料读代码。

使用库里面的例程,先后遇到了许多坑。

1.描述符不对应。这很正常,毕竟是厂商定制的模块,而模块的设备描述符我是完全不知道的。好在厂商提供了windows的驱动,最后在windows上使用USBView软件,成功找到了该设备的所有描述符。然后进程序里面的枚举部分USBH_HandleEnum(USB_OTG_CORE_HANDLE *pdev, USBH_HOST *phost)
修改对应的条件判断。
(其实单片机就算描述符不对应报错也能正确读取设备所有描述符,打印出来对着改就行)
2.获取linecoding失败。
设备没有返回,直接手动设置波特率等内容。

3.能够收发AT指令后,ATD*99***1#返回ERROR
对比了linux的收发数据后确定是在lincoding阶段少发送了一个CDC_SET_CONTROL_LINE_STATE_REQUEST
这是对usb模拟串口握手协议支持(RTS/CTS)

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值