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.

[参考译文] TMS320F28384S:有关 USB CDC 示例代码中所需的代码修改的查询

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1485311/tms320f28384s-inquiry-about-required-code-modifications-in-usb-cdc-sample-code

器件型号:TMS320F28384S
主题中讨论的其他器件: C2000WARESysConfig

工具与软件:

您好!

我的客户目前正在其定制板上通过 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);

请您澄清以下几点:

[问题]

  1. 在 F28384S 上使用 USB CDC 时、是否应启用上述所有设置?
  2. 是否有任何其他必要的设置或预防措施需要我们注意?
  3. 关于 F28384S 上的 USB 时钟(60 MHz)设置、是否有任何需要注意的具体点?

谢谢!

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