527|0

2934

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【DigiKey 创意大赛】USB通讯设备枚举方法经验 [复制链接]

 

上期分享了SPI、IIC设备调试项目的USB设备的定义设置方法,但是这里留了一个尾巴,就是设备被设别出来后,出现了一个错误,说明这个设备没有完全成功。

   

这个问题的原因是因为USB设备描述符,没有正确加载造成的,打开usbd_custom_hid_if.c文件,发现描述符只有2个字节

/** Usb HID report descriptor. */
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
  /* USER CODE BEGIN 0 */
  0x00,
  /* USER CODE END 0 */
  0xC0    /*     END_COLLECTION	             */
};

/* USER CODE BEGIN PRIVATE_VARIABLES */

/* USER CODE END PRIVATE_VARIABLES */

需要修改描述符的节点的其它内容,描述符的内容是根据设备的需要进行定制的,这里推荐一个软件工具,HID descriptor Tool,这个工具可以排出需要的描述符。

 

我参考以前的项目,生成了一段描述符

        /* USER CODE BEGIN 0 */
		0x06, 0x00, 0xff, // Usage Page(Undefined )
		0x09, 0x01, // USAGE (Undefined)
		0xa1, 0x01, // COLLECTION (Application)
		0x15, 0x00, // LOGICAL_MINIMUM (0)
		0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
		0x75, 0x08, // REPORT_SIZE (8)
		0x95, 0x40, // REPORT_COUNT (64)
		0x09, 0x01, // USAGE (Undefined)
		0x81, 0x02, // INPUT (Data,Var,Abs)
		0x95, 0x40, // REPORT_COUNT (64)
		0x09, 0x01, // USAGE (Undefined)
		0x91, 0x02, // OUTPUT (Data,Var,Abs)
		0x95, 0x01, // REPORT_COUNT (1)
		0x09, 0x01, // USAGE (Undefined)
		0xb1, 0x02, // FEATURE (Data,Var,Abs)
		/* USER CODE END 0 */
		0xC0 /* END_COLLECTION */

替换默认的描述符,这里还有个小坑,就是需要修改一下USBD_CUSTOM_HID_REPORT_DESC_SIZE的值33U,为描述符的字节长度,这个也可以在生成设备时进行,

 

这时的设备枚举工作就基本上完成了,编译代码,执行...

 

这个设备枚举成功,这时就可以正常的通讯了。

下期分享使用C#编写和下位机的通讯过程

 

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表