基于 CherryUSB 调试 dwc2 usb host 笔记

RT-Thread物联网操作系统 2022-06-15 10:11:13

本文由RT-Thread论坛用户@sakumisu原创发布:https://club.rt-thread.org/ask/article/9c31ce71ead26c2b.html
背景

之前适配 DWC2 USB IP 的时候,主要是基于 st 的 hal 库来走的,当时我就对他们的 hal 库代码不满,只是无奈,迫于时间就没重构,果不其然,usb bug 一堆,随意举例,这还只是冰山一角。
https://club.rt-thread.org/ask/article/dac2a83e018f6ad2.html

https://club.rt-thread.org/ask/article/b39785f4dd8a6032.html

再论 usb 的性能,那 hal 库写的,性能直接歇菜,根本没法用。
排坑

ok,现在我们开始一步步排坑

    全局中断 SOF
    首先是全局中断 SOF ,这是一个比较坑的,尤其是带了 OS 以后,几个意思,跟我 os 抢中断呢?sof 中断 1ms会触发一次,很费中断。为什么会有这个中断开启?后面再来说,结论就是 dwc2 这个ip太辣鸡,硬件做的很随意,功能没有做到硬件上去,而这个 sof 主要就是给中断传输和同步传输用的。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wIthnmr5-1655258913676)(https://oss-club.rt-thread.org/uploads/20220613/5b84aa1d18091292a73ad9f74193620e.png “QQ图片20220613230829.png”)]

    HCFG 中的 bit 0-1

这也是坑,我们直接看结论,人家手册里说了,每次设置时,需要复位,st 代码中楞是一个字没看见。小坑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2u5ueiC6-1655258913677)(https://oss-club.rt-thread.org/uploads/20220613/31c9536bc90106277ea899242d32e1d0.png “QQ截图20220613231215.png”)]

    HCINTMSK 中的 USB_OTG_HCINTMSK_NAKM

这里面中断标志那是相当多,最坑的是什么,USB_OTG_HCINTMSK_NAKM,我可以说,论坛出现的所有 NAK 的原因都是他造成的,什么枚举 NAK,U盘 NAK,都是他。究其原因,NAK 表示当前没有准备好,需要重试,但是其实并不需要,st 的代码中,进入 NAK 中断以后会关闭当前通道传输,然而,对于控制和批量传输这是没有必要的,传输是可以等到完成的。开了这个,就会造成,各种地方需要手动重发,然后读 HAL_HCD_HC_GetURBState,没有必要,关掉该中断给你带来无限可能。

原文链接:https://blog.csdn.net/rtthreadiotos/article/details/125291738

...全文
1888 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-软件工程 发布问题, 以便更快地解决您的疑问
内容概要:本文档聚焦于通信系统中的调制解调技术与Turbo码的结合应用,系统研究了GMSK调制的二比特差分解调方法,以及Turbo码分别与BPSK、GMSK调制方式联合使用的系统性能。通过Matlab平台实现了完整的通信链路仿真,涵盖信号调制、信道编码、解调解码及误码率分析等关键环节,深入探讨了不同调制体制下Turbo编码系统的抗干扰能力与频谱效率表现。研究不仅提供了算法实现代码,还包含了详细的性能对比分析,有助于理解现代数字通信中高效编码调制技术的设计原理与工程实现。此外,文档附带多个相关科研方向的仿真案例,展现出广泛的技术延展性与实际应用价值。; 适合人群:具备通信原理、数字信号处理等相关基础知识,熟悉Matlab编程环境,正在从事无线通信系统仿真、信道编码理论研究或相关领域科研工作的研究生、高校教师及工程技术研究人员。; 使用场景及目标:①深入掌握GMSK调制与Turbo码相结合的技术机制,理解其在提高通信可靠性与频谱利用率方面的优势;②熟练运用Matlab构建完整的数字通信仿真系统,完成从调制编码到解调译码的全流程建模与性能评估;③为无人机通信、卫星通信、移动通信等实际应用场景下的高可靠传输系统设计提供理论支持与算法参考。; 阅读建议:建议结合所提供的Matlab代码逐模块运行与调试,重点关注GMSK差分解调过程与Turbo译码的迭代收敛特性,同时可参考文档中列出的其他研究课题拓展仿真范围,提升综合科研与工程实践能力。

911

社区成员

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

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