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.
工具与软件:
您好!
我的客户目前正在其定制板上通过 USB Type-C 连接器使用 TMS320F28384S 对 USB CDC 通信进行评估。
他们使用的是 C2000Ware v5.04中包含的 usb_ex1_dev_serial.c 示例代码。
・C2000Ware_5_04_00_00\driverlib\f2838x\examples\c28x\usb\usb_ex1_dev_serial.c
但在测试过程中、仅发生 USB 挂起中断、PC 无法识别器件。
在示例代码中、我们发现几个重要设置都添加了注释、如下所示。
我们想与 TI 工程师确认是否必须启用这些设置才能在 F28384S 上正常运行 USB CDC、以及是否需要任何其他配置。
【示例代码中注释掉的部分】
// 1. USB 时钟配置
SYSCTL_setAuxClock (DEVICE_AUXSETCLOCK_CFG_USB);
// 2. USB CDC 器件初始化
USBDCDCInit (0、&g_sCDCDevice);
// 3. USB 中断寄存
INTERRUPT_REGISTER (INT_USBA、&INT_myUSB0_ISR);
// 4. DP/DM 引脚 MUX 配置(如果未包含在 Device_initGPIO 中)
GPIO_setPinConfig (GPIO_42_USB0DM);
GPIO_setPinConfig (GPIO_43_USB0DP);
请您澄清以下几点:
谢谢!
Conor
设备管理器中显示为"Unknown USB Device"(未知 USB 设备)。
尊敬的 C2000支持团队:
我们正在匆忙调查此事、因此我们希望得到迅速的答复。
谢谢!
Conor
Conor、
未知器件表示 USB 枚举本身失败、因此主机和器件之间没有进一步的通信。
注释掉的代码现在由 SysConfig 生成、因此不需要。
几乎没有要检查的事项是 GPIO 是否进行了严格配置、以及辅助时钟是否配置为60MHz
此致。
Siddharth
尊敬的 Siddharth:
感谢您的答复。
我们想知道在 usb_ex1_dev_serial.c 示例代码中确切实现或修改以下两点的位置:
μ■GPIO 引脚配置
他们应在示例中添加代码、以便正确配置 GPIO42 (USB0DM)和 GPIO43 (USB0DP)以实现 USB 功能?
μ■辅助时钟(USB 时钟)配置
他们应该在何处添加或调整代码来设置 USB 操作所需的60 MHz 辅助时钟?
谢谢!
Conor
Conor
您是否使用 SysConfig 生成的代码? 如果是这样,您可以查看 Board_init ()函数来查看 GPIO 配置。
您也可以在 usb_hal.c 文件中查看 USBGPIOEnable()函数。
详细信息。 您可以采用 usb_hal.h 文件中的宏。
DEVICE_AUXSETCLOCK_CONFIG_USB。
这是在假设 XTAL 频率为20MHz 或25MHz 时配置的。
由于这是定制电路板、因此我不确定使用的是哪种 XTAL。
如果需要、需要在代码中添加 SysCtl_setAuxClock (DEVICE_AUXSETCLOCK_CONFIG_USB)。
此致
Siddharth
尊敬的 Siddharth:
我已确认 IO 设置已配置、没有任何问题。
此外、如果使用外部16MHz 晶体、以下时钟设置是否正确?
ーーーーーーーーーーーーーーーーー μ A
#define DEVICE_AUXSETCLOCK_CONFIG_USB (SYSCTL_AUXPLL_OSCSRC_XTAL |\
SYSCTL_AUXPLL_IMULT (30)|\
SYSCTL_REFDIV (2U)|\
SYSCTL_ODIV (2U)|\
SYSCTL_AUXPLL_DIV_2 |\
SYSCTL_AUXPLL_ENABLE |\
SYSCTL_DCC_BASE_0)
ーーーーーーーーーーーーーーーーー μ A
设置上述内容后、如果我将 SysCtl_setAuxClock (DEVICE_AUXSETCLOCK_CONFIG_USB)添加到代码中、时钟设置是否会完成?
谢谢!
Conor
以上设置基于以下计算:
AUXPLLCLK =(XTAL)×IMULT÷(REFDIV×ODIV×AUXPLLDIV)
= 16 MHz×IMULT÷(REFDIV×ODIV×AUXPLLDIV)
=16 × 30÷(2 × 2 × 2)= 480÷8 = 60 MHz
是的、这看起来没有问题。
此致
Siddharth