
最近在弄USB的程序,我使用STM32F429的高速USB模块,PHY使用STM32F429内部自带的全速PHY。在我的应用中,我需要自己定义4个端点(端点0除外),端点1(IN Interrupt类型),端点2(OUT Interrupt类型),端点3( IN Bulk类型),端点4(OUT Bulk类型),现在端点1、端点2和端点4都可以进行通信,但是唯独端点3无法发送数据,而且我看端点3的状态是端点3在收到IN指令包的时候FIFO为空,下面是我对FIFO进行分配的代码: HAL_PCD_SetRxFiFo(&hpcd_USB_OTG_HS, 0x100);//out端点好像是共用一个接收FIFO HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 0, 0x100);//IN端点0的发送FIFO HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 1, 0x100);//IN端点1的发送FIFO HAL_PCD_SetTxFiFo(&hpcd_USB_OTG_HS, 2, 0x100);//IN端点2的发送FIFO 同时我也打开了USB端点 USBD_LL_OpenEP(pdev, MSC_EPOUT1_ADDR, USBD_EP_TYPE_INTR, MSC_INTERRUPT_POINT_MAX); /* Open EP IN1 */ USBD_LL_OpenEP(pdev, MSC_EPIN1_ADDR, USBD_EP_TYPE_INTR, MSC_INTERRUPT_POINT_MAX); /* Open EP OUT2 */ USBD_LL_OpenEP(pdev, MSC_EPOUT2_ADDR, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET); /* Open EP IN2 */ USBD_LL_OpenEP(pdev, MSC_EPIN2_ADDR, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET); USBD_LL_PrepareReceive(pdev,MSC_EPOUT1_ADDR,EP1_DATA,16); 现在我就纳闷了,为什么我使用端点3发送数据,但是在接收到IN指令包的时候说我FIFO为空呢?是我的FIFO分配有误吗 |
没用过高速USB..看看 |
USB_CDC_HOST 标准库里边USBH_DeAllocate_AllChannel()函数的疑问?
STM32部署机器学习算法硬件至少要使用哪个系列的芯片?
重新配置SCB->VTOR = 0x08010000后,再次复位,程序异常,发现不进tick中断,IIC读数卡死在准备查询循环中。
STM32407 使用串口闲时中断+DMA方式接收最大接收字节是多少
uboot初始化IIC1,跳转到应用程序中后,先读一字节AT24C04的数据,然后初始化IIC1(未复位),再读一字节AT24C04时,有概率一直检测到IIC处于busy状态。
STM32F407的flash读写问题
keil调试阶段无法进行仿真,能进到仿真界面,但是无法执行程序,这个怎么解决?
STM32F4的IO口5V容忍问题
询问STM32F407两种USB可以实现的功能
TOF传感器(VL53L5),无法得到data ready