amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 86

STM32F4与Android手机进行USB HID双向通信例子

  [复制链接]
(175745643)

打赏出0元收入0元

发表于 2014-12-13 16:19:05 | 显示全部楼层 |阅读模式
刚把STM32F4与Android手机的USB HID双向通信调通了,附上代码,有需要的拿去。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(175744960)

打赏出0元收入0元

发表于 2014-12-13 16:30:28 | 显示全部楼层
谢谢楼主了。
(175740837)

打赏出0元收入0元

发表于 2014-12-13 17:39:11 | 显示全部楼层
本帖最后由 Veiko 于 2014-12-13 17:43 编辑

谢谢楼主,在调STM32F103的USB HID遇到一个问题,就是我单独做发送和单独接收,HID设备都工作正常的,但是如果我把接收到的内容再发送回去,就会导致发送端点号和接收端点号变成一样的,而上位机那边就接收不到我反馈的数据了,之前没有调过USB相关的东西,看资料也暂时还没有头绪,请楼主指点一下。我是在接收到数据后作了一个判断,如果满足条件则马上调用发送函数了,具体的代码如下:
  1. void EP1_OUT_Callback(void)
  2. {
  3.         uint8_t i;

  4.   /* Read received data (32 bytes) */  
  5.   USB_SIL_Read(EP1_OUT, Receive_Buffer);
  6.   
  7.         for(i = 0; i < 33; i++)
  8.         {
  9.                 if(Receive_Buffer[i] == 0x01)
  10.                 {
  11.                         FlagUser1 = true;
  12.                 }
  13.         }
  14.        
  15.         if(FlagUser1 == true)
  16.         {
  17.                 FlagUser1 = false;
  18.                 USB_SIL_Write(EP1_IN,Receive_Buffer,32);
  19.                 SetEPTxValid(ENDP1);       
  20.         }
  21.        
  22.   SetEPRxValid(ENDP1);
  23. }
复制代码


抓包截图

代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(175738910)

打赏出0元收入0元

发表于 2014-12-13 18:11:18 | 显示全部楼层
bangding


(175729411)

打赏出0元收入0元

发表于 2014-12-13 20:49:37 来自手机 | 显示全部楼层
感谢楼主分享
(175728783)

打赏出0元收入0元

发表于 2014-12-13 21:00:05 | 显示全部楼层
谢谢!下载了。
(175727857)

打赏出0元收入0元

 楼主| 发表于 2014-12-13 21:15:31 | 显示全部楼层
Veiko 发表于 2014-12-13 17:39
谢谢楼主,在调STM32F103的USB HID遇到一个问题,就是我单独做发送和单独接收,HID设备都工作正常的,但是 ...

可以试试接收完数据后先delay个几十ms再发送数据回去,我之前试过连续发送数据,太快的话另一边会接收不到,加了delay就好了
(175727400)

打赏出0元收入0元

发表于 2014-12-13 21:23:08 | 显示全部楼层
USB实际传输速度有亲测吗?
(175726651)

打赏出0元收入0元

 楼主| 发表于 2014-12-13 21:35:37 | 显示全部楼层
本帖最后由 kenanhcf88 于 2014-12-13 21:41 编辑
tian_zi 发表于 2014-12-13 21:23
USB实际传输速度有亲测吗?


这程序没实际测过,用STM32F4 USB读卡器的例子来试过,接收到数据后不做处理,速度最高能达到900KB/S左右,接收到数据后再写入到SD卡,速度会慢很多,用的STM32开发板的USB接口是全速12Mbps的,要外挂芯片才能达到USB High Speed
(175726364)

打赏出0元收入0元

发表于 2014-12-13 21:40:24 | 显示全部楼层
也试试,不知道速率能到多少
(175726325)

打赏出0元收入0元

发表于 2014-12-13 21:41:03 | 显示全部楼层
lionsg 发表于 2014-12-13 21:40
也试试,不知道速率能到多少

==速度最高能达到900KB/S左右
(175725527)

打赏出0元收入0元

 楼主| 发表于 2014-12-13 21:54:21 | 显示全部楼层
我现在在做一个把Camera录像数据通过USB传回来的项目,估计传个480P的录像还可以
(175720208)

打赏出0元收入0元

发表于 2014-12-13 23:23:00 来自手机 | 显示全部楼层
mark!!楼主高手!!
(175719878)

打赏出0元收入0元

发表于 2014-12-13 23:28:30 | 显示全部楼层
谢谢分享!
(175676546)

打赏出0元收入0元

发表于 2014-12-14 11:30:42 | 显示全部楼层
先收下,慢慢研究
(174989741)

打赏出0元收入0元

