阅读:1769回复:12
请教一个怪问题(about an2131QC)
我把cypress公司提供的例子bulktest的firmware的ISR_Ep1out修改如下:
void ISR_Ep1out(void) interrupt 0 {int count=10; for (i=0; i < count; i++) //write data to the IN endpoint { IN1BUF【i】 = i; } IN1BC = count; // Arm the IN endpoint OUT1BC = 0; // Arm the OUT to receive the next packet EZUSB_IRQ_CLEAR(); // clear the IRQ OUT07IRQ = bmEP1; } 在开发板上调试时发现,当我先用control panel通过BULK OUT1传输数据时如果传输的字节数小于10(即IN1BC),再用BULK IN1读数据时就会产生read fail。 谢谢! [编辑 - 8/7/02 by liugmx] |
|
沙发#
发布于:2002-08-07 16:03
你向管道里送了10个子节。(实际没有送,只是计数),可是主机读的时候你设置成小于10。一定会出错,可以设大雨、等于10。
|
|
|
板凳#
发布于:2002-08-07 18:11
我把cypress公司提供的例子bulktest的firmware的ISR_Ep1out修改如下: 奇怪 IN1BUF = i;的括号怎么会没了呢? |
|
地板#
发布于:2002-08-07 18:21
应该是有括号的,不知道怎么搞的帖子上显示没了
我重新家了个中文的中括号。 谢谢! |
|
地下室#
发布于:2002-08-07 18:27
control panel上bulk in请求的字节长度是多少?
[编辑 - 8/7/02 by sunkai] |
|
5楼#
发布于:2002-08-07 18:30
bulk in的时候请求的长度是不起作用的
|
|
6楼#
发布于:2002-08-07 18:33
请求不该有个字节长度?
|
|
7楼#
发布于:2002-08-07 18:47
是啊,那个长度和内容是给bulk out时提供的
IN token里面又没有长度字段 |
|
8楼#
发布于:2002-08-07 19:22
的确有的,也就是同一个textbox,in token没有长度如何读得回数据来.
|
|
9楼#
发布于:2002-08-07 22:09
感谢sunkai大侠!
我确实是没有设BULK IN的长度,我一直都以为那个长度没有用,而且以前也没出现什么问题。 |
|
10楼#
发布于:2002-08-08 03:50
感谢sunkai大侠! 客气了.好像有个默认值是64B. |
|
11楼#
发布于:2002-08-08 10:27
的确有的,也就是同一个textbox,in token没有长度如何读得回数据来. 又用开发器作了一下实验,果然如此 但是IN token 确实不包含长度字段啊 我想大概是control-panel自己要求吧 FORMAT OF A TOKEN PACKET: 8bits PID:containing Type&Check fields 7bits ADDR 4bits ENDPOINT:containing a direction bit 5bits CRC |
|
12楼#
发布于:2002-08-11 15:56
你帖的程序和你遇到的问题确实比较奇怪,就好象你执行OUT字节的次数小于10时,你的程序没有运行到下面这一行似的
IN1BC = count; // Arm the IN endpoint 因为只要运行到这一行,在control panel执行IN操作时,都应该能读回数据的.(当然,你读取的字节数必须小于或等于10,否则会出现pending,然后是read fail) |
|
|