打印
[其他ST产品]

USB_OTG_FS虚拟串口,设备模式下 执行IN端点类中断的时候,进行发送的操作,是批量传输...

[复制链接]
339|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
内政奇才|  楼主 | 2022-11-21 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在407的虚拟串口程序中有看到,将端点配置为批量传输端点。
在IN端点类传输完成中断中调用函数USB_OTG_EPStartXfer中有2步骤操作,一是使能端点DIEPCTL的EPENA位,使能端点传输;二是 在判断为同步传输的情况下 执行发送数据USB_OTG_WritePacket函数 完成数据到DFIFO压栈操作发送数据。
据我后面的测试 注释掉同步传输代码,能正常IN数据返还。
那么的第一步操作 【使能端点的DIEPCTL寄存器,USB自动会发送IN数据吗??
没看到相关解释,这是硬件机制吗? 使能了端点传输,然后确定了此次传输的xfer的地址和传输大小。自动传输?
自动写入DFIFO  而不是调用USB_OTG_WritePacket函数写入DFIFO?
  • depctl.b.cnak = 1;
  •     depctl.b.epena = 1;//使能端点  启动数据发送 在这的数据也就直接发送 ,因为前面已经规划好此次IN传输的数据大小在DIEPCTL寄存器
  •     USB_OTG_WRITE_REG32(&pdev->regs.INEP_REGS[ep->num]->DIEPCTL, depctl.d32); //写到中断控制寄存器 使能端点x的中断控制寄存器
  •     //"应用程序将此位置 1 以在端点上启动数据发送。
  •     if (ep->type == EP_TYPE_ISOC)
  •     {
  •       USB_OTG_WritePacket(pdev, ep->xfer_buff, ep->num, ep->xfer_len);   //将ep->xfer_buff及其后cnt数据 给到发送DFIFO入栈
  •     }

复制代码


使用特权

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

本版积分规则

143

主题

864

帖子

0

粉丝