发表于 2014-12-22 10:17:27 | 显示全部楼层
kenanhcf88 发表于 2014-12-13 21:54
我现在在做一个把Camera录像数据通过USB传回来的项目,估计传个480P的录像还可以 ...

楼主,刚我百了一下USB的HID设备,,介绍说最大的传输速度限制,主机可以保证低速的中断端点,每10ms内不会有超过1笔事务,每一秒最多800个字节。主机可以保证全速端点,每1ms1笔事务,每一秒最多是64000个字节。主机可以保证高速端点,每125us1笔事务,每一秒最多24.576MB。如果采用HID模式,64KB/s,回比读卡器中实现的900KB/s慢很多。
(174976834)

打赏出0元收入0元

发表于 2014-12-22 13:52:34 | 显示全部楼层
收藏了!
(174118889)

打赏出0元收入0元

发表于 2015-1-1 12:11:39 | 显示全部楼层
这个不错,收藏了,谢谢分享。
(174092674)

打赏出0元收入0元

发表于 2015-1-1 19:28:34 | 显示全部楼层
学习一下!!!!正准备搞这个呢
(174078770)

打赏出0元收入0元

发表于 2015-1-1 23:20:18 | 显示全部楼层
谢谢分享 !!!
(174046415)

打赏出0元收入0元

发表于 2015-1-2 08:19:33 来自手机 | 显示全部楼层
谢谢分享
(174041535)

打赏出0元收入0元

发表于 2015-1-2 09:40:53 | 显示全部楼层
参考一个
(172866662)

打赏出0元收入0元

发表于 2015-1-16 00:02:06 | 显示全部楼层
对手机有要求吗,能兼容所有的Android手机?
(172835899)

打赏出0元收入0元

发表于 2015-1-16 08:34:49 | 显示全部楼层
太感谢了,正在研究HID
(172713660)

打赏出0元收入0元

发表于 2015-1-17 18:32:08 | 显示全部楼层
果断拿走,谢谢分享~~
(171883850)

打赏出0元收入0元

发表于 2015-1-27 09:02:18 | 显示全部楼层
谢谢楼主分享,请教一个问题:

楼主代码中,安卓端收发函数如下:
    public void SendData(byte[] data) {
        Log.d(TAG,"Send Data");
        myDeviceConnection.bulkTransfer(epOut, data, 4, TIMEOUT);
    }

    public void RecData() {
        byte[] data = new byte[0xFF];
        while (true) {
            myDeviceConnection.bulkTransfer(epIn, data, 4, 99000);
            for (int i = 0; i < 4; i++) {
                Log.d(TAG, "data[" + i + "] = " + data[i]);
            }
            SendData(data); //把接收到的发回去
        }
    }

其中:
主机发送:myDeviceConnection.bulkTransfer(epOut, data, 4, TIMEOUT);
主机接收:myDeviceConnection.bulkTransfer(epIn, data, 4, 99000);
根据函数定义,4应该是发送和接收长度,这个长度和配置时的HID报告描述符中的数据长度是一致吗?还是说不一定?

下位机代码看了一下,没有找到HID报告描述符的定义,在usbd_desc.c或者usbd_desc.h中只找到配置描述符定义,楼主可否提示下HID报告描述符的位置。

谢谢

------------------编辑原因,修改错字
(171855577)

打赏出0元收入0元

发表于 2015-1-27 16:53:31 | 显示全部楼层
这么屌啊。顶一个。
(171837851)

打赏出0元收入2元

发表于 2015-1-27 21:48:57 | 显示全部楼层
果断收藏了  用的时候在过来看看
(171837376)

打赏出0元收入0元

发表于 2015-1-27 21:56:52 | 显示全部楼层
kenanhcf88 发表于 2014-12-13 21:35
这程序没实际测过,用STM32F4 USB读卡器的例子来试过,接收到数据后不做处理,速度最高能达到900KB/S左右 ...

"STM32F4 USB读卡器的例子",官方的例程么?
(171837053)

打赏出0元收入0元

发表于 2015-1-27 22:02:15 | 显示全部楼层
谢谢楼主分享
(171837051)

打赏出0元收入0元

发表于 2015-1-27 22:02:17 | 显示全部楼层
谢谢分享,收藏了。
(170673522)

打赏出0元收入0元

发表于 2015-2-10 09:14:26 | 显示全部楼层
很好的资料,收藏了
(170665092)

打赏出0元收入0元

发表于 2015-2-10 11:34:56 | 显示全部楼层
感谢分享
(170649584)

打赏出0元收入0元

发表于 2015-2-10 15:53:24 | 显示全部楼层
厉害哦                                    
(170648944)

打赏出0元收入0元

