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.

MSP430F5529的自带USB插入电脑无反应

Other Parts Discussed in Thread: MSP430F5529

用MSP430F5529自带的USB功能模块想做跟PC机通信应用,但是,当USB插入电脑时,什么反应都没有,刚开始,当我按下USB BSL按键时,可以在在电脑的设备管理器中的通用串行总线控制线看到有一个unknow device,但现在插进去按下BSL按键什么反应都没有。BSL下载软件业总是显示没有发现设备。后来就先放弃用BSL,写上USB程序,参考了TI的例子,也参考了其他人做的例子,写进去,插入USB,什么反应也没有。

这是什么问题呢?上传了一个USB硬件原理图。

  • 你好:

    首先需要搞清楚,你到底给MCU USB部分开发程序了没有?

    BSL按键按下,windows有提示,说明硬件应该没什么问题。

    再一个,你参考的例子,是哪种USB协议?

    谢谢。

  • 你好,我有写入USB程序的。我参考的例子是TI的CDC的例子。

    框架大概是:

    int main(void)

    {

        WDTCTL = WDTPW + WDTHOLD;    //关闭看门狗
     
        PMMCTL0 = 0xA502;    //系统频率为18MHz,Vcore调为level 2
        SYS_Init();    //自己的硬件、系统初始化
        TIMER1_A0_Init();
        EEPROM_Init(); 


        Init_Clock(); 
        USB_init();
        USB_setEnabledEvents(kUSB_VbusOnEvent + kUSB_VbusOffEvent);

          if (USB_connectionInfo() & kUSB_vbusPresent){
            USB_handleVbusOnEvent();
          }
        
        OLED_Init();

        __enable_interrupt();    //开中断

     

    while(1)

    {

      ...

    //自己的程序。。。

     switch (USB_connectionState())
            {
                case  ST_USB_DISCONNECTED:
                    _NOP();
                    break;

                case  ST_USB_CONNECTED_NO_ENUM:
                    break;

                case  ST_ENUM_ACTIVE:
                    //得到接收数据字节数
                    bytesReceived = cdcReceiveDataInBuffer(dataBuffer, BUFFER_SIZE,
                                                           CDC0_INTFNUM);

                    if (bytesReceived){
                        // 后台发送数据
                        cdcSendDataInBackground(dataBuffer, bytesReceived,
                                                CDC0_INTFNUM, 0);

                        // 数据LCD显示
                        for (i = 0; i < bytesReceived; i++)
                        {
                            ShowStr8X16(40,24,&dataBuffer[i],NORMAL);
                        }
                    }
                   
                    USBCDC_sendData(USBSENDDATA,5,0);    //发送数据
                    break;

                case ST_NOENUM_SUSPENDED:
                    _NOP();
                    break;

                case  ST_ENUM_SUSPENDED:
                    P1OUT |= BIT2;    //LED
                    _NOP();
                    break;

                case ST_ENUM_IN_PROGRESS:
                    _NOP();
                    break;

                case  ST_ERROR:
                    _NOP();
                    break;

                default:;
            }
        }
    }

    大概就是这样。

     

    现在有些问题还没搞清楚,用BSL下载时,按下BSL按键,单片机里面程序为空,电脑也应该会显示设备吧?但是现在插进去,什么反应都没有了,连unknow device也没有显示。

    还有,程序写入单片机后,电脑也没有什么反应。

  • 还有,我也通过了描述符工具来开发,VID是0x2047,PID是0x0300,设置了XT2晶体等。

  • 个人建议,你先把F5529 EVM得原始程序下载进去,看USB在PC上是否正常工作;

    然后再一步一步查软件的问题。

  • 你好,请问下5529的EVM的原始程序在哪下载?(不知道EVM是什么),如果硬件正常,下载进去,USB可以正常运行吗?

  • 你好,如果你已经安装了CCS,那么这个程序在以下路径:

    C:\ti\ccsv5\ccs_base\msp430\msp430ware_1_40_00_26\examples\boards\MSP-EXP430F5529\src

    谢谢。

  • 谢谢你的耐心回答。现在搞定了。HID 和 CDC都连上了。

  • 就剩下BSL没有搞定了。