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

RT-Thread物联网操作系统 2022-07-11 10:59:01

本文由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的问题。
 

...全文
952 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
C3333_C343223 2023-01-04
  • 打赏
  • 举报
回复

已看过博主的文章,很不错的内容,干货满满,期望师傅能输出更多干货,并强烈为师傅分享自己的知识点赞

另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励:https://bbs.csdn.net/topics/611387568

点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)

内容概要:本文研究了基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题,提出了一种创新的智能优化方法以提升网络覆盖率和整体性能。文中详细阐述了蜣螂优化算法的核心原理及其在WSN节点部署中的应用机制,结合Matlab实现了算法仿真,并与标准PSO、自适应PSO、量子PSO、PSO-GA、PSO-GSA等多种智能优化算法进行了对比实验,验证了DBO在解决NP难问题(如TSP、QAP、背包问题)方面的优越性。研究聚焦于通过优化节点布局最大化感知覆盖范围,延长网络生命周期,提高监测效率,同时提供了完整的代码实现与仿真结果分析,展示了该方法在实际场景中的有效性与可行性。; 适合人群:具备一定编程能力和优化算法基础的科研人员、研究生及工程技术人员,特别适用于从事无线传感器网络、智能优化算法、物联网系统设计及相关领域研究的专业人士。; 使用场景及目标:①用于无线传感器网络中节点部署的优化设计,提升网络空间覆盖率与资源利用率;②作为智能优化算法的教学与科研案例,比较不同元启发式算法在复杂组合优化问题上的性能差异;③为相关科研项目提供可复现的Matlab代码支持和技术实现参考,推动算法在实际工程中的推广应用。; 阅读建议:建议读者结合提供的Matlab代码进行动手实践,深入理解算法实现细节与参数调优过程,重点关注仿真结果的对比分析,并尝试将该算法迁移至其他优化问题中以拓展其应用边界。
内容概要:本文针对电网故障下分布式能源系统的多目标无功优化问题,聚焦并网转换器(GCC)在复杂工况下的高性能控制策略研究。基于Matlab/Simulink平台,构建了以ANPC三电平逆变器为拓扑的并网系统模型,提出了一种融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相环(PLL)与电网电压前馈控制的一体化控制方案。该方案旨在综合提升系统在电压对称、不平衡及动态扰动工况下的电能质量、电压稳定性与功率平衡能力。研究通过多场景仿真验证,证实所提策略能有效抑制低次谐波、降低总谐波畸变率(THD),精准分离并抑制负序分量以维持三相电流对称,并通过前馈机制显著改善动态响应速度,快速抑制电压骤升/骤降及负载切换引起的电流畸变与功率冲击,从而实现系统在恶劣电网条件下的稳定、高质量并网运行。; 适合人群:具备电力电子、新能源并网或自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事科研或工程开发1-5年的研究人员、高校研究生及工程技术人员。; 使用场景及目标:①深入研究高渗透率新能源背景下,电网故障时的无功优化与系统稳定控制技术;②掌握ANPC三电平逆变器的先进调制(DPWMA)与复杂电网适应性控制(正负序分离、前馈补偿)技术;③在Simulink中实现并验证不平衡、电压波动等复杂工况下的高性能并网控制算法;④为提升分布式能源系统在实际电网中的并网友好性与运行可靠性提供理论依据和技术解决方案。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行动手实践,重点剖析DPWMA调制、正负序分离锁相及电网电压前馈三大核心模块的协同工作机制,通过调整电网故障参数和控制器增益,对比分析不同控制策略下的仿真波形,深刻理解各技术环节对系统稳态与动态性能的关键影响。

912

社区成员

发帖
与我相关
我的任务
社区描述
在 RT-Thread 嵌入式开源社区,交流问题,我们一起学习技能,分享经验,发展职业前途,打造嵌入式开发者的乐园!
mcu开源 企业社区
社区管理员
  • RT-Thread物联网操作系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
RT-Thread物联网操作系统社区希望打造一个开发者学习交流的平台,在这里提供代码实例、应用案例、技术文档、开发技巧等。进官方交流群,欢迎加小师弟微信:rtthread2020

试试用AI创作助手写篇文章吧