入门必看

首先欢迎大家来到 usb 的世界,在这里你可以学习到 usb 各种知识以及 cherryusb 的移植使用进阶等等。但是呢,刚进来的你,一定很懵懂,因为 USB 很难(其实当你学会了 cherryusb以后,你会发现,USB 一点都不难), 那么这种情况下,你的学习路线,应该是怎么样呢?在这里,我推荐大家是按照我得学习路线来学习,这样对你的 USB 成长是最有帮助的,并且你也不会中途放弃。

首先,不允许上来就看概念,有句古诗说的好, 纸上得来终觉浅,绝知此事要躬行 ,光看纸面上的东西,你是学不到什么的,只有当自己实践了,你才能更深入的了解这些概念。那么作为初学者,你应该怎么做呢?请看以下步骤。

第一步

你需要学过 C 语言,UART, DMA,这是基础,如果没学过,请去学习,不然你会很吃力。你会问 USB 跟 UART/DMA 有什么关系? 我只能说两个字, 等价

第二步

下载 demo 工程并跑通能运行, 建议学习慢的,使用 demo 同型号芯片,学习快的,可以选择自己移植相关支持的型号的芯片。你连 demo 都跑不通,你学什么 USB,你说对不对?

第三步

非常好,到这步,说明你已经能熟练移植和跑通所有示例了,那么接下来,你应该学习什么呢? 事务请求**描述符**(在 USB 的学习过程中,你只需要知道这三个,其余都不需要知道)。

第四步

首先我们需要知道 USB 事务包含 SETUP/IN/OUT,其实就是等价于发送命令,发送数据和接收数据,很简单。至于下面枚举中你在外面的网络中所听到的控制阶段,数据阶段,状态阶段,他不是事务,他只是用多个事务代表了一个阶段而已。

第五步

然后你再去看 USB 枚举 章节并且知道了一个概念: 描述符 ,这个时候,你就可以去简单看看什么是描述符,有哪些描述符,然后你需要记住, 设备、配置、接口、端点描述符的组成,并背下来,其余的你都不需要知道,因为其他都是固定的,后续都是 CV 。群文件有各类设备枚举的抓包,可以下下来看看。

第六步

然后呢,你可以再去看看什么是 请求 ,请求结构体的组成,看看有哪些请求,简单了解即可,为什么呢?因为它不过就是 8 字节的数据格式,大家都会写一个 UART + 自定义协议,那么 USB 的请求也是一样的,只不过是规定好了而已。

第七步

这个时候,你该去熟悉下协议栈的一些 API 了,参考 API 手册 章节。并且你需要知道中断完成的条件是什么,什么时候算接收完成,什么时候算发送完成,可以参考 USB 知识点拓展 章节。

第八步

到这步呢,你肯定已经非常懂了,然后就可以开始你的一些小功能小项目了,在此期间呢,请循环查看 USB 知识点拓展 章节,直到你真的理解了,因为这些内容是非常重要的,会影响我们代码的执行结果。

第九步

都到这步了,你应该不需要我了,这个时候,你可以去看看 USB 概念,看看 USB 的一些细节,看看 CherryUSB 的代码流程了。然后就是巩固巩固再巩固了。恭喜你,出师了!!!