jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1977回复:11

usb固件程序问题。新手求助

楼主#
更多 发布于:2003-07-30 00:43
大家好,我很遗憾现在才找到这里来,如果早发现,我不会走了这么多的弯路。请教各位高手。我的问题如下:
我用ti5402+d12做的usb通信的数据采集,别的我基本做好了,但是usb我实在新手,花了3周时间看文档和资料,还是不太明白,我买了周立功的开发板,由于5402对一些位操作不接受,而所带的c51例程很多都是包含位操作,我只好用汇编来移植固件程序,我也知道这是一种很笨的方法。现在我仅仅能实现soft connect ,然后计算机发现我的设备。(顺便问一下,计算机能不能用周立功的开发板所带的驱动程序),产生中断,我读中断寄存器的值,有时是c0,有时是00,并且中断总是低有效了,不会恢复到高电平。如果我按照周立功的例程所做的顺序先读chip_id,总是读到1012或者0000。
希望大家能帮帮我这个新手。如果解决了,我会把结果告诉大家。谢谢。
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-01 21:16
现在我的程序就在这里就不行了。
port4001=0xf3;   connect usb
port4000=0x16;
port4000=0x05;
频率改为8M正确。
产生中断14脚变低
然后
port4001=0xf4;
i=port4000;
j=port4000;
i+=(j<<8);
这时候,我读到的经常是00或者c0,按理说,14脚会变高吗?我的中断管脚还是为低。请帮忙看看。
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-01 21:08
自己顶一下。会不会usb芯片内部坏了一部分啊。我现在还是没做出来。郁闷



应该不会,最可能的就是程序的问题。
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-01 21:04
自己顶一下。会不会usb芯片内部坏了一部分啊。我现在还是没做出来。郁闷
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-31 15:52
我用工具看到开发板接上时就是这些数据了,但是我用我的板0接上时却一个都没有,就是说第一次的中断rst后,就没有下文了。为什么啊
usb_anywhere
驱动小牛
驱动小牛
  • 注册日期2003-07-29
  • 最后登录2005-11-22
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-30 16:27
bushound察看这是正确的值
Dev   - Device ID
  Time  - Elapsed time since the start of the previous Phase
  Phase - ADDR= 1394 transfer address  LOCK= 1394 lock transaction
          CDB = Command block          NSTS= NT status
          CTL = USB control packet     RSET= bus reset
          DI  = Data In                RSTS= I/O Request Status
          DO  = Data Out               SNS = SCSI Sense Data
          IDE = IDE task file command  SSTS= SCSI Request Block Status
          ISOC= Isochronous Transfer   USTS= USB status

  (14) BulkUsb.Sys USB Bulk

Dev  Phase  Data                                                   Info              Time   Cmd.Phase.Ofs    
---  -----  -----------------------------------------------------  ----------------  -----  ------------------
            1.1.80      
 14  CTL    80 06 00 01 - 00 00 12 00                              GET DESCRIPTR     2.6mn         2.1.0        
 14  DI     12 01 01 01 - dc 00 00 08 - 71 04 33 02 - 13 02 00 00  ........q.3.....  8.5ms         2.2.0        
            00 01                                                  ..                              2.2.16      
 14  CTL    80 06 00 02 - 00 00 09 02                              GET DESCRIPTR      73us         3.1.0        
 14  DI     09 02 20 00 - 01 01 00 40 - 00 09 04 00 - 00 02 08 06  .. ....@........   12ms         3.2.0        
            50 00 07 05 - 02 02 40 00 - 00 07 05 82 - 02 40 00 00  P.....@......@..                3.2.16      
 14  CTL    00 09 01 00 - 00 00 00 00                              SET CONFIG         59us  
