STM32 USB高速USB端口加持4G联网

利用STM32CubeMX软件生成USB_HOST_CDC驱动ME909s-821ap(4G通信模块) (8).修改usbh_cdc.c 中的 USBH_CDC_InterfaceInit 函数,由于ME909s用的是接口0,所以这里接口为0,interface = USBH_FindInterfaceIndex(phost, 0, 0);(5).配置USB_OTG,由于电路板上的USB引出来的管脚是PB14,PB15,所以在这里需要配置USB_OTG_HS,由于电路板上没有外接Phy,所以这里配置为内部的FS Phy,Internal FS Phy选项下Host Only,同时配置中断。.......... 阅读详情

本文由RT-Thread论坛用户@fhqmcu原创发布:https://club.rt-thread.org/ask/article/8fc0968257c2ca01.html

1、前言

关于STM32F4USB驱动程序(FULL SPEED)目前是可以用,但是有很多问题,比如NAK的问题,导致U盘读写出错。USB底层驱动程序中进行OUT传输时必须增加一个1ms延时的问题。等等储多问题。本文高速USB的驱动程序参考了网友@sakumisu的文章:基于 CherryUSB 调试 dwc2 usb host 笔记,感谢他在USB方面做出的研究与调试。

2、STM32高速USB的调试

STM32高还USB可以使用内部DMA来进行USB的数据包的传输,会大增加USB通信的速度,同时可以解决使用FULL SPEED过程中遇到的各种问题,因此花时间来修改STM32F的USB驱动程序,把USB RNDIS设备驱动更换到高速USB接口,代码的修改的几个方面如下:

2.1. 使用高速USB接口要更换 USB的IO管脚, 大家所熟知的PA10, PA11只能用于全速USB,换成高速USB后要使用PB14, PB15管脚本,程序做如下初始化。

screenshot_image.png
调试程序时,总想着这地方简单,不会搞错,结果USB驱动部分程序改好了后,怎么调试都无法进入USB中断,最后检查到这里是USB高速管脚配置成GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS导致的,修改这部分代码时没有查看手册,根据GPIO_AF10_OTG_FS的宏定义查看到有GPIO_AF10_OTG_HS定义,就直接改了导致的。看来总在小河沟里翻船呀,总以为这里简单,不会出错。结果因为IO的配置的问题已经遇到了2次了,上一次是调试SPI2驱动程序,修改IO看手册,看手册。
2.2 USB驱动程序的修改
USB驱动程序的修改,主要修改了操作系统设备驱动程序接口drv_usbh.c文件,在这个文件中对USB驱动使用全速USB与高速USB全部做了初始化,采用宏定义DRV_USBH_USE_HS来进行切换。此宏定义可以在rtconfig.h中增加,定义此宏表示使用高速USB,不定义使用全速USB。代码很多,请参考博客后面的git仓库链接。

STM32F低层USB驱动程序的改进,改进时兼容原来全速USB的功能。具体的改进点如下:

1、使用高速USB时,需要打开DMA设置。

2、使用高速USB时,需要关闭NAK中断,如果不关NAK中断会调程序调到你怀疑人生。

3、驱动程序使用高速USB端口,实际工作在全速的模式。

4、使用时注意硬件管脚的变化,可以直接采用跳线连接USB口到PB14, PB15上面。

3、代码仓库

上面所做的高速USB的驱动程序的优化已经上传到GIT仓库上面。参见版本标签V1.2
STM32 USB HOST驱动4G网卡
https://github.com/longtengmcu/USB-HOST-driver-4G-rndis-device

4、性能提升

采用FTP下载文件并且写入到FLASH中的测试方式,下载一个310Kbyte文件,使用全速USB时下载时间为10秒,使用高速USB时下载时间约7秒。最关键的时解决了全速USB驱动设备时各种返回NAK的问题。

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U 文章记录了stm32cubemx+stm32f407+freertos+usb host实现移远4G模块EC600U的usb驱动的调试过程,usb host cdc库的使用和遇到的问题及解决办法。 阅读详情

