搜索
bottom↓
回复: 86

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

  [复制链接]

出0入0汤圆

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

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

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

出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

出0入0汤圆

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


出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出10入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出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慢很多。

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出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报告描述符的位置。

谢谢

------------------编辑原因,修改错字

出0入0汤圆

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

出0入53汤圆

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

出100入101汤圆

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

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

出50入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出1000入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出10入12汤圆

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

出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?

出0入0汤圆

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

出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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

我 也遇到同样的问题

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

微信:18515222534
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 13:48

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

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