This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294KCPDT:USB CDC 在我的设计中不起作用

Guru**** 2350610 points
Other Parts Discussed in Thread: TM4C1294KCPDT, EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617065/tm4c1294kcpdt-usb-cdc-does-not-work-in-my-design

器件型号:TM4C1294KCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

您好!

我们正在开发基于 TM4C1294KCPDT 的实验室器件、除 USB 外、它工作正常。 我想使用 USB CDC 驱动程序将器件连接到 PC、模拟串行端口。 原理图非常简单-由于这只是器件、我将 USB_DP、USB_DM、USB_VBUS 直接连接到 mini-USB 连接器、使用反向二极管保护信号、并将 USB_ID 上拉至3.3V。 引脚1是 VBUS、引脚2是 USB_DM、引脚3是 USB_DP、引脚5是 GND。

以下是初始化代码:

//
//
//此设备支持的语言。
////
*****************
const uint8_t g_pui8LangDescriptor[]=
{
4、
USB_DTYPE_string、
USBShort (USB_LANG_EN_US)
};
//*********
//
//制造商字符串。
////
*****************
const uint8_t g_pui8ManufacturerString[]=
{
(12 + 1)* 2、
USB_DTYPE_string、
"P"、0、"o"、 0、'r'、0、't'、0、 'l'、0、'a'、0、'b'、 0、'、0、'l'、0、
"T"、0、"d"、0、"."、 0、
};
//*********
//
//产品字符串。
////
*****************
const uint8_t g_pui8ProductString[]=
{
2 +(12 * 2)、
USB_DTYPE_string、
'a'、0、'u'、 0、"t"、0、"o"、0、 "T"、0、"r"、0、"A"、 0、"t"、0、
"e"、0、 '、0、'0'、0、'2'、 0、
};
//*********
//
//序列号字符串。
////
*****************
/*const*/ uint8_t g_pui8SerialNumberString[]=
{
2 +(8 * 2)、
USB_DTYPE_string、
"1"、0、"2"、 0、"3"、0、"4"、0、 '5'、0、'6'、0、'7'、 0、'8'、0
};
//*********
//
//控制接口描述字符串。
////
*****************
const uint8_t g_pui8ControlInterfaceString[]=
{
2 +(21 * 2)、
USB_DTYPE_string、
"A"、0、"C"、 0、'M'、0、'、0、 'C'、0、'o'、0、'n'、 0、"t"、0、
"r"、0、 'O'、0、'l'、0、'、 0、'i'、0、'n'、0、 "T"、0、"e"、0、
"r"、 0、'f'、0、'a'、0、 'c'、0、'e'、0
};
//*********
//
//配置描述字符串。
////
*****************
const uint8_t g_pui8ConfigString[]=
{
2 +(26 * 2)、
USB_DTYPE_string、
"S"、0、"e"、 0、'l'、0、'f'、0、 '、0、'P'、0、'o'、 0、'w'、0、
'e'、0、 'R'、0、'e'、0、'd'、 0、'、0、"C"、0、 'O'、0、'n'、0、
'f'、 0、'i'、0、'g'、0、 'u'、0、'r'、0、'a'、 0、't'、0、'i'、0、
'O'、0、'n'、0
};
//*********
//
//描述符字符串表。
////
*****************
const uint8_t * const g_ppui8StringDescriptors []=
{
g_pui8LangDescriptor、
g_pui8ManufacturerString、
g_pui8ProductString、
g_pui8SerialNumberString、
g_pui8ControlInterfaceString、
g_pui8ConfigString
};
#define NUM_STRING_descriptors (sizeof (g_ppui8StringDescriptors)/\
sizeof (uint8_t *))

