打印
[串口烧写]

USB接口实验,上位机没有收到任何信息,无显示,想知道是

[复制链接]
1436|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ttxs_2013|  楼主 | 2014-4-3 16:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在学习USB接口实验,按照正确的方法安装USB驱动,仿真,但是上位机窗口却没有显示任何信息,按照厂家提供的数据手册,应该显示的设备信息是:
vendor ID is:0x4b4
product ID is:0x82
Devices ID is:0x0
Maximum Parket Size is:0x40
Devices class is:0x0
Devices sub-class is:0x0
Manufacture string index is:0x1
prodect string index is:0x82
Serial numbei string index is :0x0
Number of configuration is :0x1

同样感到疑惑的是,设备的信息是如何得到?
完整的代码如下:

/*********************************************************************
**        实验目的:实现5509片上usb的配置及与PC机的通信                    **
**        实验说明:运行程序,接上USB线后,提示安装USB安装信息,驱动在本文 **
**  件夹内部。安装后运行DEMO程序测试USB功能。                       **
**********************************************************************/
#include <stdio.h>
#include <csl.h>
#include <csl_irq.h>
#include <csl_pll.h>
#include <csl_usb.h>
#include <csl_chiphal.h>
#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();
}
希望各位指点下,谢谢!

相关帖子

沙发
zhangmangui| | 2014-4-3 23:07 | 只看该作者
记得不清楚了   应该是你通过USB连接到PC机上  然后全速运行代码
去过没安装驱动的话   PC机应该会提示发现新的硬件
安装完驱动之后  应该用USBlib等工具能够检测到DSP端的USB设备

使用特权

评论回复
板凳
ttxs_2013|  楼主 | 2014-4-4 20:08 | 只看该作者
zhangmangui 发表于 2014-4-3 23:07
记得不清楚了   应该是你通过USB连接到PC机上  然后全速运行代码
去过没安装驱动的话   PC机应该会提示发现 ...

我是手动安装的USB驱动,能够检测到DSP板子,是和数据手册中说明的一样。(PS:添加不了图片,不好说明,每次想添加图片,更直观些,但都没反应,不知为什么。。。。。。。。。。。。。:()

使用特权

评论回复
地板
zhangmangui| | 2014-4-4 21:28 | 只看该作者
ttxs_2013 发表于 2014-4-4 20:08
我是手动安装的USB驱动,能够检测到DSP板子,是和数据手册中说明的一样。(PS:添加不了图片,不好说明, ...

点击回复后   选择高级模式  然后以附件的形式上传图片
然后点击插入就可以啦

使用特权

评论回复
5
zhangmangui| | 2014-4-4 21:28 | 只看该作者
ttxs_2013 发表于 2014-4-4 20:08
我是手动安装的USB驱动,能够检测到DSP板子,是和数据手册中说明的一样。(PS:添加不了图片,不好说明, ...

点击回复后   选择高级模式  然后以附件的形式上传图片
然后点击插入就可以啦

使用特权

评论回复
6
ttxs_2013|  楼主 | 2014-4-10 15:37 | 只看该作者
zhangmangui 发表于 2014-4-3 23:07
记得不清楚了   应该是你通过USB连接到PC机上  然后全速运行代码
去过没安装驱动的话   PC机应该会提示发现 ...

不知道什么原因,今天把板子用USB与主机相连,插在电脑上一点反应都没有,扫描硬件也没反应(没有感叹号也没有问号),重启还是不行,会是什么原因?之前是可以连上的,是驱动有问题?如果驱动有问题,那怎么其他的设备都可以连接。还有连接的时候,是不是一定要先连仿真器?

使用特权

评论回复
7
zhangmangui| | 2014-4-10 21:46 | 只看该作者
ttxs_2013 发表于 2014-4-10 15:37
不知道什么原因,今天把板子用USB与主机相连,插在电脑上一点反应都没有,扫描硬件也没反应(没有感叹号 ...

代码跑起来应该才能被电脑识别吧  
打开设备管理器   插拔USB端看看有没有增加或减少设备

使用特权

评论回复
8
ttxs_2013|  楼主 | 2014-4-11 20:19 | 只看该作者
zhangmangui 发表于 2014-4-10 21:46
代码跑起来应该才能被电脑识别吧  
打开设备管理器   插拔USB端看看有没有增加或减少设备 ...

版主,你有没有C5402开发板里例程,同学急用,可以发一份给我吗?谢谢

使用特权

评论回复
9
zhangmangui| | 2014-4-11 22:50 | 只看该作者
ttxs_2013 发表于 2014-4-11 20:19
版主,你有没有C5402开发板里例程,同学急用,可以发一份给我吗?谢谢

找了一圈   没找见   
记得是有的   你到网上收集一下   5402的代码应该是最多的

使用特权

评论回复
10
ttxs_2013|  楼主 | 2014-4-12 14:21 | 只看该作者
zhangmangui 发表于 2014-4-11 22:50
找了一圈   没找见   
记得是有的   你到网上收集一下   5402的代码应该是最多的  ...

额,没有找到。另外想问下,有没有鸿翔5509开发板的一些例程,关于USB,SPI通信的,我这个开发板的例程看不懂,和原理联系不起来,没有思路,想看看其他的代码是怎么写的。
(P.S:之前下过一份版主分享的代码,但是例程是一样的。。。)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

125

帖子

4

粉丝