bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1076回复:9

熟悉USBN9604的请进,我的READ10过不去了。

楼主#
更多 发布于:2004-04-21 15:43
U盘开发,走到READ10,读第一个block的数据(512字节)。但是发送完之后,产生bus reset。使用bus hound和串口调试,现把现象说明如下,请各位帮忙分析。
使用bus hound发现,主机会发三次read10命令,然后会发送mode sense,read capacity等命令,但是我的程序中没有收到后来发送的这些命令。用串口调试发现,在第三次发送read10命令后,读取rxs1寄存器,就是接收状态寄存器,发现toggle位的值是不变的,在我的程序中,rxs1的值一直是0x1f,1表示的toggle位的值。我想知道是什么原因导致接收包的toggle位不发生变化。
LJ1978
驱动小牛
驱动小牛
  • 注册日期2004-02-25
  • 最后登录2011-06-08
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望24点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-21 16:29
那肯定是因为你发送数据长度与要求不符合。或长或短。另外要注意发完数据后再发CSW。
一句话:你的数据发送程序有问题。查查吧。
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-21 16:39
数据长度,我用bus hound看了,没有问题。
在usbn9604中如果数据是传输缓冲区的长度的整数倍的话,在数据传输结束后,要发送一个零长度数据包。以前我是在txfifo1中发送的零长度数据包。看了别人的程序,好像这样是错的。改成在txfifo0中发送(就是endpoint0)中发送,好像,结果是正确的了。
现在的问题是,在read10后,主机发送的toggle位总是一样的,正确的应该是0,1交替才对啊?
Cliveliu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-21 17:38
toggle位0,1交替是有你固件控制的呀,你看看那个TXEN3_PID的宏定义就清楚了。
Cliveliu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-21 17:40
那肯定是因为你发送数据长度与要求不符合。或长或短。另外要注意发完数据后再发CSW。
一句话:你的数据发送程序有问题。查查吧。


LJ1978兄
也是用的USBN9603?我的USBN9603的PC驱动遇到了一些问题,想请教你一下。
Cliveliu
驱动牛犊
驱动牛犊
  • 注册日期2004-04-19
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-21 17:47
bbiliu兄:
    你是自己做的板,还是购买的?
seu_zhufeng
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2006-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-21 22:24
怎么又是read10的问题。
seu_zhufeng
驱动牛犊
驱动牛犊
  • 注册日期2004-01-02
  • 最后登录2006-07-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-21 22:27
数据长度,我用bus hound看了,没有问题。
在usbn9604中如果数据是传输缓冲区的长度的整数倍的话,在数据传输结束后,要发送一个零长度数据包。以前我是在txfifo1中发送的零长度数据包。看了别人的程序,好像这样是错的。改成在txfifo0中发送(就是endpoint0)中发送,好像,结果是正确的了。
现在的问题是,在read10后,主机发送的toggle位总是一样的,正确的应该是0,1交替才对啊?



好像我的usb也有这样的问题,在硬件提供商给的代码中有这样的情况,如果是最后剩下的数据正好是包size,他会减掉几个,留几个下次发,够变态的。

但是我没有这么做,512自己的read10也过去了,真是ft的一踏弧度,疯了。
bbiliu
驱动牛犊
驱动牛犊
  • 注册日期2004-02-20
  • 最后登录2005-01-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-22 08:56
我的read10好像过去了。原来在usbn9603下规定如果要传输的数据长
是传输缓冲的整数倍,那么在发送完后要发送一个0长度数据包。
可是对于 bulk only传输的endpoint1(tx通道),好像不用发送0长度数据包,反而会出错。哪位也遇到这种情况,确认一下。

liumda
驱动小牛
驱动小牛
  • 注册日期2002-01-23
  • 最后登录2012-07-16
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-04-22 08:56
各位老大:

谁有9604的PC驱动呀?我的ARM+9603的速度太慢了,我不知道是不是驱动程序的缘故,请各位DX指点一下好吗?!
You Happy,So I Happy!
游客

返回顶部