打印

STM32F105的USB 通道中止

[复制链接]
1930|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jleige|  楼主 | 2010-12-11 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中止通道
      应用程序可以通过设置OTG_FS_HCCHARx寄存器的CHDIS和CHENA位为’1’来中止任何一个通道。这个操作将使OTG_FS主机控制器清除已递交的传输请求(如果存在的话),并产生一个通道中止中断。应用程序需要在重新分配此通道用于其他通讯前,等待OTG_FS_HCINTx寄存器的CHH位为’1’(指示此通道已中止)。OTG_FS的主机控制器不能打断已经开始的USB总线上的传输。
     在中止通道前,应用程序需要确认在非周期性请求队列(中止的是非周期性通道时)、或周期性请求队列(中止的是周期性通道时)中至少有一个剩余空间。在请求队列已满时(执行通道中止操作前),可以通过写OTG_FS_HCCHARx寄存器的CHDIS位为’1’并等待CHENA位变为’0’,来清除已递交的传输请求。

请问这个是这么设置吗?我的怎么进不去通道禁止中断的。程序如下:
           USB_OTG_HcHalt(&pdev , 1);  //停止通道           
          np_rx_sts0 = pdev.regs.common_regs->np_tx_sts; //标志位 无用
          while(OTG_FS_HCINT_Status(1 , CHH) == CLEAR);
是这么设置否?
沙发
simple_head| | 2010-12-12 12:02 | 只看该作者
你翻译的非常准确!
这段话写的非常不容易理解。我对这段话揣测了很长时间,我的理解是:

1. 设CHDIS为1且CHENA为1来终止一个通道。
2. 设CHDIS为1且CHENA为0来清空请求队列。
3. 在终止一个通道之前,必须清空请求队列。

你分析一下我说的对不?如果你认同,按照这个思路再调你的程序。

使用特权

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

本版积分规则

28

主题

69

帖子

1

粉丝