OpenEdv-开源电子网

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

M4USB设备模式,实现自定义HID通讯

[复制链接]

17

主题

52

帖子

1

精华

高级会员

Rank: 4

积分
555
金钱
555
注册时间
2015-6-11
在线时间
66 小时
发表于 2017-8-1 09:32:58 | 显示全部楼层 |阅读模式
公司我负责的项目有个特点就是,使用GPRS无线联网,然后串口挂一堆设备帮它们转发TCP数据。所以串口特别紧张。但是由于设备没显示器。所以必须保留一路串口进行调试,运行状态打印,参数配置,软件升级。以后公司决定模块使用4G模块,就有了用USB驱动4G模块的想法。由于M4单片机带OTG,也就是可以使用USB主机模式,所以最近使用了一下M4单片机。先研究了一下USB部分。用原子的M4探索者开发板,当然是先研究通设备模式,再研究主机模式。做了一个USB设备通过HID的方式与PC通讯,这样就可以省出一路串口了。通讯速度还能比115200快一些。将来的想法是USB_HS模块作为主机,和4G模块通讯。USB_FS模块作为设备与串口通讯。全部串口省出来与外部设备通讯。

简单说一下,使用M4探索者开发板,全速USB模块。枚举为自定义HID设备,通过报告的形式通讯。由于报告每次都是收发固定字节数。所以实现了一个“块”转“流”的功能。


PC端程序编写了一个类似串口助手的软件。就可以通讯了。PC发送给M4的数据,通过串口1(115200)打印出来。

希望能对研究M4USB的朋友友一定帮助。

提供源码,工程使用MDK4.72A。KEIL5用了几次不会啊,思想跟不上了大概是, HAL库也不太愿意使用。

里面的printf的调试用的,都//了,没有删除。

上位机软件需要.NET4.0

使用了OS的vTaskDely函数,移植时请注意替换。

M4-USBD调试版本程序.zip

4.12 MB, 下载次数: 2445

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-6-10
在线时间
36 小时
发表于 2019-11-20 15:44:45 | 显示全部楼层
牛逼!这个代码竟然不是用库,自己写的。
回复 支持 1 反对 0

使用道具 举报

131

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
558
金钱
558
注册时间
2016-12-24
在线时间
68 小时
发表于 2017-9-12 08:29:58 | 显示全部楼层
我目前负责的项目也准备使用STM32F407的USB接口控制4G通信模块,进行大数据量传输,请问,你这个成功了吗?
能否交流一下,我的QQ:376575506

急切盼望能和你沟通交流,谢谢!
回复 支持 反对

使用道具 举报

131

主题

150

帖子

0

精华

高级会员

Rank: 4

积分
558
金钱
558
注册时间
2016-12-24
在线时间
68 小时
发表于 2017-9-12 08:36:31 | 显示全部楼层
请你查看我给你的留言!
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-3-7
在线时间
1 小时
发表于 2018-3-7 15:31:49 | 显示全部楼层
搞定了吗
回复 支持 反对

使用道具 举报

17

主题

52

帖子

1

精华

高级会员

Rank: 4

积分
555
金钱
555
注册时间
2015-6-11
在线时间
66 小时
 楼主| 发表于 2018-3-10 11:47:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-4-25
在线时间
3 小时
发表于 2018-5-7 21:44:46 | 显示全部楼层
你好,移植了你的程序,windows无法识别该USB设备...并且使用USB发送函数时,会卡在死循环“”        while(USB_EP1_SEND_OK != 1)“”。我在移植的时候,将vTaskDelay(1)等都注释了,应该没事吧
回复 支持 反对

使用道具 举报

17

主题

52

帖子

1

精华

高级会员

Rank: 4

积分
555
金钱
555
注册时间
2015-6-11
在线时间
66 小时
 楼主| 发表于 2018-5-8 17:11:41 | 显示全部楼层
哈哈1344764552 发表于 2018-5-7 21:44
你好,移植了你的程序,windows无法识别该USB设备...并且使用USB发送函数时,会卡在死循环“”        while(USB_E ...

看看printf信息卡在哪,另外使用USB时钟频率必须168M,你是不是设置成180M了
回复 支持 反对

使用道具 举报

12

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-6-10
在线时间
36 小时
发表于 2019-11-25 17:04:51 | 显示全部楼层
楼主,我移植了你的程序,跑的是裸机,发现PC发数据到F4板子没问题,板子发数据到PC程序就崩溃进入硬件异常了,能伴我分析是什么原因?
69f8a4f586d97aa29a084e3f3129192.png
400a2dac4b7b80963ee0ed97cececf3.png
5810224ae6af55d9afe08f7a936befc.png
回复 支持 反对

使用道具 举报

12

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-6-10
在线时间
36 小时
发表于 2019-11-25 17:44:00 | 显示全部楼层
可以了,我把KEIL优化等级设置成Levle-1就可以,设置成Levle-3就不行。这是啥情况?
回复 支持 反对

使用道具 举报

12

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-6-10
在线时间
36 小时
发表于 2019-11-25 17:46:51 | 显示全部楼层
luoqice1 发表于 2019-11-25 17:44
可以了,我把KEIL优化等级设置成Levle-1就可以,设置成Levle-3就不行。这是啥情况?

可以了,我把KEIL优化等级设置成Levle-1就可以,设置成Levle-0就不行。这是啥情况?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-12-12
在线时间
5 小时
发表于 2020-5-29 11:43:36 | 显示全部楼层
你好!请教下STM32 HID usb是如何实现跟上位机通信的呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-1 17:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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