×
单片机 > 单片机程序设计 > 详情

STM32F103C8T6的USB HID复合设备的实现要点

发布时间:2020-08-27 发布时间:
|

1,可从官网下载STM32_USB-FS-Device_Lib_V4.0,里面有Custom_HID例子参考。

可从Custom_HID修改得到。时刻记住“自己是STM32F10X_MD系列”以及“自己不是官方demo板”即可将无用的代码去掉,譬如去掉ADC等等相关代码。


2,需要SystemInit();配置为72MHz,否则无法工作,USB是工作在12MHz。


3,如果D+直接上拉到3.3V,把demo usb_pwr.c的PowerOn和PowerOff函数改为空函数。否则PC无法识别,单步调试发现不知跳哪去了。假设不注释,亦可把usb_desc.c的设备描述符bcdUSB域改为0x0110,即USB1.1也是可行的。


4,主要修改usb_conf.h,usb_desc.c以及usb_prop.c,主要是配置描述符增加键鼠的HID描述符和端点描述符,当然对应的报告描述符也需要修改与增加。

usb_prop.c主要在CustomHID_Reset回调添加新增端点的初始化,以及CustomHID_Data_Setup中对不同index(对应复合设备里的不同接口)进行不同的描述符获取(HID描述符获取函数、报告描述符获取函数等)回调函数的注册。


总体上比较容易移植!


重点是:理解复合设备是“一个设备描述符中包含一个配置描述符,而这个配置描述符又包含N个接口描述符(譬如,键鼠为2个),最后,每个接口描述符又包含N个端点描述符(键鼠为2个,一个IN端口,另外一个OUT端口,类型是中断传输方式)”。当然如果是hid设备还会有HID描述符。


顺序是:设备描述符->“配置描述符1->接口描述符1_1->[HID描述符1_1]->端点描述符组1_1->接口描述符1_2->[HID描述符1_2]->端点描述符组1_2....->配置描述符2->接口描述符2_1...."


难点是:理解报告描述符,可参看www.usb.org相关的hid class文档。


需要掌握的技巧是:从已有(现成)的复合设备(譬如键鼠)中使用USBlyzer工具摘取它的报告描述符,填到自己的描述符中,可实现很多,诸如写字板,thouchpad(使用绝对坐标),鼠标(相对坐标)等设备,十分强大的技巧!!!!!



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析