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