阅读:1779回复:7
请教高手关于PDIUSBD12数据传输
第一次做USB产品,我选用了D12做桥接芯片,现在遇到的问题是:
我用端点2进行数据传输时,PC机发送64K的数据块时,我的单片机程序应该怎样控制接收数据,哪位大侠能够给我指点一下,不胜感激! |
|
最新喜欢:![]() |
沙发#
发布于:2003-02-26 09:21
如果你得到通知说要接收n字节的数据,那你就设定一个全局变量,把n赋给它,如果这个n大于64,那你每接收64字节就将这个全局变量减64,下一次就检查它是否还大于64,如果不是接收完这一个数据包后,本次传输就完了。
|
|
板凳#
发布于:2003-02-26 09:25
jinghuiren说得很详细了.
补充一下,\"下一次就检查它是否还大于64\",这个下一次,通常应该在第一次传输结束引起的中断里面,即ep2_TxDone()中断服务例程. |
|
地板#
发布于:2003-02-26 20:44
谢谢两位的回答,我是初学者,对USB很菜,还是有两个问题:
1。我该怎样得到要接收的字节数n. 2.当我收到第一个64字节的数据后,需要一段时间来处理数据,我是不是可以在ep2_rxdone()中先禁止中断,等数据处理完后再允许中断,而且在未收完64Kbytes的数据期间,能否有总线操作? |
|
地下室#
发布于:2003-02-26 21:11
借地方问一下:app里向d12发送数据超过64字节的话,如下可以吗?(试了一下没结果,不知道是不是方法不对)
ioRequest.uAddressL=0; ioRequest.bAddressH=0; ioRequest.uSize=4096; //修改这里 ioRequest.bCommand=0x80; ioBlock.uOffset=0; ioBlock.uLength=sizeof(IO_REQUEST); ioBlock.pbyData=(PUCHAR)&ioRequest; ioBlock.uIndex=SETUP_DMA_REQUEST; DeviceIoControl(hdlUsbDev, //请求传送 IOCTL_WRITE_REGISTERS, (PVOID)&ioBlock, sizeof(IO_BLOCK), NULL, 0, &nBytes, NULL); ....... WriteFile(hdlUsbPipe3, buf, //4096个字节的缓冲 4096, &nBytes, NULL); |
|
|
5楼#
发布于:2003-03-24 09:11
谢谢各位支持,问题已解决
|
|
6楼#
发布于:2003-03-24 09:33
我想
|
|
|
7楼#
发布于:2003-03-24 18:50
谢谢各位支持,问题已解决 给大家讲一讲你是如何解决的? [编辑 - 3/24/03 by rimrock] |
|