用CH374做HID键盘设备。 是单一的键盘,不带任何其它设备。 端点描述符如下: U08 EP1_HID_Des[] = { HID_UsagePage(HID_USAGE_PAGE_GENERIC), //05 01 HID_Usage(HID_USAGE_GENERIC_KEYBOARD), //09 06 HID_Collection(HID_Application), //A1 01 HID_ReportSize(1), //75 01 HID_ReportCount(8), //95 08 HID_UsagePage(HID_USAGE_PAGE_KEYBOARD), //05 07 HID_UsageMin(HID_USAGE_KEYBOARD_LCTRL), //19 E0 HID_UsageMax(HID_USAGE_KEYBOARD_RGUI), //29 E7 HID_LogicalMin(0), //15 00 HID_LogicalMax(1), //25 01 HID_Input(HID_Data + HID_Variable + HID_Absolute), //81 02 HID_ReportCount(1), //95 01 HID_ReportSize(8), //75 08 HID_Input(HID_Constant), //81 01 HID_ReportCount(5), //95 05 HID_ReportSize(1), //75 01 HID_UsagePage(HID_USAGE_PAGE_LED), //05 08 HID_UsageMin(HID_USAGE_LED_NUM_LOCK), //19 01 HID_UsageMax(HID_USAGE_LED_KANA), //29 05 HID_Output(HID_Data + HID_Variable + HID_Absolute), //91 02 HID_ReportCount(1), //95 01 HID_ReportSize(3), //75 03 HID_Output(HID_Constant), //91 01 HID_ReportCount(6), //95 06 HID_ReportSize(8), //75 08 HID_LogicalMin(0), //15 00 HID_LogicalMax(255), //25 FF HID_UsagePage(HID_USAGE_PAGE_KEYBOARD), //05 07 HID_UsageMin(0), //19 00 HID_UsageMax(255), //29 FF HID_Input(HID_Data + HID_Array), //81 00 HID_EndCollection //0xc0 }; 发送数据时往缓冲区写出数据 Write374Block( RAM_ENDP1_TRAN, 8, upBuf ); 在这之后还应该写什么命令把数据发送到USB总线呢? 还有,发送了控制指示灯的指令后,PC机的回复状态从哪里取到? [Emot]13[/Emot]
查看: 5138
回复: 3
CH374实现HID的问题
热门产品 :
CH592: RISC-V内核BLE5.4无线MCU
Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_ACK( Read374Byte( REG_USB_ENDP1 ) )) 只要写ACK就可以了
刘工: 还有一个参数: M_SET_EP1_TRAN_ACK( old, len ) 是填发送数据的总长度? 那就是这样子。 Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_ACK( Read374Byte( REG_USB_ENDP1 )^ BIT_EP1_RECV_TOG, 8));
对了不?
不好意思,我忘记这个长度的参数了。 这样就可以了: Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_ACK( Read374Byte( REG_USB_ENDP1 ) 8)); 为什么不^ BIT_EP1_RECV_TOG是因为在发送完毕中断里进行了)^ BIT_EP1_RECV_TOG这个操作,你可以在代码中搜索看一下。
请勿发布广告和违法内容, 代码可以选择编辑器代码语言格式, 更易他人阅读帮助您, 或者留下联系方式,以便更好更快服务您
只有登录才能回复,可以选择微信账号登录