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.

[参考译文] 无法写入控制模块寄存器USB0_CTRL OTGVDET_EN位/phy未启用(MUSB作为设备)

Guru**** 2478625 points
Other Parts Discussed in Thread: SYSCONFIG, AM3358

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/569502/unable-to-write-in-control-module-register-usb0_ctrl-otgvdet_en-bit-phy-is-not-enable-musb-as-device

Thread:sysconfigAM3358中讨论的其它部件

我正在使用Linux 3.8。13+

Board BeagleBone Black

正在写入Musb设备驱动器(类型B)

>>>我将在Linux内核中单独编译驱动程序

>>我注释了driver/USB/Kconfig文件#source "drivers/USB/musb/Kconfig"

>>和DRIVER/USB/Makefile #obj-$(config_USB_MUSB_HDRC)   += musb/

#时钟配置/在智能模式下启用时钟    

 寄存器的初始化如下所示

#控制模块寄存器
   CM_Per_USB0_CLKCTRL.MODULEMODE = 0x1;
   轮询至(CM_per_USB0_CLKCTRL.IDLEST ==0);

CM_CLKDCOLDO_DPLL_Per.DPLL_CLKDCOLDO_GATE _CTRL = 1;


   ctrlr.rst = 1;   //这是Mentor核心寄存器位


   #USBSS,模块的软件重置。
   #Write 1=启动软件重置。
   sysconfig.soft_reset= 1;     
   轮询至sysconfig.soft_reset ==0);
   
   ##USB0, 模块的软件重置。
   USB0CTRLR.soft_reset = 1;     
   轮询至(USB0CTRLR.soft_reset == 0);
   
   #USB中断启用
   USB0CTRLR.UINT = 0;
   
   USBMODE0.IDDIG_MUX = 1;
   USBMODE0.IDDIG = 1;  
   DEVCTL.session = 1;
   
   #PHY模块
   USB_CTRL0.cm_Pwrdn = 0;//正常模式
   USB_CTRL0.OTG Pwrdn = 0;
   USB_CTRL0.otgvdet_en = 1;
   USB_CTRL0.otgsessenden = 1;
   
   
   
   #USB0UTMI
   USB0UTMI.FSSE0EXT = 1;
   USB0UTMI.VBUSVLDEXTSEL = 1;
   USB0UTMI.VBUSVLDEXT = 1;
   
   #Mentor核心初始化
   
   INTRUSBE=0XF7;             
   INTRTXE = 0xFFFF;          
   INTRRXE = 0xFFFF;             
   RXMAP = 64;
   TXMAP = 64;
   INDEXD.EPSEL = 0;

 INTCLRR,TX,= 1;
 INTCLRR,RX=1;
 INTCLRR.USB = 1;


   
   
   #Transparent DMA Transfer Setup
   USB0CTRLR.RNDIS = 0;
   USB0TXMODE = 0;
   USB0RXMODE = 0;
      
   #CPPI DMA Scheduler Initialization
   DMA_Sched_CTRL.ENable_FLD = 1;

无法写入控制模块寄存器,中断未生成。

请任何人都能帮我解决这个问题,  

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

    很抱歉再次打扰您,我也需要订购,例如USB初始化
    1. phy
    2.usbss
    3.usb0
    4.核心
    正确吗?
    或者我会更改顺序

    而且我无法写入控制模块寄存器

    读数时,我得到的值为0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Mohammed,
    我们不提供任何有关Linux的支持。 您必须向Linux社区寻求帮助。 您使用的是哪种USB设备?

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

    am3358 musb0我想从Fresh开始,所以我开始测试musb0模块。

    1.枚举后,我得到的是INTRRX中断,而不是INTRTX。

    读取一个设备后,设备将被重置。一段时间后脱机。

    端点配置如下

    USB_EP1_In:-
          REGW16 (AM3358_TXMAXP + 16 *(epno-1),maxpkt);
          varperirxcsr = REGR16 (AM3358_PERI_RXCSR + 16);
          varperirxcsr = varperirxcsr &~Ω(1<0);                         RXPKTRDY = 0
          REGW16 (AM3358_PERI_RXCSR,varperirxcsr);
          varperitxcsr ||(1 <<13)|(1 <<6)|(1 <<3));                                     MODE = 1;CLRDATOG = 1;FLUSHFIFO = 1;
          varperitxcsr &=~(1 <<14)|(1 <<11));                                            ISO =0;FRCDATATOG =0;
          REGW16 (AM3358_PERI_TXCSR,varperitxcsr);

    USB_EP2_OUT:-

             REGW16 (AM3358_RXMAXP + 16 *(epno-1),maxpkt);
          varperitxcsr = REGR16 (AM3358_PERI_TXCSR + 16);
          varperitxcsr = varperitxcsr &~(1<13)|(1<0));                                              模式= 0;TXPKTRDY = 0;
          REGW16 (AM3358_PERI_TXCSR + 16,varperitxcsr);
          REGW16 (AM3358_PERI_RXCSR + 16,((1<4)|(1<7)));                               FLUSHFIFO = 1;CLRDATOG = 1;