NUC505的USB驱动算是简单的了,datasheet Rev1.03也写得蛮清楚,不过还是有些错漏。例如EPxINTEN这个寄存器中的RXPKIEN和TXPKIEN似乎解释反了。
不过这里目的主要不是描述错漏,而是记录一些发送接受应该判断的中断信号,以及应该修改打开的中断。
需要打开的中断(采用BSPV3.00的情况下)
1. 总中断:
1)USBD_GINTEN_USBIEN_Msk总中断
2)USBD_GINTEN_CEPIEN_Msk控制端点的中断
3)USBD_GINTEN_EPAIEN_MskEPA,EPx的中断,需要用几个就打开几个
2. 对于ISO IN端点
1) USBD_EPINTEN_TXPKIEN_Msk 发送完成中断
2) USBD_BUSINTEN_DMADONEIEN_MskBUS中断中的DMA完成中断
3. 对于ISO OUT端点
1)USBD_EPINTEN_RXPKIEN_Msk接收完成中断
2)USBD_EPINTEN_SHORTRXIEN_Msk接收未完整包的中断
4. 对于Interrupt IN 端点
1) USBD_EPINTEN_TXPKIEN_Msk发送完成中断
2) USBD_EPINTEN_SHORTTXIEN_Msk发送未完整包中断
3) USBD_EPINTEN_INTKIEN_Msk IN Token中断(一般用这个也行)
5. 对于Interrupt OUT端点
1) USBD_EPINTEN_RXPKIEN_Msk 接收完成中断