打印
[应用相关]

STM32 USB驱动

[复制链接]
楼主: chenqiang10
手机看帖
扫描二维码
随时随地手机跟帖
61
chenqiang10|  楼主 | 2018-8-30 13:48 | 只看该作者 回帖奖励 |倒序浏览
usbh_ioreq (.c, .h): 该文件处理USB事务的生成。
USBH_CtlSendSetup:发起一个设置事务。
USBH_CtlSendData:发起一个控制数据OUT阶段事务。
USBH_CtlReceiveData:发起一个控制数据IN阶段事务。
USBH_CtlReq:用于生成控制传输的高级功能(设置,数据,状态阶段)。
USBH_BulkSendData:发起 一个bulk OUT事务。
USBH_BulkReceiveData:发起一个 bulk IN事务。
USBH_InterruptSendData:发起一个 中断OUT事务。
USBH_InterruptReceiveData:发起一个 中断IN事务。

使用特权

评论回复
62
chenqiang10|  楼主 | 2018-8-30 14:04 | 只看该作者
usbh_hcs (.c, .h) : 该文件处理主机通道分配和触发进程。
USBH_Open_Channel:打开并配置新的主机通道。
USBH_Modify_Channel:修改现有的主机通道。
USBH_Alloc_Channel:将主机通道分配给设备端点(创建USB)。
USBH_Free_Channel:释放一个主机通道
USBH_DeAllocate_AllChannel:释放所有主机通道(在非初始化阶段使用)

使用特权

评论回复
63
chenqiang10|  楼主 | 2018-8-30 14:08 | 只看该作者
Class文件夹包含所有与类实现相关的文件,并符合这些类中构建的协议的规范。使用如下结构将类引入到USB驱动
typedef struct _USBH_USR_PROP
{
  void (*Init)(void);       /* HostLibInitialized */
  void (*DeInit)(void);       /* HostLibInitialized */  
  void (*DeviceAttached)(void);           /* DeviceAttached */
  void (*ResetDevice)(void);
  void (*DeviceDisconnected)(void);
  void (*OverCurrentDetected)(void);  
  void (*DeviceSpeedDetected)(uint8_t DeviceSpeed);          /* DeviceSpeed */
  void (*DeviceDescAvailable)(void *);    /* DeviceDescriptor is available */
  void (*DeviceAddressAssigned)(void);  /* Address is assigned to USB Device */
  void (*ConfigurationDescAvailable)(USBH_CfgDesc_TypeDef *,
                                     USBH_InterfaceDesc_TypeDef *,
                                     USBH_EpDesc_TypeDef *);
  /* Configuration Descriptor available */
  void (*ManufacturerString)(void *);     /* ManufacturerString*/
  void (*ProductString)(void *);          /* ProductString*/
  void (*SerialNumString)(void *);        /* SerialNubString*/
  void (*EnumerationDone)(void);           /* Enumeration finished */
  USBH_USR_Status (*UserInput)(void);
  int  (*UserApplication) (void);
  void (*DeviceNotSupported)(void); /* Device is not supported*/
  void (*UnrecoveredError)(void);
}
USBH_Usr_cb_TypeDef;


使用特权

评论回复
64
chenqiang10|  楼主 | 2018-8-30 14:31 | 只看该作者
在USB设备库初始化期间,Core部分通过选择相应的类回调结构来选择USB类。 在usbd_core.h文件中,类结构定义(详细说明见注释)如下:
typedef struct _Device_cb
{
  uint8_t  (*Init)         (void *pdev , uint8_t cfgidx);/* 当设备收到设置的配置请求时调用此回调; 在这个函数中,类接口使用的端点被打开。 */
  uint8_t  (*DeInit)       (void *pdev , uint8_t cfgidx);/* 当收到清除配置请求时调用此回调; 此函数关闭类接口使用的端点。*/
/* Control Endpoints 控制端点使用 以下几个 */
  uint8_t  (*Setup)        (void *pdev , USB_SETUP_REQ  *req);/* 调用此回调来处理特定的类设置请求 */
  uint8_t  (*EP0_TxSent)   (void *pdev );/*发送状态完成时调用此回调。*/
  uint8_t  (*EP0_RxReady)  (void *pdev );/*当接收状态结束时调用此回调。*/
  /* Class Specific Endpoints*/
  uint8_t  (*DataIn)       (void *pdev , uint8_t epnum);/*这个回调被调用来执行相对于非控制端点阶段的数据。*/
  uint8_t  (*DataOut)      (void *pdev , uint8_t epnum);/*调用此回调函数以执行相对于非控制端点的数据输出阶段。*/
  uint8_t  (*SOF)          (void *pdev);/*当收到SOF中断时调用此回调函数; 这个回调函数可以用来同步一些进程和帧开始。*/
  uint8_t  (*IsoINIncomplete)  (void *pdev);/*当最后一个同步IN传输未完成时调用此回调。*/
  uint8_t  (*IsoOUTIncomplete)  (void *pdev);/*当最后一个同步OUT传输未完成时调用此回调。*/

  uint8_t  *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length);/*该回调返回USB配置描述符。*/
#ifdef USB_OTG_HS_CORE
  uint8_t  *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length);/*该回调在高速模式下返回使用的类的其他配置描述符*/
#endif

#ifdef USB_SUPPORT_USER_STRING_DESC
  uint8_t  *(*GetUsrStrDescriptor)( uint8_t speed ,uint8_t index,  uint16_t *length);/*这个回调函数返回用户定义的字符串描述符。*/
#endif
} USBD_Class_cb_TypeDef;


使用特权

评论回复
65
chenqiang10|  楼主 | 2018-8-30 14:32 | 只看该作者
该库提供用户回调结构,允许用户添加特殊代码来管理USB事件。 在usbd_core.h文件中,这个用户结构定义(具体介绍见注释)如下:
typedef struct _USBD_USR_PROP
{
  void (*Init)(void);/* 该设备库启动(完成初始化后)时调用该回调。 */
  void (*DeviceReset)(uint8_t speed);/*当设备检测到来自主机的重置事件时,会调用此回调。*/
  void (*DeviceConfigured)(void);/*当设备收到设置的配置请求时,会调用此回调。*/
  void (*DeviceSuspended)(void);/*当设备检测到来自主机的暂停事件时,会调用此回调。*/
  void (*DeviceResumed)(void);/*当设备检测到来自主机的恢复事件时,会调用此回调。*/
  void (*DeviceConnected)(void);/*当设备连接到主机时调用此回调。*/
  void (*DeviceDisconnected)(void);/*当设备与主机断开连接时调用此回调。*/
}
USBD_Usr_cb_TypeDef;


使用特权

评论回复
66
paotangsan| | 2018-9-1 15:25 | 只看该作者
感谢楼主分享

使用特权

评论回复
67
wakayi| | 2018-9-1 15:38 | 只看该作者
感谢楼主分享

使用特权

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

本版积分规则