打印
[STM32F4]

usb vcp host端,不能被动接收数据

[复制链接]
675|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyj213|  楼主 | 2022-8-31 19:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, os
请教一下
我们需要用f4xx做usb vcp host端,
用cubeide生成了usb host端的 virtual com port代码工程,能够正常识别插入的vcp设备,
但是发现usb vcp device端发的数据,host不会主动收,
需要host端定时调用receive的函数才能收到,请问有没有办法让host端不轮询读呢?像串口中断接收那样,不是很懂usb cdc,请各位大佬帮帮忙

使用特权

评论回复
沙发
海滨消消| | 2022-9-5 11:05 | 只看该作者
USB通信基于主从结构,所有的通信传输都是由HOST发起的。即使从设备要向主发数据,也得等主发读取命令才可以,否则HOST就没法正常接收来自从设备的数据的。所以你的代码也得按这个机制来安排。

使用特权

评论回复
板凳
duo点| | 2022-9-5 11:05 | 只看该作者
我用的是标准库,在以下代码中添加,我不确定HAL库中是如何操作的。我生成一个试试。
static uint16_t VCP_DataRx (uint8_t epnum,uint8_t* Buf, uint32_t Len)
{
        switch(epnum+0x80)
        {
                case CDC_IN_EP1:
                        USART_rx(Buf, Len);
                        break;
                default:
                        break;
        }
  return USBD_OK;
}

使用特权

评论回复
地板
Stahan| | 2022-9-11 22:17 | 只看该作者
代码得按主从机制来吧

使用特权

评论回复
5
LLGTR| | 2022-9-13 14:24 | 只看该作者
USB主机需要主动去读,这是一种协议的定义,不过HAL应该有开启读模式。

使用特权

评论回复
6
LinkMe| | 2022-9-13 15:25 | 只看该作者
是不是接收到数据时候需要再次调用receive函数?

使用特权

评论回复
7
地下縱情搖擺| | 2022-9-21 01:18 | 只看该作者
是不是得修改描述符啊

使用特权

评论回复
8
热爱童话世界| | 2022-9-21 01:40 | 只看该作者
正常应该是可以接受数据啊

使用特权

评论回复
9
极客晨星| | 2022-9-21 02:02 | 只看该作者
USB有中断的,是可以自动收数据的啊

使用特权

评论回复
10
一枝香| | 2022-9-21 02:24 | 只看该作者
你可以把代码发出来,帮你分析一下

使用特权

评论回复
11
銀河| | 2022-9-21 02:46 | 只看该作者
不需要轮询的吧,你是符合设备么?

使用特权

评论回复
12
晚晚皆安| | 2022-9-21 05:04 | 只看该作者
是可以自动收数据的,你是不是需要调用之类啊?

使用特权

评论回复
13
偷吻月亮| | 2022-9-21 05:26 | 只看该作者
VCP设备是类似于摄像头那种么?

使用特权

评论回复
14
笨蛋无需搭理| | 2022-9-21 05:48 | 只看该作者
中断获取呗,不轮询的话

使用特权

评论回复
15
占得人间第一春| | 2022-9-21 06:11 | 只看该作者
这你要看有没有中断触发,如果有的话,就好弄一些

使用特权

评论回复
16
喜爱弄人| | 2022-9-21 06:34 | 只看该作者
这还是问问技术支持吧,ST的技术支持应该能解决


使用特权

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

本版积分规则

34

主题

143

帖子

0

粉丝