发表于 2015-2-10 16:04:04 | 显示全部楼层
谢谢,近来要看这样的资料。
(169196378)

打赏出0元收入0元

发表于 2015-2-27 11:33:30 | 显示全部楼层
感谢楼主分享
(168321864)

打赏出0元收入0元

发表于 2015-3-9 14:28:44 | 显示全部楼层
有没有文字讲解一下,
(167941465)

打赏出0元收入0元

发表于 2015-3-14 00:08:43 | 显示全部楼层
强大,感谢分享!
(167735578)

打赏出0元收入0元

发表于 2015-3-16 09:20:10 | 显示全部楼层
谢谢分享
(165092554)

打赏出0元收入0元

发表于 2015-4-15 23:30:34 | 显示全部楼层
谢谢楼主的分享,赞一个。
(165058724)

打赏出0元收入0元

发表于 2015-4-16 08:54:24 | 显示全部楼层
谢谢楼主分享,收藏了!
(165057828)

打赏出0元收入0元

发表于 2015-4-16 09:09:20 | 显示全部楼层
感谢分享,留着有用
(163489785)

打赏出0元收入0元

发表于 2015-5-4 12:43:23 | 显示全部楼层
好.........
(163115035)

打赏出0元收入0元

发表于 2015-5-8 20:49:13 | 显示全部楼层
感谢楼主!
(163114137)

打赏出0元收入0元

发表于 2015-5-8 21:04:11 | 显示全部楼层
这个资料不错的。谢谢
(163113911)

打赏出0元收入0元

发表于 2015-5-8 21:07:57 | 显示全部楼层
网上查的(与我理解一致): 由于HID群组属于慢速设备,因此HID群组的主要限制就是它的传输速度,其最高的传输率仅有64Kbps。这比全速的12Mbps传输速率 低了很多。但对于一般的I/O控制上的应用或输入/输出的设计来说,却已经足够了。
(163074742)

打赏出0元收入0元

发表于 2015-5-9 08:00:46 | 显示全部楼层
感谢分享!
(153723953)

打赏出0元收入0元

发表于 2015-8-25 13:27:15 | 显示全部楼层
非常关心这个速率,不知道楼主最好的速率是多少???
(153644179)

打赏出0元收入0元

发表于 2015-8-26 11:36:49 | 显示全部楼层
感谢共享
(134789737)

打赏出0元收入0元

发表于 2016-3-31 16:57:31 | 显示全部楼层
楼主,太感谢你了,我可以加你吗,我还有好多问题想问你,拜托拜托
(134788465)

打赏出0元收入0元

发表于 2016-3-31 17:18:43 | 显示全部楼层
感谢。楼主好人
(126346194)

打赏出0元收入0元

发表于 2016-7-7 10:23:14 | 显示全部楼层
谢谢楼主分享!
(126345067)

打赏出0元收入0元

发表于 2016-7-7 10:42:01 | 显示全部楼层
不明觉厉干啥用,,
(126055387)

打赏出0元收入0元

发表于 2016-7-10 19:10:01 | 显示全部楼层
nice,也可以配合android便携平台
(113796822)

打赏出0元收入0元

发表于 2016-11-29 16:19:26 | 显示全部楼层
您好,请问您提供的stm32f4的是device还是host啊?
(113793297)

打赏出0元收入0元

发表于 2016-11-29 17:18:11 | 显示全部楼层
感谢楼主分享
(113770248)

打赏出0元收入0元

发表于 2016-11-29 23:42:20 | 显示全部楼层
先收藏了,多谢楼主!
(113559687)

打赏出0元收入0元

发表于 2016-12-2 10:11:41 | 显示全部楼层
谢谢楼主的贡献,学习啦
(113559108)

打赏出0元收入0元

发表于 2016-12-2 10:21:20 | 显示全部楼层
帮顶一下
(107163764)

打赏出0元收入0元

发表于 2017-2-14 10:50:24 | 显示全部楼层
看着是在st官方的hid库上修改的。正好需要这个,省的自己搞了,感谢分享。
(107154329)

打赏出0元收入0元

发表于 2017-2-14 13:27:39 | 显示全部楼层
Thank you !!!
(106616682)

打赏出0元收入0元

发表于 2017-2-20 18:48:26 | 显示全部楼层
请问一下 这个Android 手机需要root吗?
(106557692)

打赏出0元收入0元

发表于 2017-2-21 11:11:36 | 显示全部楼层
厉害,高手。
(106028015)

打赏出0元收入0元

发表于 2017-2-27 14:19:33 | 显示全部楼层
感谢分享
(105923228)

打赏出0元收入0元

 楼主| 发表于 2017-2-28 19:26:00 | 显示全部楼层
