打印
[STM32F1]

STM32单片机模拟SAM模块的问题

[复制链接]
1311|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们单位是做身份*读卡器的。最近要做一款产品,需要用STM32模拟SAM模块的USB口。
SAM模块是公安部给的一种模块,带USB接口,用来读身份*用的。
现在让我来做这个工作。
我把SAM模块通过USB口接到电脑上,用Bus Hound抓下枚举的数据,如下:

初步分析了一下,首先电脑询问配置描述符,而不是通常的设备描述符。
请问高手,如何做才能让电脑首先询问配置描述符啊?
难道SAM模块就不是一个设备吗?谢谢!
沙发
JY-DX-JY|  楼主 | 2016-8-11 08:44 | 只看该作者
高手支招啊

使用特权

评论回复
板凳
JY-DX-JY|  楼主 | 2016-8-11 08:56 | 只看该作者
我把SAM模块用USB线连上电脑,设备管理器显示密码设备,而Bus Hound里显示STD USB设备。

第二幅图的那个unknown Device不是。

使用特权

评论回复
地板
icecut| | 2016-8-11 10:04 | 只看该作者
还是描述符重要.你就抓到一个模拟一个就好了.不要在意顺序.但是你不能不懂 usb.有些会重复请求...

使用特权

评论回复
5
JY-DX-JY|  楼主 | 2016-8-11 10:39 | 只看该作者
icecut 发表于 2016-8-11 10:04
还是描述符重要.你就抓到一个模拟一个就好了.不要在意顺序.但是你不能不懂 usb.有些会重复请求... ...

谢谢!你是说我直接模拟配置描述符吗?我担心一上电电脑直接询问设备描述符
我就傻眼了。

使用特权

评论回复
6
icecut| | 2016-8-11 12:24 | 只看该作者
JY-DX-JY 发表于 2016-8-11 10:39
谢谢!你是说我直接模拟配置描述符吗?我担心一上电电脑直接询问设备描述符
我就傻眼了。 ...

肯定先问配置.然后才选默认配置.这是驱动来选的.

使用特权

评论回复
7
JY-DX-JY|  楼主 | 2016-8-11 12:34 | 只看该作者
icecut 发表于 2016-8-11 12:24
肯定先问配置.然后才选默认配置.这是驱动来选的.

谢谢!我试试。

使用特权

评论回复
8
JY-DX-JY|  楼主 | 2016-8-11 13:19 | 只看该作者
我试了一下,根本不能枚举成功。
我把配置描述符改成SAM模块的,

设备描述符设成NULL,意思是把设备描述符屏蔽。

使用特权

评论回复
9
JY-DX-JY|  楼主 | 2016-8-11 16:13 | 只看该作者
改了一下描述符,枚举成功了。
可是用的是批量传输,接下来不知道怎么搞了。高手支招啊!

使用特权

评论回复
10
1223657347| | 2016-8-11 16:27 | 只看该作者
从bus hound数据来看,该usb设备为自定义设备类,使用两个端点,EP1 Bulk IN和EP1 Bulk OUT。楼主只要改好标准设备描述符(USB Standard Device Descriptor)中VID, PID,以及照抄设备配置描述符(device Configuration Descriptor)即可

使用特权

评论回复
11
JY-DX-JY|  楼主 | 2016-8-11 16:49 | 只看该作者
1223657347 发表于 2016-8-11 16:27
从bus hound数据来看,该usb设备为自定义设备类,使用两个端点,EP1 Bulk IN和EP1 Bulk OUT。楼主只要改好 ...

谢谢!请问,批量传输和中断传输传输数据有什么区别吗?
原来用中断传输方式可以读身份*,现在改成批量传输就读不了了。

使用特权

评论回复
12
1223657347| | 2016-8-11 16:52 | 只看该作者
JY-DX-JY 发表于 2016-8-11 16:49
谢谢!请问,批量传输和中断传输传输数据有什么区别吗?
原来用中断传输方式可以读身份*,现在改成批量 ...

传输由主机发起,只要分析出数据协议,设备只管进行响应就行。这和何种传输方式无关。

使用特权

评论回复
13
JY-DX-JY|  楼主 | 2016-8-11 17:14 | 只看该作者
谢谢!还要麻烦你问个问题,原来是中断传输,有一段程序如下,初始化端点的。

是不是把这个初始化的地方改成批量传输端点啊?
可是原来有中断端点,和控制端点。
我有点迷糊,中断传输怎么还有控制端点?
请大神多指教,谢谢!

使用特权

评论回复
14
1223657347| | 2016-8-11 17:23 | 只看该作者
JY-DX-JY 发表于 2016-8-11 17:14
谢谢!还要麻烦你问个问题,原来是中断传输,有一段程序如下,初始化端点的。

是不是把这个初始化的地方改 ...

我并不使用标准库。ep0就是控制传输,是必需的,用于设备枚举。

使用特权

评论回复
15
1223657347| | 2016-8-11 17:24 | 只看该作者
JY-DX-JY 发表于 2016-8-11 17:14
谢谢!还要麻烦你问个问题,原来是中断传输,有一段程序如下,初始化端点的。

是不是把这个初始化的地方改 ...

楼主可以基于cdc的例子改一改,这样比较方便

使用特权

评论回复
16
JY-DX-JY|  楼主 | 2016-8-11 17:32 | 只看该作者
1223657347 发表于 2016-8-11 17:23
我并不使用标准库。ep0就是控制传输,是必需的,用于设备枚举。

谢谢!

使用特权

评论回复
17
JY-DX-JY|  楼主 | 2016-8-11 17:34 | 只看该作者
1223657347 发表于 2016-8-11 17:24
楼主可以基于cdc的例子改一改,这样比较方便

谢谢!你是说STM32库里的CDC例程吗?

使用特权

评论回复
18
1223657347| | 2016-8-11 17:39 | 只看该作者
JY-DX-JY 发表于 2016-8-11 17:34
谢谢!你是说STM32库里的CDC例程吗?

是的,cdc例程端点也是只使用了ep0,ep1 bulk in,ep1 bulk out。

使用特权

评论回复
19
JY-DX-JY|  楼主 | 2016-8-11 17:42 | 只看该作者
1223657347 发表于 2016-8-11 17:39
是的,cdc例程端点也是只使用了ep0,ep1 bulk in,ep1 bulk out。

太感谢了。

使用特权

评论回复
20
bd2jq| | 2022-10-9 14:49 | 只看该作者
你好 你做过阅读器是吧 能加我微信 1526618 我想做个项目需要找个技术

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3351

帖子

30

粉丝