tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1563回复:6

zboard control transmit

楼主#
更多 发布于:2001-09-21 10:42
请教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的数据。
这是为什么?

tony_fu@citiz.net
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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;
喜欢清静?享受人生
tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-09-21 11:43
大哥,我不是很明白,请解释的仔细一些好吗.
是databuffer的限制还是其他原因.
tony_fu@citiz.net
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-21 15:11
[QUOTE]原本由 tony_fu 发表
[B]大哥,我不是很明白,请解释的仔细一些好吗.
是databuffer的限制还是其他原因. [/B][/QUOTE]
据我的理解:在philips的例子中并没有考虑到使Out Control发送多于8个的数据。所以在这里使用了MAX LENGTH的限制!
喜欢清静?享受人生
tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-09-21 15:18
多谢大哥的指点,,我是否可这样理解:我要在control transmit中发大于8bytes的数据,只要去除程序中的限制,而不会引入错误
tony_fu@citiz.net
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-21 16:23
[QUOTE]原本由 tony_fu 发表
[B]多谢大哥的指点,,我是否可这样理解:我要在control transmit中发大于8bytes的数据,只要去除程序中的限制,而不会引入错误 [/B][/QUOTE]
当然,你要扩大缓冲区!
要不要给我点分???呵呵
喜欢清静?享受人生
tony_fu
驱动牛犊
驱动牛犊
  • 注册日期2001-09-06
  • 最后登录2001-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-09-21 16:32
没有问题啊,但我还不太会用driverdevelop上的设置.怎么发分啊?
tony_fu@citiz.net
游客

返回顶部