shotstar 发表于 2017-2-20 18:48
请问一下 这个Android 手机需要root吗?

Android手机不需要root,原生的Android系统本身就支持usb Host模式下与usb Hid设备通信
(105786543)

打赏出0元收入0元

发表于 2017-3-2 09:24:05 | 显示全部楼层
谢谢楼主了~
(105437286)

打赏出0元收入0元

发表于 2017-3-6 10:25:02 | 显示全部楼层
标记一下,以后有用,谢谢楼主
(50725813)

打赏出0元收入0元

发表于 2018-11-29 16:02:55 | 显示全部楼层
谢谢楼主分享
(50531075)

打赏出0元收入0元

发表于 2018-12-1 22:08:33 | 显示全部楼层
不错,不错,留着研究下~
(50528537)

打赏出0元收入0元

发表于 2018-12-1 22:50:51 | 显示全部楼层
不错,不错,留着研究下~
(50496442)

打赏出0元收入0元

发表于 2018-12-2 07:45:46 | 显示全部楼层
感谢楼主分享
(50484604)

打赏出0元收入0元

发表于 2018-12-2 11:03:04 | 显示全部楼层
这个可以
(50466127)

打赏出0元收入0元

发表于 2018-12-2 16:11:01 | 显示全部楼层
这个可以有!!!!!!!!!!!!!1
(50357385)

打赏出0元收入0元

发表于 2018-12-3 22:23:23 | 显示全部楼层
>刚把STM32F4与Android手机的USB HID双向通信调通了,附上代码,有需要的拿去。
I am curious how do you connect a MCU to the Android cell phone or tablet? Can it be recharged at the same time?
(50351532)

打赏出0元收入0元

发表于 2018-12-4 00:00:56 | 显示全部楼层
不错不错,下了看看
(50299685)

打赏出0元收入0元

 楼主| 发表于 2018-12-4 14:25:03 | 显示全部楼层
本帖最后由 kenanhcf88 于 2018-12-4 14:27 编辑
funnynypd 发表于 2018-12-3 22:23
>刚把STM32F4与Android手机的USB HID双向通信调通了,附上代码,有需要的拿去。
I am curious how do you c ...


https://developer.android.com/guide/topics/connectivity/usb/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(50299373)

打赏出0元收入0元

 楼主| 发表于 2018-12-4 14:30:15 | 显示全部楼层
我这个例子是Host Mode的,手机给设备供电的,后面我会把Accessory Mode的例子也传上来
(50268245)

打赏出0元收入0元

发表于 2018-12-4 23:09:03 | 显示全部楼层
>后面我会把Accessory Mode的例子也传上来
It would be good to have a picture.
(45714100)

打赏出0元收入0元

发表于 2019-1-26 16:11:28 | 显示全部楼层
楼主请问你这个例程stm32板子的D-需要焊接2K电阻上拉到3V3吗?我这边连接到电脑,拿电脑当主机,发现设备驱动有问题,USB进入挂起模式,求不吝赐教
(45692615)

打赏出0元收入0元

发表于 2019-1-26 22:09:33 | 显示全部楼层
感谢楼主分享
(19440693)

打赏出0元收入0元

发表于 2019-11-26 18:21:35 | 显示全部楼层
zzipeng 发表于 2019-1-26 16:11
楼主请问你这个例程stm32板子的D-需要焊接2K电阻上拉到3V3吗?我这边连接到电脑,拿电脑当主机,发现设备驱 ...

我 也遇到同样的问题
(19439954)

打赏出0元收入0元

发表于 2019-11-26 18:33:54 | 显示全部楼层
楼主,您的例子,是STM32F4作为USB Device ,手机作为Host的吗?
(3300726)

打赏出0元收入0元

发表于 2020-5-31 13:41:02 | 显示全部楼层
感谢楼主
(3293466)

打赏出0元收入0元

发表于 2020-5-31 15:42:02 | 显示全部楼层
谢谢!下载了。
(3282557)

打赏出0元收入0元

发表于 2020-5-31 18:43:51 来自手机 | 显示全部楼层
谢谢分享!
(786784)

打赏出0元收入0元

发表于 2020-6-29 16:00:04 | 显示全部楼层
您好,方便留个微信联系方式吗,在HID USB与安卓手机通信遇到了问题,不是好友不能发私信给你。
(628474)

打赏出0元收入0元

 楼主| 发表于 7 天前 | 显示全部楼层
cyngogogo 发表于 2020-6-29 16:00
您好,方便留个微信联系方式吗,在HID USB与安卓手机通信遇到了问题,不是好友不能发私信给你。 ...

微信:18515222534
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-8 18:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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