任何USB传输只能由主机发起
主机发送IN或OUT的请求只需一个令牌包,这个包含在USBH_BulkSendData()和USBH_BulkReceiveData()函数中,不需要编程者操心。
为了详细一点的说明这些,我要放几幅图,这几幅图来自《USB2.0与OTG规范及开发指南》。第一幅是BULK传输的步骤:
1、令牌阶段就是主机给设备发送一个输入或输出的令牌,告诉设备主机需要和某个地址的设备的某个端点进行输入或输出传输。第二幅图是令牌包的格式,很简单。这个STM32库函数的底层会处理,不需编程者介入。
2、数据阶段是关键,主机和设备之间会传送数据包,首先看一下数据包的格式,如下图。如图1所示,这个阶段如果是主机向设备发送数据包,则使用USBH_BulkSendData(),如果是主机跟设备要数据则使用USBH_BulkReceiveData()。这两个函数除了制定了数据传输的方向外,还规定了传输数据的长度和缓存地址。
3、握手阶段就是一个应答,告诉对方数据收到了或没有数据要传输或出错了等等。
以上文章是转载他人的