打印
[AT32F405]

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

[复制链接]
2223|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
TinyUSB基本介绍
TinyUSB是一个用于嵌入式系统的开源的跨平台USB协议栈,协议栈中包含了主机端及设备端的协议栈,由于不使用动态内存分配以及采用阻塞所有中断事件,在非ISR任务功能中处理中断事件的设计方式,所以此协议栈的内存安全性及线程安全性极高。
源码是托管在GitHub上面,地址是:https://github.com/hathach/tinyusb。

主要文件目录功能
Examples--- 各种使用tinyusb实现的例程,可以用于参考
hw--- 和硬件相关的文件,一般移植不需要使用(不分公用头文件需要使用)
lib--- 第三方库,一般移植不需要使用
src---tinyusb源码文件
Examples目录说明


属于工程专用文件,main.c文件可以自己创建,可以参考例程中的main.c文件使用tinyusb库。
src目录说明


tusb.c是tinyusb的核心文件,需要添加到工程,并包含相关头文件
Class---类文件,根据所要使用的类使用相关文件

Common---公共文件,需要添加tusb_fifo.c文件到工程,并包含相关头文件

device---设备模式需要使用的文件,使用USB设备时需要添加usbd.c和usbd_control.c文件到工程,并包含相关头文件

host---主机模式要使用的文件,使用USB主机时需要添加hub.c和usbh.c文件到工程,并包含相关头文件

osal---操作系统抽象层,在使用RTOS时需要添加头文件

portable---移植文件,不同芯片移植时的接口文件,需要自己根据所使用的芯片进行编写!!!

typec---是type-c使用是的相关文件,需要添加usbc.c文件到工程,并包含相关头文件


开始移植,以tinyusb例程中设备模式的音频例程uac2_headset为例

首先移植和例程相关的文件,tinyusb-master\examples\device\uac2_headset\src里的文件到新的工程目录下examples\usb_device\audio_tinyusb\uac2_headset_src(此目录可根据自己工程情况进行修改,添加到新工程时注意路径即可),这里的main.c文件为参考文件,实际使用时可不拷贝。
Tinyusb 例程文件路径

新工程文件路径

添加tinyusb库源码文件,实际使用中会用到
class\audio内文件

Common内文件

device内文件

还需要在portable内创建芯片的接口文件(此文件需要根据芯片自己创建)

Tinyusb库源码路径

添加到新工程后的Tinyusb库源码路径

打开工程文件,将拷贝的文件添加到工程



添加头文件路径

其中hw\bsp这个路径需要注意一下,usb_descriptors.c内的使用函数board_usb_get_serial(_desc_str + 1, 32);在board_api.h内,所有需要添加这个头文件路径。

添加完文件和头文件路径后,需要在设置项内添加宏 CFG_TUSB_MCU,否则会报很多错误。
添加CFG_TUSB_MCU有2中方法,第一种如下,参数使用tinyusb未定义MCU型号时的默认参数。

另外一种方式是采用和tinyusb库已经支持的芯片信号的风格一致的方式。
首先在tusb_option.h内添加新的芯片型号宏定义

然后在tusb_config.h内添加
#define CFG_TUSB_MCU  OPT_MCU_AT32F405 宏定义

最后需要在common/tusb_mcu.h内添加芯片参数定义

为保持和tinyusb的整体风格一致,在移植接口文件内需要需添加#include "board_mcu.h"链接MCU库。

在board_mcu.h内添加芯片头文件

支持移植工作就完成了,剩下开始接口对接和应用实现了,下篇帖子再重点介绍。

使用特权

评论回复
沙发
呐咯密密| | 2024-5-13 13:17 | 只看该作者
过程详细,很不错的帖子

使用特权

评论回复
板凳
micoccd| | 2024-5-13 14:31 | 只看该作者
实现过程讲解的很详细

使用特权

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

本版积分规则

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

102

主题

1233

帖子

6

粉丝