当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

USBD HID Custom In/Out

1 功能概述

本例程演示 CherryUSB 组件的 HID Custom In/Out Device(自定义人机接口设备)的基本功能与使用方法。

2 环境准备

  • 硬件设备与线材:

    • PAN107X EVB 核心板底板各一块

    • JLink 仿真器(用于烧录例程程序)

    • USB-TypeC 线一条(用于底板供电和查看串口打印 Log)

    • 杜邦线数根或跳线帽数个(用于连接各个硬件设备)

  • 硬件接线:

    • 将 EVB 核心板插到底板上

    • 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板 USB->UART 插口相连

    • 使用杜邦线将 EVB 底板上的 TX 引脚接至核心板 P16,RX 引脚接至核心板 P17

    • 使用杜邦线将 JLink 仿真器的:

      • SWD_CLK 引脚与 EVB 底板的 P00 排针相连

      • SWD_DAT 引脚与 EVB 底板的 P01 排针相连

      • SWD_GND 引脚与 EVB 底板的 GND 排针相连

    • 使用跳线帽将 EVB 底板的:

      • USB+ 排针与 P14 排针相连

      • USB- 排针与 P13 排针相连

  • PC 软件:

    • 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率 921600(用于接收串口打印 Log)

3 编译和烧录

例程位置:<PAN10XX-NDK>\01_SDK\nimble\samples\component\usbd_hid_custom_inout\keil_107x

双击 Keil Project 文件打开工程进行编译烧录。

4 例程演示说明

  1. 烧录完成后,芯片会通过串口打印例程初始化 Log:

    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x61
    - Chip CP Version   : 255
    - Chip FT Version   : 7
    - Chip MAC Address  : E11000014DE5
    - Chip UID          : B90801465454455354
    - Chip Flash UID    : 4250315A3538380B01FD8B435603EF78
    - Chip Flash Size   : 512 KB (Inc. 4KB Panchip Info Area)
    
    - Current Flash Map :
      +-------------------------+ <- Addr: 0x00000
      |      App Partition      |
      |        (480 KB)         |
      +-------------------------+ <- Addr: 0x78000
      |    KVStore Partition    |
      |        ( 16 KB)         |
      +-------------------------+ <- Addr: 0x7C000
      |  User Custom Partition  |
      |        ( 12 KB)         |
      +-------------------------+ <- Addr: 0x7F000
      |    Panchip Info Area    |
      |     (4 KB, Hidden)      |
      +-------------------------+ <- End : 0x80000 (512 KB)
    
    [I] App started..
    
    [I] USBD_EVENT_INIT
    [I] USBD_EVENT_DISCONNECTED
    
  2. 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板的 USB 插口相连

  3. 观察串口 Log,提示 USB 初始化成功:

    [I] USBD_EVENT_CONNECTED
    [I] USBD_EVENT_RESET
    [I] USBD_EVENT_RESET
    [I] USBD_EVENT_CONFIGURED
    
  4. 打开设备管理器,可以看到新增了一个名为 符合 HID 标准的供应商自定义设备 的人机接口设备,检查其 VID/PID,发现也与例程设置一致:

    image

    USB HID 自定义设备枚举成功

  5. 双击例程目录下的 HID 通信测试脚本 usbd_hid_custom_inout_test.bat,在弹出的命令行界面中可观察到 HID 数据收发测试过程及结果:

    image

    USB HID 自定义设备数据收发测试

提醒

本例程代码中编写的 USB HID Report(报告描述符),为了测试严谨,包含了额外的 Report ID 定义,但这可能会使得您从网络上下载的某些 USB HID 上位机测试工具无法正常识别;若您遇到了这种情况,可以使用我们提供的另一份简单版本的 HID Report,方法是在 SDK config 中将 Application Config : Use Report ID in HID Report Descriptor 配置取消勾选(参考 USBD HID Custom In/Out and MSC RAM Disk 例程)。

5 开发者说明

CherryUSB 是一个开源的用于嵌入式系统的高性能 USB 主从协议栈,我们对其做了一些裁剪、修改和适配后,使其成为 PAN10xx NDK 的组件提供给开发者使用。

开发者可通过如下步骤使能 CherryUSB 组件(HID 功能):

  1. 将 CherryUSB 源码和相关头文件目录加入 Keil 工程:

    • usbd_core.c(位于 <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/core/ 目录)

    • usb_dc_panchip.c(位于 <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/port/ 目录)

    • usbd_hid.c(位于 <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/class/hid/ 目录)

    • 头文件目录

      • <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/common/

      • <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/core/

      • <PAN10xx-NDK>/nimble/component/usb_device/CherryUSB/class/hid/

  2. 在 Keil 工程中配置 CherryUSB 组件:

    • 打开工程配置 sdk_config.h 文件

    • 勾选 Component Config : CherryUSB Enable 以使能 CherryUSB 组件

    • 根据需要修改 CherryUSB 相关配置子项,如 USB 中断优先级、使能 USB 插拔中断等

当前例程的 CherryUSB 组件 config 配置如下:

image

CherryUSB component config

关于 CherryUSB config 配置的详细介绍请参考 NDK Configuration 配置指南 文档中的相关章节。

6 RAM/Flash资源使用情况

PAN107x:

Flash Size:  27.23k
RAM Size:  14.62 k