你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F429 DISCOVERY USB通信

[复制链接]
技术宅男250 提问时间:2015-7-12 23:40 /
最近在弄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分配有误吗



收藏 评论1 发布时间:2015-7-12 23:40

举报

1个回答
mark0668 回答时间:2015-7-12 23:42:40
没用过高速USB..看看
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版