tUSBDCDCDevice g_sCDCDevice =
{
//
//您已由 USB-IF 分配的供应商 ID。
//
0x8F0F,//临时
//
//为该设备分配的产品 ID。
//
0x100,
//
//设备功耗,单位为毫安。
//
20,
//
在 USB 配置描述符的
// bmAttributes 字段中传递给主机的值。
//
USB_CONF_ATTR_SELF,
//
//指向控制回调事件处理程序的指针。
//
at_USBControlEventCallback,
//
希望随每个
//事件一起传递到控制回调的值。
//
//(void *)&g_sYourInstanceData、
0、
//
//接收回调事件处理程序的指针。
//
at_USBReceiveEventCallback,
//
希望随每个
//事件一起传递到接收回调的值。
//
//(void *)&g_sYourInstanceData、
0、
//
////指向传输回调事件处理程序的指针。
//
at_USBTransmitEventCallback,
//
希望随每个
//事件一起传递到传输回调的值。
//
//(void *)&g_sYourInstanceData、
0、
//
//指向字符串表的指针。
//
g_ppui8StringDescriptors,
//
字符串表中的条目数。
//
NUM_STRING_descriptors
};

extern unsigned int Clk;

void initUSBCDC()
{
uint32_t ui32PLLRate;
SysCtlPeripheralEnable (SYSCTL_Periph_USB0);
SysCtlVCOGet (SYSCTL_XTAL_16MHz、&ui32PLLRATE);USBSTModeSet
(SysCtl0、SysCtlModeSet) eUSBModeDevice、0);
USBDCDFeatureSet (0、USBLIB_Feature_CPUCLK、&Clk);
USBDCDFeatureSet (0、USBLIB_Feature_USBPLL、&ui32PLLRate);
pvDevice = USBDCDCInit (0、&g_sCDCDevice);
}

