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.

[参考译文] CCS/TMS320F28069M:使用 USB_host_msc.c 示例代码时出现问题。

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/691939/ccs-tms320f28069m-issue-working-with-usb_host_msc-c-example-code

器件型号:TMS320F28069M

工具/软件:Code Composer Studio

尊敬的所有人:

我尝试将 USB 与 C2000微控制器连接,但 SysCtrlInit()     函数中的示例代码 USB_host_msc.c 在 while 循环处停止。

功能如下:

void SysCtrlInit (空)

EALLOW;
//禁用看门狗
SysCtrlRegs.WDCR = 0x68;

//设置时钟
//20MHz ->PLL->80MHz->C28
//->PLL2->120MHz->USB
SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1;
SysCtrlRegs.CLKCTL.bit.XTALSCOFF = 0;
SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;

while (SysCtrlRegs.PLLSTS.bit.MCLKSTS);////////////////////////////////////////////////////////////////////////// 它在这里停止。
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;///4
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLCR.bit.DIV = 0xA;

while (!SysCtrlRegs.PLLSTS.bit.PLLLOCKS);
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 2;

SysCtrlRegs.PLL2CTL.bit.PLL2CLKSRCSEL = 2;
 SysCtrlRegs.PLL2CTL.bit.PLL2EN = 1;
 SysCtrlRegs.PLL2MULT.bit.PLL2MULT = 6;
 while (!SysCtrlRegs.PLL2STS.bit.PLL2LOCKS);

//启用 USB 时钟
SysCtrlRegs.PCLKCR3.bit.USB0ENCLK = 1;
//启用 PHY
GpioCtrlRegs.GPACTRL2.bit.USB0IOEN = 1;

EDIS;

任何人都请提供帮助、

此致、

Nayan Khulbe。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它正在检测缺少时钟。 您可以尝试使用 PLLSTS.MCLKCLR 位将其清除、重试选择您的时钟源、然后再次检查 MCLKSTS 位以查看时钟是否仍然丢失。

    您使用的是什么板? TI 电路板(LaunchPad? controlCARDTM) 还是定制板?

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

    感谢您的回复、我使用的是 C2000 piccolo launchpad。

    此致、
    NAYan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供更多信息。 你是否尝试过我的建议?

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

    我们是否需要外部振荡器进行 USB 操作? 因为如果我生成

    SysCtrlRegs.CLKCTL.bit.XCLKINOFF=0;
    SysCtrlRegs.CLKCTL.bit.XTALSCOFF = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 0;

    而不是:

    SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1;
    SysCtrlRegs.CLKCTL.bit.XTALSCOFF = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;

    它通过 while 环路。



    此致、

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

    您希望我执行以下操作:

    void SysCtrlInit (空)


    EALLOW;
    //禁用看门狗
    SysCtrlRegs.WDCR = 0x68;

    //设置时钟
    //20MHz ->PLL->80MHz->C28
    // ->PLL2->120MHz->USB
    SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1;
    SysCtrlRegs.CLKCTL.bit.XTALSCOFF = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;

    while (SysCtrlRegs.PLLSTS.bit.MCLKSTS){
    SysCtrlRegs.PLLSTS.bit.MCLKCLR = 1;////////////////////////////////////////////////////////////// 正如您所说的
    SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1;
    SysCtrlRegs.CLKCTL.bit.XTALSCOFF = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
    SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;


    // SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
    SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;///4
    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
    SysCtrlRegs.PLLCR.bit.DIV = 4;

    while (!SysCtrlRegs.PLLSTS.bit.PLLLOCKS);
    SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
    SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;

    SysCtrlRegs.PLL2CTL.bit.PLL2CLKSRCSEL = 0;
    SysCtrlRegs.PLL2CTL.bit.PLL2EN = 1;
    SysCtrlRegs.PLL2MULT.bit.PLL2MULT = 6;
    while (!SysCtrlRegs.PLL2STS.bit.PLL2LOCKS);

    //启用 USB 时钟
    SysCtrlRegs.PCLKCR3.bit.USB0ENCLK = 1;
    //启用 PHY
    GpioCtrlRegs.GPACTRL2.bit.USB0IOEN = 1;

    EDIS;


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

    很抱歉、我的 launchpad 没有外部振荡器、这就是程序不会从 while 循环中退出的原因。

    我还有一个问题:
    我们真的需要一个用于 USB 的外部振荡器。 内部振荡器不工作。

    此致、
    NAYan。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、根据数据表、INTOSC1 (可为 PLL2选择的唯一内部源)不能用于 USB、因为它不符合精度要求。 您需要提供外部资源。

    惠特尼