[AT32F405]

【AT-START-F405测评】tiny_usb库例程的移植1

[复制链接]
394|2
手机看帖
扫描二维码
随时随地手机跟帖
6552918|  楼主 | 2024-5-13 11:30 | 显示全部楼层 |阅读模式
TinyUSB基本介绍
TinyUSB是一个用于嵌入式系统的开源的跨平台USB协议栈,协议栈中包含了主机端及设备端的协议栈,由于不使用动态内存分配以及采用阻塞所有中断事件,在非ISR任务功能中处理中断事件的设计方式,所以此协议栈的内存安全性及线程安全性极高。
源码是托管在GitHub上面,地址是:https://github.com/hathach/tinyusb。
f1d9e239523445f9cf9b9dcf9840a61f
主要文件目录功能
Examples--- 各种使用tinyusb实现的例程,可以用于参考
hw--- 和硬件相关的文件,一般移植不需要使用(不分公用头文件需要使用)
lib--- 第三方库,一般移植不需要使用
src---tinyusb源码文件
Examples目录说明
7bb7d6ae82cdfcffc366726c8071dac5
d7cfaeef3e52183d765c9918841237c2
属于工程专用文件,main.c文件可以自己创建,可以参考例程中的main.c文件使用tinyusb库。
src目录说明
5d0e09738de73775693616567245de55
8c6fb46fcb04a08492971691b08cc6db
tusb.c是tinyusb的核心文件,需要添加到工程,并包含相关头文件
Class---类文件,根据所要使用的类使用相关文件
1098b95bd5bb2a957ac284a3203a843e
Common---公共文件,需要添加tusb_fifo.c文件到工程,并包含相关头文件
80708f4b6860617cbfc5e5cbb56aaee2
device---设备模式需要使用的文件,使用USB设备时需要添加usbd.c和usbd_control.c文件到工程,并包含相关头文件
045f27e833ec4bae167c5b8bf5be41b3
host---主机模式要使用的文件,使用USB主机时需要添加hub.c和usbh.c文件到工程,并包含相关头文件
6f221b6a18a15d8a7fc89c97276d03c3
osal---操作系统抽象层,在使用RTOS时需要添加头文件
ca45ef9c8a95837c0f936db66b1bbeeb
portable---移植文件,不同芯片移植时的接口文件,需要自己根据所使用的芯片进行编写!!!
1d64b1de4548df9bb99ec9c2bce64edf
typec---是type-c使用是的相关文件,需要添加usbc.c文件到工程,并包含相关头文件
4c9bf1b066006bcba933d1e4ec6181cf

开始移植,以tinyusb例程中设备模式的音频例程uac2_headset为例
e13d8102a659db02270173228b174cc4
首先移植和例程相关的文件,tinyusb-master\examples\device\uac2_headset\src里的文件到新的工程目录下examples\usb_device\audio_tinyusb\uac2_headset_src(此目录可根据自己工程情况进行修改,添加到新工程时注意路径即可),这里的main.c文件为参考文件,实际使用时可不拷贝。
Tinyusb 例程文件路径
0c34c28569f82e93174515ec3529b5c4
新工程文件路径
df87425b3b7252d3daaf5a58a39c8179
添加tinyusb库源码文件,实际使用中会用到
class\audio内文件
254ac406cd2c2de294ce71fa53f0e3bb
Common内文件
dbe9524ef37ec5aad07d039721047840
device内文件
fbbad13ce02ab3a19721b82c74e7eb41
还需要在portable内创建芯片的接口文件(此文件需要根据芯片自己创建)
339fa4297e50db5ad7f068098e6819b4
Tinyusb库源码路径
93303e25eedf3d546cd444ac43fe2956
添加到新工程后的Tinyusb库源码路径
8dc57da7b6dfe27aabcf656985320561
打开工程文件,将拷贝的文件添加到工程
ef90c054a2b45ac719c72efe841a0597
10701a9219f4dff3235c0313d195aa15
7fc55d3b064ba0dbe48439b024a64e81
添加头文件路径
3914784acb2b83a7be171ed47b4ac4e0
其中hw\bsp这个路径需要注意一下,usb_descriptors.c内的使用函数board_usb_get_serial(_desc_str + 1, 32);在board_api.h内,所有需要添加这个头文件路径。
97e54c82989be4345cf5a36a861cab83
添加完文件和头文件路径后,需要在设置项内添加宏 CFG_TUSB_MCU,否则会报很多错误。
添加CFG_TUSB_MCU有2中方法,第一种如下,参数使用tinyusb未定义MCU型号时的默认参数。
a94ef65f2b88958b9217b90e3c684102
另外一种方式是采用和tinyusb库已经支持的芯片信号的风格一致的方式。
首先在tusb_option.h内添加新的芯片型号宏定义
d5fdd3d3bc8bb9f72db1f5ee7b59d544
然后在tusb_config.h内添加
#define CFG_TUSB_MCU  OPT_MCU_AT32F405 宏定义
e999ff23c37faf4e57ee5681b3b537e3
最后需要在common/tusb_mcu.h内添加芯片参数定义
3219356ff3d300003f88ccb68577b655
为保持和tinyusb的整体风格一致,在移植接口文件内需要需添加#include "board_mcu.h"链接MCU库。
7000a63fcc74ec4384677b3b4e066503
在board_mcu.h内添加芯片头文件
dd5f0391bd57845b93f9fca6a24f8819
支持移植工作就完成了,剩下开始接口对接和应用实现了,下篇帖子再重点介绍。

使用特权

评论回复
呐咯密密| | 2024-5-13 13:17 | 显示全部楼层
过程详细,很不错的帖子

使用特权

评论回复
micoccd| | 2024-5-13 14:31 | 显示全部楼层
实现过程讲解的很详细

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

101

主题

1191

帖子

5

粉丝