【AT-START-F423测评】+USB设备库文件关系使用说明

最近一直在研究F423的USB进行tinyusb的移植,但由于AT的USB库协议栈耦合的比较深,移植tinyusb库还没完成,但对AT的设备库已经了解的差不多。现对F423的USB设备库的使用和大家分享一下。
首先,由于USB库相对比较复杂,AT原厂提供《AN0097应用笔记》,描述了AT32F4xx 系列 USB 设备库的架构和使用方法,但我看了以后感觉对新手还有点不够详细,我来结合《AN0097应用笔记》和例程进行一下说明。
首先《AN0097应用笔记》的文件路径如下:
 


我们以vcp_loopback例程进行讲解
 


《AN0097应用笔记》内的库文件结构说明如下
 


工程文件打开后的文件结构和文件库文件结构是对应的
 


虽然文件功能在《AN0097应用笔记》都有相关的介绍,但文件之间的关系并没有介绍。
USB除了用户应用程序外,实际就两部分内容,分别是初始化处理和中断处理,我就这两部分内容结合程序来介绍一下文件之间的关系。
首先是初始化部分
 


初始化时,针对不同设备类,需要提供类的函数指针,以便在中断中回调到类中断处理
cdc_class_handler的类函数在cdc_class.c内,处理类中断事件
 


cdc_desc_handler的类函数在cdc_desc.c内,处理描述符中断事件
不同类型的描述符也都在cdc_desc.c内,修改时在这个文件内修改即可
另外,USB通信涉及的端点定义和字符串定义在cdc_desc.h内,
 


文件关系如下:
 


初始化实现函数在usb_core.c内
 

 最核心的USB 设备核心初始化函数
usbd_core_init(&(otgdev->dev), otgdev->usb_reg,
class_handler,
desc_handler,
core_id);
是在usbd_core.c内实现的
 


usbd_core.c内实现了所有的USB设备驱动,相关API函数如下
 


文件关系如下
 


至此,初始化相关的文件关系就介绍完了。
下面开始中断的介绍
例程的USB中断入口函数在main.c内
 


usbd_irq_handler(&otg_core_struct);的函数实现是在usbd_int.c内,USB的所有中断处理都在这个函数内处理。
 


我以标准请求为例,来看以下各文件的关系
Setup是out中断,在out端点中断处理
 


usbd_outept_handler(udev);内通过中断标志判断,进入Setup处理
 


Setup的处理函数usbd_core_setup_handler(udev, ept_num);在USB驱动文件内usbd_core.c
 


再根据Setup不同请求分别处理,这里以设备请求usbd_device_request(udev);为例
 


一下来以描述符请求usbd_get_descriptor(udev);为例,函数内通过初始化时配置的 类函数和类描述符函数指针实现了类函数的执行
 


文件关系如下
 


通过上述一个中断的流程为例,将中断函数间的文件管理进行了梳理和介绍,这样可以更好的理解USB设备库文件之间的使用关系,希望对AT USB设备库感兴趣的人有所帮助。
---------------------
作者:6552918
链接:https://bbs.21ic.com/icview-3341736-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值