
在CUBEMX生成的STM32F407VET6的I2S主机接收模式与I2S主机发送模式能正常运行,如何进行动态调整或者如何实现主机全双工?
开发逆变器进行STM32学习,路径如何规划?
STM32F407 多机RS485串口通讯+地址位唤醒+DMA空闲线接收,无法进入中断服务程序。
设置RDP等级为2的同时,有什么办法可以确保后续还能够烧录程序
cubeide登录不了,软件连不上网
STM32CubeIDE 报错 编译STM32MP135(Projects\STM32MP135C-DK\External_Loader)
STM32F407VET6 I2S 采用DMA传输问题
STM32N6的摄像头下采样是怎么实现的
CubeIDE生成MP257的M33工程出现RCC配置问题(Bug?)
有STM32F4倒车雷达响应例程吗?
谢谢
我也试过主动发起接收,但是不知道应该在哪里加这个机制好点
还有一个问题,主机并不提前知道设备端发过来的字节数,主动请求多少数据呢?
是否cdc 的vcp类已经有相关的机制,求指导
你要看看相应协议。
HOST找device要数据,device有就给,没有就先拒绝。HOST会不停找你要的,至于你给多少数据过去,它会数据包的情况来判断,比方收到一包不满的数据或零数据包它就视为此次传输结束。
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;
}
我们在sof中每1ms向从机请求一次从机数据,
但主机并不会提前知道从机每一个包会发多少数据过来,
我这个USBH_CDC_Receive函数应该指定多少的长度?
USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost,
uint8_t *pbuff,
uint32_t length);
还有另外一个问题,为什么PC端的vcp主机(窗口调试助手)没有定时轮询从机(用Bus Hound抓数据观察),但也能像串口中断那样收到从机的数据??请指导
这个要先主动轮询从机,从机回复数据之后才会进callback,
主机不轮询从机的话,尽管从机不断往上发数据,主机也不会进这个callback
不知道有没有相关的host vcp例程参考
现在在这里每1ms,向从设备请求一次数据
/**
* @brief SOF callback.
* @param hhcd: HCD handle
* @retval None
*/
void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd)
{
USBH_LL_IncTimer(hhcd->pData);
USBH_CDC_Receive(&hUsbHostFS, USBHTxBuf, 64);
}
但是请求数据的长度改如何合适?主机提前不会知道从机会发多少数据
USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost,
uint8_t *pbuff,
uint32_t length);
另外,pc端的host 窗口调试助手好像没有主动轮询设备也能及时收到从机主动发的数据(用Bus Hound抓取没看到轮询的包),为什么呢?是不是CDC vcp类有什么机制可以做到这样?
请问您这个代码在哪添加?系统如何通知调用到这里的?
我这个是标准库下的操作。我这个操作和中断差不多,是自己调用的,不需要我进行操作。