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.

PROCESSOR-SDK-OMAPL138: PROCESSOR-SDK-OMAPL138 在调USB的例子(USB_DevMsc_lcdkOMAPL138_armExampleProject)时当USB插入PC电脑时总是提示无法别的USB设备,在设备管理器查看是未知USB设备(设备描述符请求失败)

Part Number: PROCESSOR-SDK-OMAPL138
Other Parts Discussed in Thread: OMAP-L132,

TI的专家:

    你好!

  在OMAPL138(不过我们的板子用的是OMAP-L132) 中调试USB例子(USB_DevMsc_lcdkOMAPL138_armExampleProject)程序时,老是提示无法别的USB设备,在设备管理器查看是未知USB设备(设备描述符请求失败)

开发环境说明:

  CCS: Version: 7.4.0.00015 

ARM  Compiler version: TI v16.9.3.LTS

SYS/BIOS: 6.52.0.12

XDCtools:3.50.3.33_core

PROCESSOR-SDK-OMAPL138: processor_sdk_rtos_omapl138_4_03_00_05

omapl138 PDK:1.0.4

由于我们的板了接的是19.2Mhz的晶振,所以在初始化USB的时候有如下的修改:

将USB的输入时钟由24Mhz改成了19.2Mhz

将之前的 usbphycfg |= (USBPHY_REFFREQ_24MHZ) | USBPHY_VBDTCTEN;  改成了usbphycfg |= (USBPHY_REFFREQ_19P2MHZ) | USBPHY_VBDTCTEN;

修改代码如下:

#define USBPHY_REFFREQ_12MHZ (1 << 0)

#define USBPHY_REFFREQ_24MHZ (2 << 0)

#define USBPHY_REFFREQ_48MHZ (3 << 0)

#define USBPHY_REFFREQ_19P2MHZ (4 << 0)

void UsbPhyOn(uint32_t uiPHYConfigRegAddr)
{
uint32_t usbphycfg = 0;
uint32_t i;

usbphycfg = HWREG(uiPHYConfigRegAddr);

usbphycfg |= (USBPHY_RESET);
HWREG(uiPHYConfigRegAddr) = usbphycfg;

for(i=0; i<50; i++);
usbphycfg &= 0xFFFF7FFF;
HWREG(uiPHYConfigRegAddr) = usbphycfg;

usbphycfg &= 0xFFFF9FFF;
// usbphycfg |= (USBPHY_FORCE_DEVICE); // 强制设成设备模式

HWREG(uiPHYConfigRegAddr) = usbphycfg;


usbphycfg &= ~(USBPHY_PHY_PWRDN | USBPHY_OTG_PWRDN);
usbphycfg |= (USBPHY_PHY_PLLON);
// usbphycfg |= (USBPHY_REFFREQ_24MHZ) | USBPHY_VBDTCTEN;
usbphycfg |= (USBPHY_REFFREQ_19P2MHZ) | USBPHY_VBDTCTEN;

HWREG(uiPHYConfigRegAddr) = usbphycfg;

while(! (HWREG(uiPHYConfigRegAddr) & USBPHY_CLKGD));

consolePrintf("uiPHYConfigRegAddr:0x%08x \r\n",HWREG(uiPHYConfigRegAddr));
}

调式程序的打印信息:

RTOS USB Dev MSC example!!

uiPHYConfigRegAddr:0x00020954


uiPHYConfigRegAddr:0x00020954


Done configuring USB and its interrupt. Example is ready!

附上报错图片:

我又怀疑是不是下载下来的sdk版本不对引起的,后面我下载了最新的 processor_sdk_rtos_omapl138_6_03_00_106 用这个版本生成了例子程序,调式USB还是一样的效果!

 麻烦各位专家帮忙解答一下,实在不知如何下手了!或者还有什么配置信息没打开和注意的地方

  • 请问手上有开发板吗?其它电脑有没有测试过,目前不确定是否是软件问题导致的。

  • 手上没有开发板,在好几台电脑上测过结果是一样的。

    不过我调试的的时候,想看一下有没有跑到USB的中断里去,所以在中断里加打印输出发现只输出了一部份就死机了,但是不加打印又看不出是不是真的死机了。

    请问一下你们有没有在中断里加上打印调试过?

    有的时候还会打出如下打印,有时候又没有,如果在中断里去掉打印是不会打如下信息的!

    xdc.runtime.Error.raise: terminating execution

    好像是软件的问题,但又说不出来什么问题。

    现在不知道怎么调试了,没有思路! 感觉不像是硬件问题,USB作设备端用就4根线也对过开发板的usb原理图没太大区别。

    不过我们用的是OMAP-L132,CPU频率是192MHz ,晶振是19.2Mhz