hpdell 发表于 2021-11-16 08:48:05

请教下某台设备 usb 与stm32 usb 相互通信 ?

请教下某台设备 使用的 usb 通信,当连接到电脑端的 usb 端口并安装 设备对应的 usb 驱动时,在电脑端使用串口助手可以与之正常通信,

如果某台设备的 usb 相与 stm32 mcu 上的 usb 通信的话,那 stm32 上的 usb 需要配置为 usb 的哪个类才能与之通信啦 ??(如果把 mcu 的 usb 配置为 vcp 与设备 上的 usb 通信的话,貌似行不通)

yunqing_abc 发表于 2021-11-16 09:15:59

并安装 设备对应的 usb 驱动时,在电脑端使用串口助手可以与之正常通信。

从这句话来看,这个设备应该是集成了USB转串口,如果能使用串口通信,比用USB方便多了。

hpdell 发表于 2021-11-16 12:07:15

yunqing_abc 发表于 2021-11-16 09:15
并安装 设备对应的 usb 驱动时,在电脑端使用串口助手可以与之正常通信。

从这句话来看,这个设备应该是集 ...

现在的问题是这台设备没有提供外接 串口 的接口啊,只有一个 外接 usb 口,此 usb 与电脑端的 usb (电脑端使用串口调试助手) 可以正常通信,



现在想使用 单片机 来控制这台设备,不知道该如何下手 ????




Trylin 发表于 2021-11-16 12:18:13

如果是私有驱动,代码不开放,很难下手啊

tcm123 发表于 2021-11-16 12:58:02

其实很简单,根本不用管它是什么类还是自定义设备,只要往端点读写数据就行。当然读写前可能要下发波特率这些配置报文。先在PC上看是什么芯片,就能找到一堆现成的代码了

keshipt 发表于 2021-11-16 13:41:25

USB 用CDC进行通信,一个做为HOST,一个做为DEVICE

keshipt 发表于 2021-11-16 13:44:55

另外 USB CDC win10以上是自带驱动的

爱晴海玩偶 发表于 2021-11-16 14:11:58

USB转虚拟串口?这个是不需要串口芯片。直接把USB当成串口用

hpdell 发表于 2021-11-16 14:32:18

爱晴海玩偶 发表于 2021-11-16 14:11
USB转虚拟串口?这个是不需要串口芯片。直接把USB当成串口用

usb 虚拟串口,是不需要串口芯片,但是如果单片机端吧 usb 虚拟成串口,那么 在设备端不能够安装 st 提供 的 vcp 驱动,所以设备端也不知道 单片机 虚拟出来的 串口端口号是多少,而且,设备端也不能够 自动打开单片机端虚拟出来的端口号,

目前貌似问题的关键就在这里呀 ???

hpdell 发表于 2021-11-16 14:33:09

keshipt 发表于 2021-11-16 13:44
另外 USB CDC win10以上是自带驱动的

不是win10 呀,我是想使用 单片机 usb 虚拟串口来与 设备端的 usb 通信,到时就不可能使用电脑端了呀

hpdell 发表于 2021-11-16 14:34:57

Trylin 发表于 2021-11-16 12:18
如果是私有驱动,代码不开放,很难下手啊

是的,

如果单片机端吧 usb 虚拟成串口,那么 在设备端不能够安装 st 提供 的 vcp 驱动,所以设备端也不知道 单片机 虚拟出来的 串口端口号是多少,而且,设备端也不能够 自动打开单片机端虚拟出来的端口号,

目前貌似问题的关键就在这里呀 ???

redroof 发表于 2021-11-16 14:43:09

第一步:试一下它是不是标准的CDC协议。usb转串口在linux上明明不需要驱动的,协议是标准的。在windows上要驱动只是因为系统默认不识别,那个所谓的驱动inf,实际里面写的就是让系统用内置的那一份标准驱动程序。
如果试了确认它是标准CDC协议,那么你弄个带usb主机的单片机,正常的驱动它就行。
USB CDC协议实际上串口数据区完全是原样传递的。设置波特率那些命令不处理也没事

keshipt 发表于 2021-11-16 14:51:56

hpdell 发表于 2021-11-16 14:33
不是win10 呀,我是想使用 单片机 usb 虚拟串口来与 设备端的 usb 通信,到时就不可能使用电脑端了呀 ...

我的意思是你确认一下设备是不是CDC协议通信,如果是的话 那就好办了,一个作为主机 一个作为从机(设备),直接相连就可以通信了

dukelec 发表于 2021-11-16 15:05:51

本帖最后由 dukelec 于 2021-11-16 15:07 编辑

redroof 发表于 2021-11-16 14:43
第一步:试一下它是不是标准的CDC协议。usb转串口在linux上明明不需要驱动的,协议是标准的。在windows上要 ...

不是 CDC 協議的 usb 轉串口,在 linux 上也是不需要安裝驅動的,
其它非串口的各種 usb 設備,在 windows 下要驅動的,在 linux 下也都不需要驅動,
結論是 windows 的用戶體驗比較好。

樓主要插 linux 沒錯,但是要用 dmesg 命令確認是否爲 CDC 協議
linux 太麻煩了,還要敲命令,用 windows 比較好,在設備管理器裏面找到相關設備,然後查看屬性,在菜單裏面應該也能確認用的是什麼 usb 轉串口協議

redroof 发表于 2021-11-16 15:33:38

hpdell 发表于 2021-11-16 14:34
是的,

如果单片机端吧 usb 虚拟成串口,那么 在设备端不能够安装 st 提供 的 vcp 驱动,所以设备端也不 ...

设备是从机,那么你的单片机得是USB主机。
主机端支持什么协议,原本就是你自己得做的。比如要接U盘或者接键盘鼠标需要的协议就不一样。你用的单片机的USB主机库应该有常用的这几类驱动。
USB-CDC实际上不需要任何驱动来替你转换数据,虚拟串口的数据就是原样传输的,没有任何包装。
对方是CDC协议,那么它会告诉你它有两个端点,一个输入一个输出。可能还有个中断端点你可以不管。
主机把数据写到输出端点里就算是串口发给它了,
主机从他的输入端点里收数据就算它串口发给你的

huangqi412 发表于 2021-11-16 16:41:09

你这是要USB host啊

hpdell 发表于 2021-11-19 09:02:16

redroof 发表于 2021-11-16 15:33
设备是从机,那么你的单片机得是USB主机。
主机端支持什么协议,原本就是你自己得做的。比如要接U盘或者 ...

先按照这个思路捣鼓看看

redroof 发表于 2021-11-19 09:20:10

hpdell 发表于 2021-11-19 09:02
先按照这个思路捣鼓看看

按我说的这样做就是了。原理上就是这样的,肯定行。

diego2003 发表于 2021-11-22 16:42:50

一句话 你的STM32要配置为HOST   需要上操作系统才可以与设备通讯
页: [1]
查看完整版本: 请教下某台设备 usb 与stm32 usb 相互通信 ?