TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430F5529 USB模块的问题,诡异…

这几天调试USB模块,发现一个问题总也解决不了,不知道什么原因,就是USB模块初始化并使能后,Host只对其进行了3次复位就挂起了,并没有发送标准请求,单片机的SETUP中断始终没有触发,代码结构大概是这样的:

//主程序

void main()

{

//系统其他模块初始化

…(代码省略)

//USB初始化

  USBKEYPID = USBKEY;

  USBPHYCTL = PUSEL;

  USBPWRCTL = SLDOEN + SLDOAON; //使能LDO

  USBPLLDIVB = USBPLL_SETCLK_8_0; //设置PLL分频因子

  USBKEYPID = 0x9600;

//使能总中断(代码省略)

while(1)

{

  LPM1;

  __no_operation();

}

}

 

//USB中断程序

#pragma VECTOR = USB_UBM_VECTOR

__Interrupt void USB_ISR()

{

  switch(__even_in_range(USBVECINT, 62))

  {

  case USBVECINT_PWR_VBUSOn:       //USB插入后VBUS就绪中断

  USBKEYPID = USBKEY;

  USBPLLCTL = UPCS0 + UPFDEN + UPLLEN;  //使能PLL

  __delay_cycles(16000); //延迟2ms

  USBCNF = USB_EN; //使能USB模块

  USBCNF  |= PUR_EN;//连接上拉电阻,开始枚举

  USBKEYPID = 0x9600;

  break;

  case USBVECINT_SETUP_PACKET_RECEIVED:

  //SETUP包接收中断(代码省略)

  break;

  default:

  break;

  }

)

 

 

代码大体是这样,有些无关的就省略了,问题就是 如果我按照现在的代码运行,Host会对USB模块进行3次复位之后就是1次挂起,然后电脑右下角提示无法识别的USB设备,整个过程始终没有触发SETUP包的接收中断…但是如果我把红色的代码剪切到蓝色代码的上一行,整个枚举就正常了… 谁能帮我看下这个是什么原因…

 

还有一个诡异的问题,就是每当我插入USB口的时候,过载标志位 VUOVLIFG 就会置位,但是我检查了硬件电路,VUSB和V18输出始终都是正常的啊,这个标志位为什么每次插入的时候都会置位呢?实在不解,不过这位置位并不影响枚举,到底怎么回事? 谁知道是什么原因啊,弄了好几天了,都要抓狂了…

John Chen:

楼主是自己写的代码吗?

建议下载TI的USB参考例程:

http://www.ti.com/tool/msp-exp430f5529

里面有完整的硬件driver和软件stack

james yin:

回复 John Chen:

可以看下你的源代码么  我也在弄这个5529的USB模块   也是枚举出现问题了

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430F5529 USB模块的问题,诡异…
分享到: 更多 (0)