OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5090|回复: 9

想实现两块板子间的usb通信,不用fat

[复制链接]

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-10-11
在线时间
0 小时
发表于 2014-12-8 15:26:56 | 显示全部楼层 |阅读模式
5金钱
板子一块是107的,有otg功能,另一块是103的,想使用107的otg功能,通过usb口的通信给103下达指令。不用fat,不知道有啥好方法呀?感觉一点思路都没有
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-8 19:50:43 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-12-9 08:52:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我想实现两块板子间主机对设备的数据输出,但不想把作为设备的板子模拟成u盘,然后就茫然了
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-12-9 16:28:01 | 显示全部楼层
可以一個宣告成 USB HID DEVICE ,  另一個用 HOST 去讀 HID,
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-12-9 16:35:44 | 显示全部楼层
回复【4楼】溫柔一刀:
---------------------------------
目前就是这样干的。用HID一个好处就是不用写驱动。还在写代码。
但有个问题,作为HOST的板子在某些时候是接u盘的,那也就是说,如果我这样干,主机的枚举得写两个部分,在HID和MSC之间自动切换呀,不知道会不会互相干扰
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-12-12 10:22:03 | 显示全部楼层
回复【5楼】枫飞:
---------------------------------

若你不接 USB HUB , 就判斷CLASS 然後去Enumeration (基本上都大同小異)
若接 USB HUB , 這難度高一點, 但不會相互干擾, 就像 Windows ? 也沒有干擾吧, 這全都可以的, 只是看你怎麼coding

我目前是 MCU + USB HUB + MSC + Moblie hone,  二個在跑.....
手機端還有問題, 正在找原因中
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-12-12 10:34:43 | 显示全部楼层
回复【6楼】溫柔一刀:
---------------------------------
USB HUB是指那个分线器,将usb一个接口变多个的那种对么?
暂时还没弄那种,感觉有点意思

我现在是可以将u盘(MSC)和鼠标(HID)任意插拔都可以
但是有个问题。ST只提供了HID和MSC两种类。像我如果用其他的,像用图像类,如扫描仪,打印类,如打印机。我在想是不是只能在HID类给出的文件进行修改得到。修改的部分有些麻烦呀,描述符之类的这好改,但是不是还有很多动作都得删
目前在尝试中。。。有没有更好的建议?
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-12-12 10:42:57 | 显示全部楼层
回复【7楼】枫飞:
---------------------------------
1. USB 可以接很多類別, 打印機好像不是標準的! 為什麼呢? 每家提供的WINDOWS DRIVER都不同, 所以我猜雖然都是透過USB, 但是方過BULK模式下應該還是有自已定義的Protocol , 我想會複雜很多....  我是沒模過

2. USB HUB 就是一對多的那個, 應該跟你說法一樣的 (因為台灣用語就是 USB HUB), 我不知你那裡用語是? 但我想應該是同一個東西

3. USB HUB 也是一個 Device , class =0x09 , 系統上電會先捉到 USB HUB , 然後Enum.....配 address =1,
跟 ST 原廠給的一樣, 只是前面都好了後, 要開啟後端 port pwer 及 real time 去 polling hub port status , 
檢查是不是有裝置接近來.... 然後又重覆以上部法........
(因為每個裝置有可能都會配置EP, 所以會有共用情況, 但是前提 Address是不同, 所以還是可以分辨....只是我手機可以enum, 但是在bulk模式下, 會卡在接收.......不會動.....正在找原因)
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-10-11
在线时间
0 小时
 楼主| 发表于 2014-12-30 10:01:22 | 显示全部楼层
回复【8楼】溫柔一刀:
---------------------------------
有个问题想请教下:
我用的107作为host,直接在官网例程MSC改的,接的设备是打印机类的,目前枚举没问题,进入具体的主机类后,总是停在URB_IDLE状态
具体如下:
    case USBH_PRN_DECODE_CSW:
      URB_Status = HCD_GetURB_State(pdev , RN_Machine.hc_num_in);  //不断循环执行这步,URB_Status始终为0
      /* Decode CSW */
      if(URB_Status == URB_DONE)
      {
        RN_BOTStallErrorCount = 0;
        USBH_PRN_BOTXferParam.PRNBOTStateBkp = USBH_PRN_RECEIVE_CSW_STATE;
        
        USBH_PRN_BOTXferParam.PRNState = USBH_PRN_BOTXferParam.PRNStateCurrent ;
        
        USBH_PRN_BOTXferParam.PRNBOTXferStatus = USBH_PRN_DecodeCSW(pdev , phost);
      }
      else if(URB_Status == URB_STALL)     
      {
        error_direction = USBH_PRN_DIR_IN;
        USBH_PRN_BOTXferParam.PRNBOTState  = USBH_PRN_BOT_ERROR_IN;
      }
      break;

此处URB_Status始终为0,即处于URB_IDLE

请问您知道大概是什么问题么
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-12-31 15:17:41 | 显示全部楼层
我想有二種可能.
1. 你的 EP 是對的嗎?
2. 你丟的資料, 他不認識
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 11:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表