3.15 基于OHCI的USB主机 —— 中断寄存器初始化

来源:互联网 发布:python list 遍历 编辑:程序博客网 时间:2024/05/19 15:20
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lancelot.blog.51cto.com/393579/261074
 
在AM9200中,中断寄存器分为2个层次,一个是用来设置某个功能允许哪些中断产生,另一个是AIC中断寄存器,用来设置是否允许该功能产生中断。当AIC对应的中断产生时,需要读取相应功能的中断状态寄存器,以判断产生中断的具体原因。
 
对于USB接口,首先需要设置UHP_HcInterruptEnable和UHP_HcInterruptStatus寄存器(关于这两个寄存器的功能,请参见OHCI规范)。这两个寄存器属于USB功能寄存器,确定允许哪些USB中断。代码如下:
//设置USB Host中断寄存器
pUhp->UHP_HcInterruptEnable =  OHCI_HC_INTR_MIE |
                                OHCI_HC_INTR_RHSC |
                                OHCI_HC_INTR_UE |
                                OHCI_HC_INTR_WDH |
                                OHCI_HC_INTR_FNO;
pUhp->UHP_HcInterruptStatus =  OHCI_HC_INTR_RHSC |
                                OHCI_HC_INTR_UE |
                                OHCI_HC_INTR_WDH |
                                OHCI_HC_INTR_FNO;
//设置AIC中断信息
AT91F_AIC_ConfigureIt(  AT91C_BASE_AIC,
                         AT91C_ID_UHP,//AT91C_ID_TC1,
                         AT91C_AIC_PRIOR_HIGHEST,
                         AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED,                                        AT91F_ASM_UHP_Handler);
AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_UHP);