阅读:1563回复:6
zboard control transmit
请教rayyang2000大哥及其他高手,USB协议中规定control方式可发送大于control-size的值。用多个包实现。
在zboard isr.c程序中,ISRx_EP0_RxDone(Void)函数中, host->device情况下,有如下程序: if(ControlData.DeviceRequest.wLength>MAX_CONTROLDATA_SIZE) { bZoardFlags.bits.bControl_State=USB_IDLE; USBD12_SetEndpointStatus(0,1); USBD12_SetEndpiontStatus(1,1); } 我用windriver向device写大于8bytes的数据就有错,注释掉这几行就可发大于8bytes的数据。 这是为什么? |
|
|
沙发#
发布于:2001-09-21 11:33
[QUOTE]原本由 tony_fu 发表
[B]请教rayyang2000大哥及其他高手,USB协议中规定control方式可发送大于control-size的值。用多个包实现。 在zboard isr.c程序中,ISRx_EP0_RxDone(Void)函数中, host->device情况下,有如下程序: if(ControlData.DeviceRequest.wLength>MAX_CONTROLDATA_SIZE) { bZoardFlags.bits.bControl_State=USB_IDLE; USBD12_SetEndpointStatus(0,1); USBD12_SetEndpiontStatus(1,1); } 我用windriver向device写大于8bytes的数据就有错,注释掉这几行就可发大于8bytes的数据。 这是为什么? [/B][/QUOTE] 注意下面的代码就是了! typedef struct _control_xfer { DEVICE_REQUEST DeviceRequest; unsigned short wLength; unsigned short wCount; unsigned char* pData; unsigned char dataBuffer[MAX_CONTROLDATA_SIZE]; } CONTROL_XFER; |
|
|
板凳#
发布于:2001-09-21 11:43
大哥,我不是很明白,请解释的仔细一些好吗.
是databuffer的限制还是其他原因. |
|
|
地板#
发布于:2001-09-21 15:11
[QUOTE]原本由 tony_fu 发表
[B]大哥,我不是很明白,请解释的仔细一些好吗. 是databuffer的限制还是其他原因. [/B][/QUOTE] 据我的理解:在philips的例子中并没有考虑到使Out Control发送多于8个的数据。所以在这里使用了MAX LENGTH的限制! |
|
|
地下室#
发布于:2001-09-21 15:18
多谢大哥的指点,,我是否可这样理解:我要在control transmit中发大于8bytes的数据,只要去除程序中的限制,而不会引入错误
|
|
|
5楼#
发布于:2001-09-21 16:23
[QUOTE]原本由 tony_fu 发表
[B]多谢大哥的指点,,我是否可这样理解:我要在control transmit中发大于8bytes的数据,只要去除程序中的限制,而不会引入错误 [/B][/QUOTE] 当然,你要扩大缓冲区! 要不要给我点分???呵呵 |
|
|
6楼#
发布于:2001-09-21 16:32
没有问题啊,但我还不太会用driverdevelop上的设置.怎么发分啊?
|
|
|