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.

[参考译文] MSP430F6659:主机中未枚举DEVICE's USB

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/576788/msp430f6659-device-s-usb-not-enumerated-in-host

部件号:MSP430F6659

您好,先生,

我想使用msp430f6659的USB模块。我已经下载 了MSP430USBDevelopersPackage_5_10_00_17并安装 了MSPUSBDescriptionTool-5_00_10_19以及HID演示应用程序。

我使用 上面软件包中的H6_SendDataBackground示例。 使用描述符工具,我根据我的设置生成代码,并将其覆盖到USB_Config文件夹中的文件。

我已经按照slaa457a数据表第14页制作了硬件。 在硬件中,我不在VUSB 引脚上连接任何外部电源,因为我想从VBUS使用它。 我想为微控制器(USB模块除外)使用单独的电源,这是外部3.3V电源,并且它保持打开,不受天气影响,USB是否连接到PC。

我只想将VBUS Spply用于USB模块。

我的XT2晶体为16.384MHZ。

我在示例中没有做任何其他更改。我想使用HID接口

当我将此硬件连接到PC时,它显示未知设备。

请告诉我如何设置USB,使其正常工作。

需要单独配置时钟和端口引脚,或者包含在示例中?

请提及  我必须做的必要更改,以使其正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    必须在USB_config/descriptors.h文件中使用USB_XT_*符号配置时钟。

    (16.384 MHz没有USBPLL_SETCLK_符号;如果可能的话,您必须自己找到正确的UPMB/UPQB值。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    感谢您的回复,

    请在discriptor.h上找到以下代码。

    该代码符合16MHz标准,我已选择了禁用工具软件选择。


    // MCU的MCLK频率,以Hz为单位
    //要运行更高频率,可能需要调整Vcore电压。
    //请参阅您使用的MSP430器件的数据表
    #define USB_PLL_XT 二 //定义PLL使用的XT (1=XT1,2=XT2)
    #define USB_XT_FREQ_VALUE 16.0 //表示由USB_PLL_XT指示的振荡器上的晶体频率
    #define USB_XT_FREQ USBPLL_SETCLK_16_0 //表示由USB_PLL_XT指示的振荡器上的晶体频率
    #define USB_DISABLE_XT_SUSPEND 1. //如果不为零,则USB_SUSPENT()将禁用振荡器
    //由USB_PLL_XT指定;如果为零,则USB_SUSPEND不会指定
    //影响振荡器
    #define USB_DMA_CHAN dma_channel_1 //如果选定的DMA通道不使用任何DMA通道,则设置为0xFF


    请提供硬件连接图,以便我仔细检查。

    根据我的研究,当USB电缆未与PC连接时,D+线路保持高电平,D-最初保持低电平,但在我的硬件中,这种情况并未发生。 在我的情况下,两条线都很低。 是否需要进行任何其他更改才能使设备正常工作?


    我是USB开发领域的新客户,请详细说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    晶体频率是多少? 16 MHz或16.384 MHz?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    非常感谢您的快速回复,

    Crystal是16.384 ,但我选择了16 MHz,因此我将在硬件中用16 MHz替换它,因为在Disccriptor工具中没有16.384 MHz选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Unobatainium"]
    Crystal是16.384 ,但我选择了16 MHz,因此我将在硬件中用16 MHz替换它,因为在Disccriptor工具中没有选择16.384 MHz。

    USB规范将全速总线的容差定义为+/- 0.25 % (2500 ppm)。 它应该可以与您的Crystal一起使用,并使用手动插入的USBPLLDIV值。

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

    感谢您的回复,

    我在H0_SimpleSend示例中找不到应该在哪里进行上述更改。

    请提及我必须更改上述设置的文件名。

    我发现的另一个问题是,当我将USB电缆连接到我的PC时,MCU开始加热。

    我无法理解为什么MCU在加热,因为我根据数据表验证了硬件。

    我已为MCU提供3.3V电压,并使用VBUS电源作为USB模块电源。 我没有从VUSB断开任何电源,只需在Vssb和VUSB之间放置220nF电容器(与V18和VUSB相同),就使其未连接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="Unobatainium"]
    我在H0_SimpleSend示例中找不到应该在哪里进行上述更改。

    请提及我必须更改上述设置的文件名。
    [/引述]


    自行查找。 只需修改行USBPLLDIVB = USBPLLDIVB = 0x0625,或定义自己的常量并在需要时更新代码。

    #define USBPLL_SETCLK_16_384    0x0625 /* USB - 16.384 MHz输入时钟的PLL设置*/

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

    你好
    感谢您的回复

    我在discriptors.h上找到了上面的行,并按照您的上述说明进行了修改。我也发现了MCU的加热问题,因为它是硬件短路之一。 所以这两个问题都解决了

    但主机PC中仍没有枚举我的设备

    有时主机显示“ A USB device has exceeded the power limit of its hub port” (USB设备已超出其集线器端口的功率限制)和“Unknown device”(未知设备)

    VBUS中使用了一个二极管。我应该在那里连接哪一个二极管。 是否有任何特定的部件号?

    请帮助我解决问题...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    肖特基二极管可防止电流从设备流入总线(如果总线已关闭);仅当您有单独的电源时才需要此功能。

    电源限制错误消息表示您的设备使用了太多电流。 因此,可能是电路中的错误(短路)或硬件故障。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    感谢您的回复,

    功率限制错误的问题得到了解决,一旦在主机PC中检测到我的设备,当我打开演示应用程序时,它就变成未知设备。
    在出现相同的未知设备问题后,系统将启动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    感谢您的支持,

    我的设备在主机PC上被枚举并开始工作。
    但有时,当我从HID演示应用程序发送数据时,会显示以下错误和设备断开连接。


    TX-->1124.5678万!
    Rx-->从设备接收缓冲区时出错!
    已断开与设备的连接


    我已通过在UNMI ISR放置断点进行检查,但我认为这不是因为任何NMI重置中断,因为它不会进入UNMI ISR。