阅读:1885回复:14
d12中如何发18个描述符最后两个描述符?(20分)
我的firmware已经设置了地址,但是叫我发18个描述符是,我只能发16个,而剩下的两个如何发?
我的endpoint0 in 没有中断。我该如何办? |
|
沙发#
发布于:2003-12-17 09:16
第一个SETUP包,只发16个就可以,,,以后的SETUP,先发16个,下次IN中断来了再发(看书上这么说的),,,
不过我跟你有一个同样的问题――没有IN中断,,,郁闷! |
|
板凳#
发布于:2003-12-17 09:20
对啊,就是没有in中断来,以前我的51+d12有in 中断来,
可是我现在用DSP+d12就没有in 中断来了。 |
|
地板#
发布于:2003-12-17 09:21
其实第一个SETUP包只发8个就够路了,host只对8个感兴趣。
|
|
地下室#
发布于:2003-12-17 09:22
没有中断你就直接写缓冲,等host自己去取。
|
|
5楼#
发布于:2003-12-17 09:31
这样的话就会出现,第一IN 包(host)取的是第二次写的描述符,
因为我不确切(host)的第一个in包和第二in包的时间是多少,还有, endpoint0 in中断只是d12判断第一in包来取描述符时给的中断,二非(host)给出的。我也试过你的方法,但结果有两个: 1只取到最后两个描述符 2 buffer overun 。 |
|
6楼#
发布于:2003-12-17 09:36
其实第一个SETUP包只发8个就够路了,host只对8个感兴趣。 我想我就是这个干的啊,,,在读到第一个SETUP包后,就往端点索引1里面写了16个字节的设备描述符,,,,,,然后就等IN中断,,,,,,该死的IN中断就是没有,,, |
|
7楼#
发布于:2003-12-17 09:41
你可以先确定第一个包已被取走后再写第二个包嘛。我觉得是你的程序没有写好,不应该没有中断的。
|
|
8楼#
发布于:2003-12-17 09:42
[quote]其实第一个SETUP包只发8个就够路了,host只对8个感兴趣。 我想我就是这个干的啊,,,在读到第一个SETUP包后,就往端点索引1里面写了16个字节的设备描述符,,,,,,然后就等IN中断,,,,,,该死的IN中断就是没有,,, [/quote] 第一次只发8个是没有问题的。 |
|
9楼#
发布于:2003-12-17 09:43
我没写两个包啊?
我在读完主机发来的第一个SETUP包后,就把端点索引0的缓冲区清了,还应答了SETUP,然后选择端点索引1,写16个字节,有效缓冲区、、、、、、 这样子会不会有问题? |
|
10楼#
发布于:2003-12-17 09:46
详细参考philips例程,一清二楚
|
|
11楼#
发布于:2003-12-17 10:17
你抓个数据来看看,我估计你的问题是延时问题,因为你的
程序可能是在驱动网下载的,有些地方可能会使你的送描述符 时间太长,结果超过host等待的一定时间。 |
|
12楼#
发布于:2003-12-17 10:43
呵呵,51的程序都是我自己写的,,,汇编,,,
|
|
13楼#
发布于:2003-12-17 13:04
你的应答SETUP包是什么意思?是向D12发送F1应答建立命令吗?对IN和OUT都应答了吗?如果是不应该出现收不到IN中断的现象啊?
|
|
14楼#
发布于:2003-12-17 16:08
对IN和out都应答了,但是还收不要in中断。
不过我现在找到一个方法,就是不用in中断我也可以把数据发出去。 |
|