相关推荐

STM32H743IIT6+USB3300,USB_HS高速双向HID通讯开发

STM32H743IIT6+USB3300开发,环境为STM32CUBEMX+MDK5.27 开发目的:实现与电脑的USB_HS高速通讯,通过ULPI接口外接PHY芯片。 板子为微雪open743,模块USB3300也是微雪家的,之前单独买了一个USB3300模块搭配自己手里的743核心板(杜邦线连接),发现USB枚举无法正常。无奈之举,买了一块微雪的开发板。项目着急开发程序,板子只能买,全网做USB3300模块也就微雪一家。 开发流程: 1、微雪只提供了USB_HS的HID和MSC例子,其

u010396127的博客 2万+

STM32F4系列+FreeRTOS+USB方式驱动有方4G模块

STM32F4系列+FreeRTOS+USB方式驱动有方4G模块

qq_40001621的博客 4860

STM32L151低功耗MCU开发实战:从选型到微安级功耗优化

在电池供电的嵌入式设备设计中,低功耗MCU的选型直接决定产品续航与稳定性。理解Cortex-M3内核在低功耗场景下的运行原理,掌握待机电流、停机模式等关键技术指标,是工程师实现微安级功耗的基石。STM32L151系列通过多重功耗模式设计、外设时钟门控以及快速唤醒机制,在性能与功耗之间取得了理想平衡,广泛适用于智能水表、工业传感器、便携医疗设备等场景。文章从芯片规格、低功耗实现原理、开发环境配置、实操配置流程、功耗测量与问题排查、供应链选择等维度,系统解析STM32L151RCT6的应用价值,帮助开发者构建完

weixin_34341117的博客 419

首创STM32 USB主机驱动4G rndis设备

1、技术现状 4G模块支持的对外通信接口有串口和USB接口,串口一般使用AT指令的方式,这个在MCU类产品上面使用的很多,US

fhqlongteng的博客 1万+

基于STM32F407单片机的4G通信实现——与服务器通过USR-LTE S4模块进行通信

通过配置USR-LTE S4模块并在STM32F407上实现相应的代码,我们可以实现与服务器的数据交换。4G通信技术在物联网应用中具有广泛的应用前景。本文将介绍如何利用STM32F407单片机与服务器进行4G通信,使用USR-LTE S4模块作为通信设备。我们将详细说明如何配置和控制USR-LTE S4模块,以及在STM32F407上实现与服务器的数据交换。c. 实现一个函数,用于向USR-LTE S4模块发送AT指令,并等待和解析响应。c. 输入AT指令并发送,确认与USR-LTE S4模块的通信正常。

XeCuda的博客 2289

STM32F407通过USB驱动EC20.zip

STM32F407通过USB驱动EC20 4G模块,代码本人已经验证,可以直接使用。

CAN转4G网关横评:硬件拆解与场景选型指南

在工业自动化和物联网浪潮下,CAN总线作为现场设备的核心通信协议,其数据上云需求日益迫切。CAN转4G网关通过将CAN报文封装为TCP/MQTT数据,借助4G网络实现远程监控与运维,是连接传统工业设备与云平台的关键桥梁。本文从技术原理出发,剖析网关的CAN控制器、4G模组、链路保活等核心环节,并结合多款主流产品实测,给出不同工业场景下的选型建议与避坑指南。无论是设备远程运维还是系统集成,深入理解网关选型逻辑,能有效提升项目稳定性。

weixin_34210740的博客 609

STM32 HUAWEI_4g.zip

华为ME909-821/821A适配 STM32CUde USB host固件的驱动程序 对应PCUI接口

USB2.0协议概述

