3070|1

44

帖子

17

TA的资源

一粒金砂(中级)

楼主
 

USB接口实验,上位机未显示任何信息,是什么原因呢? [复制链接]

在学习USB接口实验,按照正确的步骤仿真,但是上位机窗口却没有任何信息显示,如图




按照厂家提供的数据手册,应该显示这样:

原以为是USB线有问题,换了根线,同样是没有任何显示,这是什么原因?
代码如下:

/*********************************************************************
** 实验目的:实现5509片上usb的配置及与PC机的通信                    **
** 实验说明:运行程序,接上USB线后,提示安装USB安装信息,驱动在本文 **
**  件夹内部。安装后运行DEMO程序测试USB功能。                       **
**********************************************************************/

#include
#include
#include
#include
#include
#include
#include "Descriptors.h"
#include "USB_FUNCTION.h"  //USB模块函数的声明都放在该自定义头文件中
#include "Global_Maco.h"

/* The example uses predefined CSL macros and symbolic  */
/* constants to create the correct register settings    */
/* needed to configure the usb.                        */
/* 锁相环的设置 */
PLL_Config  myConfig      = {
  0,    //IAI: the PLL locks using the same process that was underway
                //before the idle mode was entered
  1,    //IOB: If the PLL indicates a break in the phase lock,
                //it switches to its bypass mode and restarts the PLL phase-locking
                //sequence
  40,    //PLL multiply value; multiply 24 times
  2             //Divide by 2 PLL divide value; it can be either PLL divide value
                //(when PLL is enabled), or Bypass-mode divide value
                //(PLL in bypass mode, if PLL multiply value is set to 1)
};
interrupt void USB_ISR();
/* 配置USB时钟频率 */
void USB_initPLL(Uint16 inclk, Uint16 outclk, Uint16 plldiv);
void main(void)
{
  /* Initialize CSL library - This is REQUIRED !!! */
  CSL_init();
  
  /* Temporarily disable all maskable interrupts */
  IRQ_globalDisable();
  
  /* 设置系统的运行速度为144MHz */
     PLL_config(&myConfig);
     
     /* 对USB进行初始化设置 */
     USB_InitConfig(hEpObjArray,EpIn0Event_mask,EpOut0Event_mask);
     
     /* 进入系统死循环 */
     for(;;)
     {
      /* 在该函数里面进行判断是否满足系统设置的默认状态, */
      /* 如果满足就进行相应的处理,否则不进行任何处理  */
      USB_DefaultDeal();
      
      /* 下面为用户扩展的状态,用户也可以在此添加自己的状态处理函数 */
      /* 块传输节点1和4系统保留用来演示功能       */
      if(usbflag == USB_CTRL0_READ)
      {
       usbflag = 0;
      
       /* 用户使用下面的接收函数时,必须使用CtrlDataLen这个系统定义的全局变量, */
       /* 因为从主机传来的数据长度直接保存在该变量里        */
       /* 注意该接收函数的数据缓冲区的第一个字用来存储接收长度的,所以用户在定义*/
       /* 缓冲区长度时为实际数据长度加1          */
      
       //这部分是设计时用作测试用的,用户可以参照使用
          USB_ReceivCtrlData((Uint16 *)&usbbuffer, CtrlDataLen, USB_IOFLAG_SWAP);
         
      }
      
      if(usbflag == USB_BULK3_READ)         
     {
      usbflag = 0;
      // 如果是PC机向块输出节点3传送数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK4_READ)        
     {
      usbflag = 0;
      // 如果是PC机向块输出节点4传送数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK5_READ)        
     {
      usbflag = 0;
      // 如果是PC机向块输出节点5传送数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK6_READ)        
     {
      usbflag = 0;
      // 如果是PC机向块输出节点6传送数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK7_READ)        
     {
      usbflag = 0;
      // 如果是PC机向块输出节点7传送数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_CTRL0_WRITE)
     {
   usbflag = 0;
   
   /* 用户使用下面的发送函数时,必须使用CtrlDataLen这个系统定义的全局变量, */
       /* 因为从主机传来的数据长度直接保存在该变量里,       */
       /* 这样主机欲接收的长度与控制节点In0发送的长度保持一致     */
       /*
       这部分是设计时用作测试用的,用户可以参照使用
       */
   usbbuffer[0] =0x0;
   usbbuffer[1] =0x0301;
   usbbuffer[2] =0x0705;
   usbbuffer[3] =0x0b09;
   usbbuffer[4] =0x0f0d;
      USB_SendCtrlData((Uint16 *)&usbbuffer, CtrlDataLen, USB_IOFLAG_NONE);
        
     }
     
     if(usbflag == USB_BULK3_WRITE)
     {
      usbflag = 0;
      // 如果是PC机向块输入节点3读取数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK4_WRITE)
     {
      usbflag = 0;
      // 如果是PC机向块输入节点4读取数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK5_WRITE)
     {
      usbflag = 0;
      // 如果是PC机向块输入节点5读取数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK6_WRITE)
     {
      usbflag = 0;
      // 如果是PC机向块输入节点6读取数据,请用户添加自己的处理代码
     }
     
     if(usbflag == USB_BULK7_WRITE)
     {
      usbflag = 0;
      // 如果是PC机向块输入节点7读取数据,请用户添加自己的处理代码
     }
     }
}

/* USB中断函数 */
interrupt void USB_ISR()
{
/* 调用USB事件的分配器 */
USB_evDispatch();
}
同样不明白,输出的设备信息是如何来的?

最新回复

还没遇到过,楼主可以换个usb口试试。  详情 回复 发表于 2014-4-19 14:03
点赞 关注
 

回复
举报

63

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
还没遇到过,楼主可以换个usb口试试。
个人签名怀念蓝翔学挖掘机的日子!!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表