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、一切都没有发生。 问题是什么?
谢谢!