USB发展到现在,主要流行1.1、2.0、3.0这几个版本,而3.1暂时只有少量笔记本在用。 主流版本区别: USB1.1,支持全速12Mbps和低速1.5Mbps。 USB2.0,兼容1.1,增加了高速480Mbps。 USB3.0,兼容2.0,增加了超速5Gbps。 在用户的角度,使用USB设备是非常方便的。但是,在开发人员的角度,可是谈USB色变。 由于USB硬件接口非常简单,从

一个人要像一支队伍 3万+

stm32f429disco_usb_RNDIS_example.zip_LwIP_RNDIS USB_rndis dhcp_s

Stm32f429disco RNDIS example (lwip, no dhcp)

STM32407 USB驱动4G模块代码-电路方案

使用407的USB高速接口驱动4G模块(龙尚u9300c,移远EC20),枚举成功后,串口1通过USB与4g模块透传数据。现将STM32(USB) 4G的驱动代码分享给大家。 速度就是usb2.0全速,理论最高1.216MB/S。实际肯定要低很多。由于USB是主从结构,所以读取数据是轮询方式,主机驱动必须不断发送in令牌。实际不可能把全部cpu资源都用来发送in令牌。具体最大速度我也没有测试过。我的目的不是速度,是想省一路串口。 枚举后是批量传输类型。实际并没有真正枚举,只进行了设置地址和设置配置的标准请求。类请求只发送了设置波特率和使能串口。之后就是端点数据收发了。由于是全速,端点只有64字节。所以发送太长数据要分包发送。 只使用了虚拟出的AT指令的串口。一般4G模块可以虚拟出5个串口。只使用AT命令串口即可实现短信,语音,TCP功能。 说明: 模块与STM32407走USB通讯。为了方便演示,数据又通过串口与PC连接。 PC←→MCU串口←→MCU-USB←→4G模块 该驱动代码资料来源于正点原子。

STM32MP157驱动开发——4G通信模块驱动

Linux的4G模块驱动开发,因为手头没有相关模块,这里仅粘贴了相关的教程,可以参考一下了解相关的使用流程。

weixin_45682654的博客 6695

Lora无线温湿度传感器方案

综上所述,Lora无线温湿度传感器以其长距离传输、低功耗、高稳定性、精准测量、无线传输以及广泛的应用场景等特点,在环境监测领域展现出了强大的竞争力和广泛的应用前景。Lora无线温湿度传感器广泛应用于各种需要远程监控和数据采集的场景,如仓储、农业、机房、楼宇、交通、工业、矿产、电力等领域。Lora无线温湿度传感器是一种采用Lora无线通信技术进行数据传输的温湿度监测设备。四、产品参数(以某款工业级Lora温湿度传感器为例)

weixin_46632654的博客 757

STM32 WinUSB(WCID)免驱高速通信 20M/s(附详细测试)

WinUSB 免驱高速通信,STM32工程详细配置及修改,C#上位机Windows全平台测试

bingwueyi的博客 2万+

【Anaconda】conda国内镜像源快速配置指南(清华/阿里云)

本文详细介绍了如何为Anaconda配置国内镜像源(清华/阿里云),以显著提升conda包下载速度并减少安装失败率。通过分步指南和实用技巧,帮助开发者快速完成配置,优化Python开发环境。

weixin_33725722的博客 1486

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么)

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 目录 Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 一、简单介绍 二、一些专有项简介 Entity Context Group Collector Matcher System Feature 三、注意实现 四、ECS 的下载 Github 上下载 Unity Asset Store 中下载 U...

仙魁XAN 7779

[STM32U5]【NUCLEO-U5A5ZJ-Q测评】高速USB

1、STM32U5 Series系列有几个型号内部嵌入了 USB OTG 高速设备/主机/OTG 外设,并集成了收发器,.这些型号包括STM32U59x/5Ax/5Fx/5Gx。如果要使用高速USB,必须确保内部的USB PHY PLL产生精确的60MHz时钟。可以看到数据发送比较稳定,测试发现我的电脑串口来不及接收更快的数据和更大的数据包。内部嵌入高速USB PHY可以省掉了使用外部高速USB外设带来的麻烦,这样对有高速数据传输需求的项目带来更多的便利。USB协议栈使用USBX。来源:21ic.com。

