基于OHCI的USB主机 —— 寄存器(传输)
2009-11-23 17:10
567 查看
启动控制传输
进行控制传输之前,需要设置好相应的ED和TD参数(参见下一章),启动传输时需要设置OHCI寄存器中的控制传输ED头指针寄存器和控制传输的当前ED指针寄存器,然后设置控制寄存器允许处理控制传输列表,控制状态寄存器有控制传输列表数据需要传输,代码如下:[align=left]/**[/align] [align=left] * 通过Control端口传输数据[/align] [align=left] * @param *ed 需要进行数据收发的ED指针[/align] [align=left] * @return 0 - 成功[/align] [align=left] */[/align] [align=left]short ohciCtrlXfer(AT91S_UHP_ED *ed)[/align] [align=left]{[/align] // Programming the CHED [align=left] pUhp->UHP_HcControlHeadED = (unsigned int) ed;[/align] [align=left] [/align] // Programming the CCED [align=left] pUhp->UHP_HcControlCurrentED = (unsigned int) ed;[/align] [align=left] [/align] // UHP: UHP is now operational and control list processing is enabled [align=left] pUhp->UHP_HcControl = 0x90;[/align] [align=left] [/align] // UHP: Notify the Hc that the Control list is filled pUhp->UHP_HcCommandStatus = OHCI_HC_COMMAND_STATUS_CLF; [align=left] [/align] [align=left] return 0;[/align] [align=left]}[/align] |
启动批量传输
启动批量传输的流程与控制传输类似,只不过相应寄存器换为批量传输的寄存器了:[align=left]/**[/align] [align=left] * 通过Bulk端口传输数据[/align] [align=left] * @param *ed 需要进行数据收发的ED指针[/align] [align=left] * @return 0 - 成功[/align] [align=left] */[/align] [align=left]short ohciBulkXfer(AT91S_UHP_ED *ed)[/align] [align=left]{[/align] [align=left] // 禁止ED[/align] [align=left] pUhp->UHP_HcControl = 0x180;[/align] [align=left] pUhp->UHP_HcCommandStatus = 0x00;[/align] [align=left] [/align] // Programming the BHED [align=left] pUhp->UHP_HcBulkHeadED = (unsigned int) ed;[/align] [align=left] [/align] // Programming the BCED [align=left] pUhp->UHP_HcBulkCurrentED = (unsigned int) ed;[/align] [align=left] [/align] // UHP: UHP is now operational and control list processing is enabled [align=left] pUhp->UHP_HcControl = 0x0A0;[/align] [align=left] [/align] // UHP: Notify the Hc that the Bulk list is filled pUhp->UHP_HcCommandStatus = OHCI_HC_COMMAND_STATUS_BLF; [align=left] [/align] [align=left] return 0;[/align] [align=left]}[/align] |
相关文章推荐
- 2.3 基于OHCI的USB主机 —— 寄存器(传输)
- 基于OHCI的USB主机 —— 寄存器(传输)
- 基于OHCI的USB主机 —— OHCI(传输描述符)
- 基于OHCI的USB主机 —— 寄存器(设备连接)
- 3.2 基于OHCI的USB主机 —— OHCI(传输描述符)
- 基于OHCI的USB主机 —— 寄存器(其它)
- 基于OHCI的USB主机 —— 寄存器(复位)
- 2.1 基于OHCI的USB主机 —— 寄存器层(说明)
- 基于OHCI的USB主机 —— 中断寄存器初始化
- 基于OHCI的USB主机 —— 寄存器(设备连接)
- 2.2 基于OHCI的USB主机 —— 寄存器(初始化)
- 基于OHCI的USB主机 —— 寄存器(其它)
- 3.15 基于OHCI的USB主机 —— 中断寄存器初始化
- 基于OHCI的USB主机 —— 寄存器层(说明)
- 基于OHCI的USB主机 —— 寄存器层(说明)
- 2.4基于OHCI的USB主机 —— 寄存器(复位)
- 基于OHCI的USB主机 —— 寄存器(复位)
- 基于OHCI的USB主机 —— 寄存器(初始化)
- 2.5 基于OHCI的USB主机 —— 寄存器(设备连接)
- 基于OHCI的USB主机 —— 寄存器层(说明)