stm32f107 usbh主模式库解析 下载本文

USBH_USR_NO_RESP = 0, /*no response from user */ USBH_USR_RESP_OK = 1, }

USBH_USR_Status; 4演示程序

4.1大批量存储类的演示 4.1.1软件初始化

以下代码从main.c文件提取代码。文件显示调用usbh_processfor之前管理内核状态机必要的初始化。

usb_init被定义类驱动程序的参数调用,这是MSC类驱动,并使用用户回调函数 int main(void) {

/* Setup STM32 Hardware Configuration */ BSP_Init();

/* Init Host Library */

USBH_Init(&USB_OTG_FS_dev, &MSC_cb , &USR_Callbacks); while (1) {

/* Host Task handler */ USBH_Process(); } }

4.1.2大批量存储设备枚举

当附加一个全/低速设备的stm3210c_eval板,LCD显示下面的文字(例如,当挂载Kingston DataTraveler G2 u盘): 图6。MS设备枚举

4.1.3访问大批量存储设备的内容

枚举结束后,按下按钮B3显示屏幕下方,它提供以下信息: ■快闪随身碟容量(以兆字节) ■根文件夹中的文件

图7。MS设备内容的访问

请注意,在浏览大批量存储设备内容后,一个简单的文本文件“hostdemo.txt”写入闪存随身碟(假设它没有写保护)。

为了测试文件的读访问,用户可以从液晶显示屏上显示图像幻灯片,假设一些BMP图像在闪光的随身碟的根文件夹是可用的。

注:1 BMP图像与LCD屏幕大小在项目文件夹提供。 2如果设备是写保护的,则在液晶屏上会显示一条警告消息。

3带有多个逻辑单元的大批量存储设备不支持(错误信息会在液晶屏上显示)。

4如果没有BMP图像在u盘的根文件夹可用,一个警告信息会显示在液晶屏幕,2秒后,主模式重新初始化(重新启动u盘枚举)。 4.1.4u盘试验

由于嵌入式USB主模式是有限的,这些互操作性测试: 1。枚举,

2。与设备连接冷启动, 3。热拔出/连接 4。浏览根含量,

5。创建“hostdemo.txt”文件,

6。从设备读取数据到液晶屏:图像幻灯片, 7。发送消息到TFT-LCD(启动失败就提示)

已成功地应用于下表选择不同的闪光pendrives使用STM32F1057 / USB主模式库提供大批量存储示范的例子。 4.2HID鼠标和键盘演示 4.2.1初始化

与大容量存储设备一样(见第4.1.1),除了HID类驱动程序在usbh_initfunction选择: /* Init Host Library */

USBH_Init(&USB_OTG_FS_dev, &HID_cb , &USR_Callbacks); 4.2.2鼠标或键盘设备枚举

类似的大容量存储设备(见4.1.2节) 鼠标演示

鼠标设备枚举后,按下按钮,B3显示下面的屏幕上,这

显示鼠标的3个按钮,指针(绿十字)。 图8。鼠标演示

Keyboard demo

After keyboard enumeration, pressing button B3 displays an LCD screen where the user can

type some text:

Figure 9. Keyboard demo

演示的脚印 5已知的限制

的USB主模式协议栈STM32F105 / 7具有以下称当前的版本 局限性:

1。它只支持两个USB标准级的应用,即:

A)大批量存储类(MSC)访问USB闪存pendrives, B)人机接口设备(HID)的键盘和鼠标设备类。 2。它只支持一个接口和一个配置的选择(默认设置)。 3。它不支持多个逻辑单元的大容量存储设备。 4。它具有EFSL FAT文件系统支持:

A)页的大小是固定的512个字节。Flash pendrives高粒度不支持。

B)不支持长文件名和Unicode。

5。很短的时间之间的延迟装置脱离/连接可能会导致异常操作。 6。兼容性问题已经遇到的一些设备(TA BL E 1 5未列出)在枚举相。

7。连接和断开一个不支持的类设备然后将后支持类设备,枚举是正确的,但设备不能访问。一个设备的复位是必要的。