ic2121的博客 1390

ROS-订阅与处理激光雷达scan话题

激光雷达通常有四个性能衡量指标:测距分辨率、扫描频率(有时也用扫描周期)、角度分辨率及可视范围。测距分辨率衡量在一个给定的距离下测距的精确程度,通常与距离真实值相差在5-20mm;扫描频率衡量激光雷达完成一次完整扫描的快慢,通常在10Hz及以上;角度分辨率直接决定激光雷达一次完整扫描能返回多少个样本点;可视范围指激光雷达完整扫描的广角,可视范围之外即为盲区。

weixin_42438635的博客 4476

STM32-(46):USB总线与USB设备(STM32的USB模块特性)

USB模块特性

半个月儿上来的博客 1988

微信小程序使用ucharts折线图,有负数显示0刻度线

当数据有负数和正数的时候默认不会显示0刻度线,不方便看出正负对比。

欢迎来到我的博客!在这里,我将分享我在前端开发方面的知识和经验。让我们一起探索前端开发的无限可能! 1579

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4441

【亲测免费】 使用STM32F4的USB驱动4G模块

使用STM32F4的USB驱动4G模块 【下载地址】使用STM32F4的USB驱动4G模块 本项目主要展示了如何利用STM32F4系列微控制器的USB功能,来驱动4G通信模块。通过STM32F4的USB虚拟串口技术,实现了与4G模块之间的数据通讯,允许开发者通过发送AT命令来控制4G模块,实现诸如网络连接、收发短信、拨打...

gitblog_09755的博客 1633

从win系统远程使用服务器中的nsight system、nsight compute

本文介绍了如何在Windows系统中远程使用服务器上的Nsight System和Nsight Compute工具。主要内容包括:1)双系统同步安装相同版本的Nsight工具,配置环境变量;2)命令行生成profile文件或直接运行分析;3)Windows远程连接服务器的配置方法;4)解决权限问题的具体方案,如修改文件夹权限或调整NVIDIA驱动配置。文章提供了详细的安装步骤和常见问题解决方案,适用于需要进行GPU性能分析和调试的开发人员。

Justinyh的博客 401

STM32 4G学习(二)

它支持TCP/UDP/HTTP/MQTT/DNS/RNDIS/NTP协议,支持连接多种云服务器(如:原子云、阿里云、百度云和OneNET)、支持TCP、UDP、HTTP、MQTT数据透传,支持USB无线网卡,支持自动定时采集任务、支持基站定位、支持自定义心跳包和注册包数据,支持上位机/AT指令/短信/透传指令配置参数,广泛用于无线数传、电力行业、工业控制、水利行业、环保行业、农业应用、集抄系统和智能家居等诸多领域。分别为:PWR、WORK、NET、LINK1、LINK2、LINK3 和 LINK4。

Caramel_biscuit的博客 3244

UNet改进(24):注意力机制-从基础原理到高级融合策略

本文系统探讨了如何通过引入各类注意力机制增强UNet在医学图像分割中的性能。文章分为基础篇、进阶篇和高级篇三个层级:基础篇介绍了时序注意力、可变形注意力、分层注意力等8种基础机制;进阶篇提出了5种混合注意力设计;高级篇则探讨了全局+局部+多尺度等复杂组合机制。实验表明,这些注意力模块在心脏MRI、肺部感染等任务中能提升2-15%的分割精度。文章还提供了硬件适配建议和完整实现代码,为研究者提供了全面的技术参考。未来方向包括NAS优化、量子注意力等前沿探索,为UNet在医疗影像等领域的应用革新提供了理论指导。

2501_91516851的博客 763

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 【社区人物志】专访马龙伟:轮子不好用,那就自己造!
下一篇: Arduino库可以直接在RT-Thread上运行啦!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值