USB-OTG应用分析

来源:互联网 发布:什么相机软件最好 编辑:程序博客网 时间:2024/06/05 03:17
这部分我将详细介绍stm32  USB-OTG库的实现过程。通过阅读自带的库可以学习他不错的程序框架。

想要更深入了解USB的插入检查,枚举过程,描述符的详细信息可以跳转至我的这一专题:

USB协议略解
言归正传回到我们的USB-OTG中来:


  1. USB OTG含义
  2. USB OTG作用
  3. USB OTG库函数分析

1. USB OTG含义

OTG是On The Go的缩写,正在进行中的意思,是近年发展起来的技术,2001年12月18日由USB Implementers Forum公布,主要应用于各种不同的设备或移动设备间的联接,进行数据交换。特别是PDA、移动电话、消费类设备。改变如数码照相机、摄像机、打印机等设备间多种不同制式连接器,多达7种制式的存储卡间数据交换的不便。


2. USB OTG作用

OTG的设备,例如数码相机直接连接到打印机上,通过OTG技术,连接两台设备间的USB口,将拍出的相片立即打印出来;也可以将数码照相机中的数据,通过OTG发送到USB接口的移动硬盘上,野外操作就没有必要携带价格昂贵的存储卡,或者背一个便携电脑。我们知道USB设备分为HOST(主设备)和SLAVE(从设备),只有当一台HOST与一台SLAVE连接时才能实现数据的传输,而OTG设备既能充当HOST,亦能充当SLAVE,也即DRD(Dual-role-devices),所以这样就可以脱离PC(host设备)来在不同的移动设备上通过OTG技术来传输数据了。USB OTG设备就是指具备独立数据拷贝功能的移动硬盘产品。


3. USB-OTG 库分析

第一步就是关键的初始化部分:
这里写图片

#ifdef USBAPP    // Init Host Library     USBH_Init(&USB_OTG_Core, #ifdef USE_USB_OTG_FS      USB_OTG_FS_CORE_ID,#else     USB_OTG_HS_CORE_ID,#endif     &USB_Host,    &USBH_MSC_cb,     &USR_cb);#endif

这里的结构体内容还需我们填充:

这里写图片描述

USBH_USR_MSC_Application就是我们的U盘读写的地方,稍后细讲。

这里写图片描述


我们回头细看下init函数

这里写图片描述



发现本质就是结构体部分的向上注册:
这里写图片描述
这里写图片描述


这里写图片描述


接下来我们分析下USB_MSC_cb结构体:

这里写图片描述


到这里初始化完成了,剩下我们看下USB是如何调度里面那些注册就结构体里的函数的:
这里写图片描述

这里写图片描述


这里写图片描述

当HOST_CLASS状态时:

这里写图片描述

当 USBH_MSC_DEFAULT_APPLI_STATE

这里写图片描述

就调用了我们的app函数。

原创粉丝点击