阅读:968回复:4
当PC发IN token 我要怎漾才能给pc data??(20分喔)
我是用89c52+pdiusbd12自己做板子的
当收到pc给的setup时: 我的程序是 1.read interrupt register(commond F4h)读出的值为01h 2.select endpoint(commond 00h)读出的值为01h 3.read last transaction status register(commond 40h)读出的值为21h 4.read buffer(commond F0h),有读出host送的setup data 可是接下莱的事我就不知道要怎漾才能把pc要的IN data给pc 请帮我看哪里错了 5.acknowledge setup(commond F1h) 6.clear buffer(commond F2h) 7.收到interrupt read interrupt register(commond F4h)读出的值为02h 8.select endpoint(commond 01h)读出的值为00h 9.read lasdt transaction status register(commond 41h)读出的值为92h 10.select ednpoint(commond 01h) 11.write buffer(commond F0h)将我要给pc的值写入 12.validata buffer(commond FAh) 之後应该pc发IN token之後就可以收到才对啊?? 可是我发现pc仍是一直只收到nak....到底要怎漾他才能收到我给它的data呢?? 如能解答困惑感激不尽..... [编辑 - 1/12/04 by yjf7777] |
|
沙发#
发布于:2004-01-13 08:15
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2004-01-13 08:39
如果你没有使用DMA,那么你写入Buffer数据应该遵循:
选择端点 等待端点空 写入“数据长度”(1个字节) 写入“0”(1个字节) 写入你的数据(“数据长度”个字节) 端点有效 这是D12要求的格式。 |
|
|
地板#
发布于:2004-01-13 10:05
选择端点时因为我是控制型的IN,所以在d12里面的endpoint index
|
|
地下室#
发布于:2004-01-14 10:28
ok了.....
原莱acknowledge setup(F1h)要set endpoint(01h)之後才能冻作 我以为在之前收到setup 时(endpoint 00H)就要下acknowledge了 结果造成後面的validate buffer不能冻.... |
|