然后、我将设备连接到 PC、一切都没有发生。 问题是什么?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oleg、

    它听起来像是定制板、您能否为其提供原理图?

    您使用的是 OS 吗? 什么版本的 TivaWare?

    插入电路板时、您是否在设备管理器的任何位置看到了未知设备、例如 USB 控制器下的设备?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Windows 7

    TivaWare_C_Series-2.1.4.178

    设备管理器中没有显示任何设备,甚至是未知设备。

    当我测量 USB 插头引脚上的电压时、VBUS 上的电压为5V、DP/DM 上的电压为0V

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Oleg、

    很抱歉、后续操作延迟。

    还有一些问题、因为目前还不清楚会发生什么情况。

    1) 1)您的 SYSCLK 设置是什么? 您能否发布 SYSCLK 初始化代码? 同时、您能否发布用于初始化 GPIO 的代码?

    2) 2)您是否初始化了 TX 和 RX 的 USB 缓冲器?

    3) 3) 您是否尝试使用默认的 TI VID/PID 来查看 Windows 是否会识别该问题? 我想如果 Windows 不知道、它会在设备管理器中显示为未知、但值得一看。

    4) 4)您是否有任何方法监听 USB 线路以查看数据是否正在传输? 使用电压表不会切断电压、您需要使用 o 范围或理想情况下的逻辑状态分析器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    感谢您的回答!

    1) 1)这是代码。 由于我没有通用 GPIO 初始化代码、因此我按时间顺序从驱动程序中收集了代码:

    CLK = SysCtlClockFreqSet (SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480、120000000L);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    SysCtlPeripheralCtl(SYSCB_Periptl);SysCtlPeripheralIOC
    (SYSCB_Periph_Periptl (SYSCB_Periptl);GPIPB_Periptl PeripheralEnable)
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
    SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);
    
    GPIOPinTypeGPIOOutput (GPIO_PORTJ_BASE、/* GPIO_PIN_0 |*/GPIO_PIN_1);
    GPIOPinTypeGPIOOutput (GPIO_PORTL_base、GPIO_PIN_0);
    GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_3);
    GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_2);
    GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_3);
    GPIOPinTypeGPIOOutput (GPIO_Porth_BASE、GPIO_PIN_2);
    
    GPIOPinConfigure (GPIO_PK0_EPI0S0);
    GPIOPinConfigure (GPIO_PK1_EPI0S1);
    GPIOPinConfigure (GPIO_PK2_EPI0S2);
    GPIOPinConfigure (GPIO_PK3_EPI0S3);
    GPIOPinConfigure (GPIO_PC7_EPI0S4);
    GPIOPinConfigure (GPIO_PC6_EPI0S5);
    GPIOPinConfigure (GPIO_PC5_EPI0S6);
    GPIOPinConfigure (GPIO_PC4_EPI0S7);
    GPIOPinConfigure (GPIO_PA6_EPI0S8);
    GPIOPinConfigure (GPIO_PA7_EPI0S9);
    GPIOPinConfigure (GPIO_PG1_EPI0S10);
    GPIOPinConfigure (GPIO_PG0_EPI0S11);
    GPIOPinConfigure (GPIO_PM3_EPI0S12);
    GPIOPinConfigure (GPIO_PM2_EPI0S13);
    GPIOPinConfigure (GPIO_PM1_EPI0S14);
    GPIOPinConfigure (GPIO_PM0_EPI0S15);
    //GPIOPinConfigure (GPIO_PL0_EPI0S16);
    GPIOPinConfigure (GPIO_PB3_EPI0S28);
    GPIOPinConfigure (GPIO_PN2_EPI0S29);
    GPIOPinConfigure (GPIO_PP3_EPI0S30);
    
    GPIOPinTypeEPI (GPIO_Porta_base、EPI_Porta_Pins);
    GPIOPinTypeEPI (GPIO_PORTB_BASE、EP_PORTB_Pins);
    GPIOPinTypeEPI (GPIO_PORTC_BASE、EP_PORTC_Pins);
    GPIOPinTypeEPI (GPIO_PORTG_base、EP_PORTG_Pins);
    GPIOPinTypeEPI (GPIO_PORTK_base、EPI_PORTK_Pins);
    //GPIOPinTypeEPI (GPIO_PORTL_base、EPI_PORTL_Pins);
    GPIOPinTypeEPI (GPIO_PORTM_BASE、EP_PORTM_Pins);
    GPIOPinTypeEPI (GPIO_PORTN_BASE、EP_PORTN_Pins);
    GPIOPinTypeEPI (GPIO_PORTP_BASE、EP_PORTP_PINS);
    
    #define beperer_portGPIO_PORTD_BASE、GPIO_PIN_7
    
    SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOD);
    HWREG (GPIO_PORTD_BASE + GPIO_O_LOCK)= GPIO_LOCK_KEY;
    HWREG (GPIO_PORTD_BASE + GPIO_CR)= 0xff;
    GPIOPinTypeGPIOOutput (beperer_port);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
    GPIOModeSet (GPIO_PORTL_base) GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5、GPIO_DIR_MODE_OUT);
    GPIODirModeSet (GPIO_Porte _BASE、GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5
    
    
    
    、GPIO_PIN_4、GPIO_PIN_4)
    
    | GPIO_PIN_PIN_4、GPIO_PIN_4、GPIO_PIN_4、GPIO_PIN_4、GPIO_PIN_PIN_4 | GPIO_PIN_5、GPIO_PIN_4、GPIO_PIN_PIN_4、GPIO_PIN_PIN_4 (GPIO_PIN_4引脚_4、GPIO_PIN_GPIO_PIN_GPIO_PIN_4、GPIO_PIN_4、GPIO_PIN_GPIO_PIN_GPIO_PIN_GPIO_PIN_5、GPIO_PIN_4、GPIO_PIN_GPIO_PIN_GPIO_PIN_4)| GPIO_PIN_GPIO_PIN_PIN_GPIO_PIN_PIN_4、GPIO_PIN_GPIO_PIN_GPIO_PIN_4引脚_GPIO_PIN_GPIO_PIN_GPIO_PIN_4
    
    GPIOPinConfigure (GPIO_PL2_PHB0);
    GPIOPinTypeQEI (GPIO_PORTL_BASE、GPIO_PIN_1 | GPIO_PIN_2);
    GPIOPinTypeGPIOInput (GPIO_Porte _BASE、GPIO_PIN_5);
    SysCtlPeripheralEnable (SYSCTL_Periph_QEI0);
    QEIEnable (QEI0_BASE);
    QEIConfigure (QEI0_BASE、QEI_CONFIG_CAPTURE_A | QEI_CONFIG_QUIVATURE |
    QEI_CONFIG_SWAP | QEI_CONFIG_FILTEN | 0x000F0000、QEIP0
    = QEIP0
    、QE000_BASE (QEIP0);QEIP0 = QEIP0 (QEIP0) QEI_VELDIV_16、2000);
    QEIVelocityEnable (QEI0_BASE);
    
    SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOD);
    GPIOPinTypeGPIOOutput (GPIO_PORTD_base、 GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
    GPIOPINTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_6 | GPIO_PIN_5);
    
    SysPeripheralEnable (SYSCTL_Periph_SSI0);SysCtlPeripheralCtl(
    SYSCBLE_PERIPH);GPIOPA_Enable
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
    GPIOPinConfigure (GPIO_PA2_SSI0CLK);
    GPIOPinConfigure (GPIO_PA3_SSI0FSS);
    GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
    GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);
    GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 |
    GPIO_PIN_2);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    GPIOPinConfigure (GPIO_PA0_U0RX);
    GPIOPinConfigure (GPIO_PA1_U0TX);
    GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
    
    

    2) 2)我正在使用自定义缓冲器进行 TX 和 RX

    3) 3)和4)我将在明天或星期一到达我的工作地点时尝试一下。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oleg、

    在您发布的内容中、您的原理图中没有显示 USB 引脚的任何初始化。 您能否在代码上验证您是否正确配置了 USB GPIO?

    另外一个有用的检查是验证 SysCtlClockFreqSet 函数(保存在 Clk 变量中)的结果是为了确保系统时钟以120MHz 的频率运行。 从您的第一个帖子开始、您的固件的其余部分似乎正常工作、对吧? 如果是这样、至少应排除16MHz 晶体的启动问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我向代码添加了 GPIO 初始化:

    SysCtlPeripheralEnable (SYSCTL_Periph_USB0);
    HWREG (GPIO_PORTD_BASE + GPIO_O_LOCK)= GPIO_LOCK_KEY;
    HWREG (GPIO_PORTD_BASE + GPIO_CR)= 0xff;
    GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
    GPIOPinTypeUSBAnalog (GPIO_PORTL_BASE、GPIO_PIN_6 | GPIO_PIN_7);
    SysCtlVCOGet (SYSCTL_XTAL_16MHz、&ui32PLLRate);
    USBStackModeSet (0、eUSBModeDevice、0);
    USBDCDFeatureSet (0、USBLIB_Feature_CPUCLK、&Clk);
    USBDCDFeatureSet (0、USBLIB_Feature_USBPLL、 ui32PLLRate);
    pvDevice = USBDCDCInit (0、&g_sCDCDevice);
    

    现在、器件开始连接到 Windows、但它显示为"未知器件"、即使是默认的 VID/PID 对也是如此:

    //
    ////已由 USB-IF 分配给您的供应商 ID。
    //
    0x1cbe、//0x8F0F、//临时
    //
    ///您为此设备分配的产品 ID。
    //
    0x0002、//0x100、
    

    设备管理器显示"此设备因报告故障而停止"(我翻译了俄文消息、因此翻译可能不准确)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oleg、

    很高兴听到我们正在取得一些积极进展! 您是否已经尝试为 Windows 识别的新器件安装 TivaWare 驱动程序?

    现在、它听起来像是从您的电路板传递到 PC 的内容、但与 Windows 没有网格化。 因此、我的怀疑要么是驱动程序、要么是应用程序发送的描述符。 看看从 LaunchPad 示例到描述符端所做的操作是否还有其他可能的变化。 此外、如果您可以在 LaunchPad 板上使用相同的 USB 过程并查看该器件是否被识别、这也会有所帮助。

    此外、如果您使用任何中断、则应验证 STARTUP_CCS.c 文件是否已正确配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph!

    现在、看起来 Windows 没有从器件接收到任何正确的 VID/PID。 让我尝试使用 Linux 计算机获取日志消息。 我将在下一条消息中发布结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    8月17日11:54:44 Linux-5n5i.SuSE 内核:USB 3-1.2:设备描述符读取/64、错误-32
    8月17 11:54:44 Linux-5n5i.SuSE 内核:USB 3-1.2:设备描述符读取/64、错误-32
    8月17日11:54:44 Linux-5n5i.SuSE 内核:USB 3-1.2:完整版 USB 3-16:5i:USB 6-n1
    :5i 设备描述符 read/64、错误-32
    Aug17 11:54:44 linux-5n5i.SuSE 内核:USB 3-1.2:设备描述符 read/64、错误-32
    Aug17 11:54:44 linux-5n5i.SuSE 内核:USB 3-1.2:新的全速 USB 设备编号7、使用 EHI-PCI
    8月17 11:54:45 linux-5i.SuSE 内核:n5i: 器件不接受地址7、错误-32
    8月17 11:54:45 linux-5n5i.SuSE 内核:USB 3-1.2:使用 EHI-PCI
    的新全速 USB 器件编号8 8 8 8 8 8月17 11:54:45 linux-5n5i.SuSE 内核:USB 3-1.2:器件不接受地址8、错误-32
    8月17 11:54:45 linux-5n5i.SuSE 内核:n5i: 无法枚举 USB 设备
    8月17日11:55:43 linux-5n5i.SuSE 内核:USB 3-1.1.4:使用 EHI-PCI
    8 17 8月11:55:43 linux-5n5i.SuSE 内核:USB 3-1.1.4:设备描述符 read/64、错误-32
    Aug17 11:55:44 linux-5n5i.SuSE
    内核:5i.64:Linux 设备描述符 USB 3-1.1.4:使用 EHI-PCI
    8月17日11:55:44 Linux-5n5i.SuSE 内核:USB 3-1.1.4:设备描述符读取/64、错误-32
    8月17 11:55:44 Linux-5n5i.SuSE 内核:USB 3-1.1.4:设备描述符读取/64、错误-32 8
    月17:Linux -55:n5i.11:Linux 内核:n3~4:Linux n5i 使用 EHI-PCI
    的新低速 USB 设备编号11 8月17日11:55:45 Linux-5n5i.SuSE 内核:USB 3-1.1.4:设备不接受地址11、错误- 32
    8
    月17日11:55:45 linux-5n5i.SuSE 内核:USB 3-1.1.4:使用 EHI-PCI -5n1.1:11的新低速 USB 设备编号12:Linux n5i-5i4:Linux 内核 设备不接受地址12、错误-32
    Aug17 11:55:45 linux-5n5i.SuSE 内核:USB 3-1.1-Port4:无法枚举 USB 设备
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Oleg、

    我不使用 Linux、因此对我来说没有意义、很遗憾、很抱歉。 此外、我不相信我们的 USB 驱动程序是为 Linux 设置的。

    您是否已验证 USB 应用程序是否正常工作并按预期在 LaunchPad 等 TI 评估板上进行枚举? 现在、如果您使用的是最新的 TM4C Windows 驱动程序、这似乎与应用相关。 我想了解此应用是否以前经过了测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    当然、Linux 几乎支持任何 USB CDC 器件。 此日志告诉我们、USB 器件在很早的请求中报告错误、因此甚至无法向主机提供 VID/PID。

    遗憾的是、我们没有任何评估板。

    总之、问题更深:要设置驱动程序、操作系统应知道器件的 VID/PID、并且无法将其全部接收。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Oleg、

    听起来应用程序设置不正确。 我将分享一个 CDC 器件示例、以便您参考该器件并将您的设置和 USB 描述符设置等与之进行比较。

    您需要确保 USB_structs 文件镜像 CDC 示例以开始。 您可以在初始示例开始工作后修改它们、但现在使用 TI VID/PID 和所有其他信息开始使用。

    此示例适用于 EK-TM4C1294XL LaunchPad、并已针对 Windows 7和 Windows 10进行了测试。 在设备管理器中显示端口后、您需要安装最新的 USB 驱动程序(在您执行此操作之前、它不会正确枚举)。

    示例项目: e2e.ti.com/.../usb_5F00_dev_5F00_cdcserial.zip