驱网是你们的,也是我们的,归根结底还是大家的!
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-30 15:50
十分感谢朋友帮忙,你给的东西对我有用,但是,我手头也有,关键是这些代码在5402中没法编译通过。我不知道怎么修改为dsp的c,所以用汇编来做了。你写的这些就是关键地方。我不知道怎么解决。不过我想给点分你,怎么给啊?我真的不会,找不到在哪?很惭愧。我用bushond看了一下数据,数据如下:
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS            0us         1.1.0        
  7  DI     01 01 01 00                ....            35us         1.2.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS           63us         2.1.0        
  7  DI     01 01 01 00                ....            23us         2.2.0        
  7  CTL    23 01 10 00 - 01 00 00 00  CLASS           38us         3.1.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS           88us         4.1.0        
  7  DI     01 01 00 00                ....             6us         4.2.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS          109ms         5.1.0        
  7  DI     01 01 00 00                ....            51us         5.2.0        
  7  CTL    23 03 04 00 - 01 00 00 00  CLASS           37us         6.1.0        
  7  DI     02                         .               90ms         7.1.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS            4us         8.1.0        
  7  DI     00 01 10 00                ....             7us         8.2.0        
  7  CTL    23 01 14 00 - 01 00 00 00  CLASS           20us         9.1.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS           19ms        10.1.0        
  7  DI     00 01 00 00                ....             8us        10.2.0        
  7  USTS   05 00 00 80                no response     80ms        11.1.0        
  7  CTL    a3 00 00 00 - 01 00 04 00  CLASS          510ms        12.1.0  

显示说没响应,应该就是我的描述符没有吧?
很弱的问题。
usb_anywhere
驱动小牛
驱动小牛
  • 注册日期2003-07-29
  • 最后登录2005-11-22
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-30 15:33
我的的d12成功通信,就是难于接收大批数据
你的设备枚举还未成功,假若你的硬件线路正确
设备配置如下,上位机驱动装bulk,应该能搞定

UBYTE code USB_Device_Descriptor[] = {
0x12,// 描述表大小 (18 bytes)
0x01,// 设备描述表类型: Device
0x01, 0x01,// USB spec版本号(BCD码): 1.10
0xdc,// class code (each interface specifies class information) ????
0x00,// device sub-class (must be set to 0 because class code is 0)
0x00,// device protocol (no class specific protocol)
0x08,// 端点0最大包大小: 8
0x71, 0x04,// 厂商ID: Philips
0x33, 0x02,// 产品ID: 0211  GpsPda
0x13, 0x02,// 设备发行号(BCD码): 2.13
0x00,// 厂商信息字符串索引
0x00,// 产品信息字符串索引
0x00,// 设备序列号字符串索引(不支持:0)
0x01// 可能配置数
};

UBYTE code USB_Configuration_Descriptor[] = {
0x09,// 配置描述表长度(9)
0x02// 配置描述表类型:Configuration
0x20,0x00,// 配置描述表及附带表(Interface & Endpoints)总长度: 9+9+7*2=32=0x20 ///shc change
0x01,// 配置个数
0x01,// 配置描述表标识
0x00,// 配置描述表字符串描述表索引
0x40,//0x80, // 配置属性: 总线供电 //////shc change
0x0,//0x32, // 总线供电最大值(*2mA):100mA

0x09,// 接口描述表长度(9)
0x04,// 接口描述表类型
0x00,// 接口号(0)
0x00,// 接口可选设置数目
0x02,//0x04,// 端点数, ///////////////  shc change
0x08,//0xdc,// 类代码: //////////////////////////////
0x06,//0xa0,// 子类码???????????????????????????????????????
0x50,//0xb0,// 协议码,0x080650
0x00,// 接口字符串描述表索引(不支持)

0x07,// 端点描述表长度(7)
0x05,// 端点描述表类型
0x02,// OUT 端点(2)
0x02,// 传输模式(0 控制、1 同步、2 批、3 中断传输)
0x40, 0x00,// 最大包大小(64)
0x0, //0x0A,// 轮寻时间 (10ms)//////////////// shc change

0x07,// 端点描述表长度(7)
0x05,// 端点描述表类型
0x82,// IN 端点(2)
0x02,// 传输模式(0 控制、1 同步、2 批、3 中断传输)
0x40, 0x00,// 最大包大小(64)
0x0 //0x0A,// 轮寻时间 (10ms)
};

//*************************************************************************
// USB Protocol Layer
//*************************************************************************

驱网是你们的,也是我们的,归根结底还是大家的!
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-30 15:12
今天又忙乎一天,还是没什么进展,不过我现在怀疑硬件问题了,因为我的goodlink指示灯从来没亮过.是什么原因呢?顺便问一句,我怎么才能把分给回答者,我是昨天才注册的,不大清楚情况了.
谢谢
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-30 01:33
我看了你说的jinghuiren文章,似乎说的不是一个现象。你所指的是哪一篇?
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-30 00:56
你查查以前jinghuiren的帖子,好像我说过是中断设置的问题!
jchen_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-30
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-30 00:48
不好意思,忘了说一点了,我对d12进行设置是可以成功的,比如改clkout的频率输出可以按需修改。
游客

返回顶部