嵌入式开发者社区

标题: usb 高速通讯,选择bulk,msc还是什么模式。如何动态切换主从 [打印本页]

作者: 花木水之间    时间: 2015-3-11 10:17
标题: usb 高速通讯,选择bulk,msc还是什么模式。如何动态切换主从
   目的:为了使用usb接口达到数据的高速传输,10mbit/s以上的速度。
   目前采用创龙提供的 starterware下的bulk模式。
   1.首先不知道速度能不能到达,如果不能达到,需要选择什么模式。
    2.还有就是在bulk发现是pc主机(host)控制着dsp,在dsp里面不管调用几次usbbufferwrite(),只有在pc的测试程序发送了数据以后,才可以在usbtrace接受dsp发送的数据。
     如果想达到自由发送数据,不管是bulk还是msc 都要要采用动态切换主从模式。
   3.或者说在其他模式下,比如msc的那种,可以自由收发。
请大神帮帮忙,新人求罩!!

作者: 希望缄默    时间: 2015-3-11 10:33
1、理论上可以 不过需要优化驱动
2、详情参见《3-TMS320C6748开发例程使用手册》
3、都是可以自由收发的
作者: 花木水之间    时间: 2015-3-11 13:31
希望缄默 发表于 2015-3-11 10:33
1、理论上可以 不过需要优化驱动
2、详情参见《3-TMS320C6748开发例程使用手册》
3、都是可以自由收发的 ...

关于自由收发的问题。
结论:dsp是可以自由接收,但是发送仍是不行。
验证方法:
dsp接收:
main()

   while(1)
  {

   char recvBuffer[256]="";

    delay(5000);
    iLen=USBBufferDataAvailable(&g_sRxBuffer);
    iLen=USBBufferRead(&g_sRxBuffer,recvBuffer,iLen);
    //串口打印接受的长度和数据。
  }


pc发送采用稍微修改的test_ui,  在dsp  sleep 的5秒内,发送几次数据。
dsp收到的确是这几次数据的总和。


dsp发送:


main()

   while(1)
  {

  
  if(建立了连接)

   char recvBuffer[256]="";
    delay(5000);
   USBBufferWrite(&g_sTxBuffer, "nishishui1",strlen("nishishui1"));
  }
  }


pc端的bus hound接受不到数据,只有在test_ui发送一次以后才可以接受。


作者: 花木水之间    时间: 2015-3-11 13:33
希望缄默 发表于 2015-3-11 10:33
1、理论上可以 不过需要优化驱动
2、详情参见《3-TMS320C6748开发例程使用手册》
3、都是可以自由收发的 ...

想请教下,是否usb device想要发送数据,首先需要申请,而不是调用 write()  api直接发送
作者: 花木水之间    时间: 2015-3-11 14:45
希望缄默 发表于 2015-3-11 10:33
1、理论上可以 不过需要优化驱动
2、详情参见《3-TMS320C6748开发例程使用手册》
3、都是可以自由收发的 ...

发现usb中存在着令牌包。令牌包的介绍:在USB系统中,所有的事务处理都起始于令牌包,它是由USB主机惟一的发送到总线上的。
   我是否可以这样理解,我的发送不成功是因为  dsp相要发送数据,首先需要有host的IN令牌包。
怎样才可以自由发送呢?
作者: 希望缄默    时间: 2015-3-12 09:21
花木水之间 发表于 2015-3-11 14:45
发现usb中存在着令牌包。令牌包的介绍:在USB系统中,所有的事务处理都起始于令牌包,它是由USB主机惟一 ...

建议使用 USB MSC 完全符合你的要求 开发还简单




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4