USB是本开发板一个重要的功能,不过通过查询已有的例程中并没有有关USB的例程,我们只能通过其他途径获取,灵动微官网可以生成专用的SDK,其中就包括基于tinyusb的hid_keyboard例程我们参考这个例程进行设计,通过这个例程把我们的开发板枚举成功。
登录mindsdk网站:
选择特定目标信息,生成SDK样板:
选择目标例程:
这个例程编译后可以看到一只输入a,不过这个定制的工程被急速缩减了,就连常用的“SET”这种宏定义都没有,风格和通用例程差的太多,我们只能试着把这里面的移植一下,结果CFG_TUSB_MCU还总是找不到定义,说是在defined by board.mk,原版里面也没有找到。
只能进行一下USB的体验了,连接USB后可以看到:
对于设备的名字可以"usb_descriptors.c"中进行查看修改,还有其他USB参数,比如PID等等:
tusb_desc_device_t const desc_device =
{
.bLength = sizeof(tusb_desc_device_t),
.bDescriptorType = TUSB_DESC_DEVICE,
.bcdUSB = 0x0110,
.bDeviceClass = 0x00,
.bDeviceSubClass = 0x00,
.bDeviceProtocol = 0x00,
.bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE,
.idVendor = 0xCafe,
.idProduct = USB_PID,
.bcdDevice = 0x0100,
.iManufacturer = 0x01,
.iProduct = 0x02,
.iSerialNumber = 0x03,
.bNumConfigurations = 0x01
};
char const* string_desc_arr [] =
{
(const char[]) { 0x09, 0x04 }, // 0: is supported language is English (0x0409)
"TinyUSB", // 1: Manufacturer
"TinyUSB Device", // 2: Product
"123456", // 3: Serials, should use chip ID
};
我还是想重点吐槽一下,这次提供的例程和SDK是两个工作组写的吗?对于同一款单片机最基本的规范都不统一吗?我很费解,想要移植需要修改大量的宏定义,要搞统一是不是先把自己的对外代码先统一。
|