HCCA
HCCA是256字节的内存结构,系统软件用来与HC发送或接受特殊控制和状态信息。256字节对齐。HC寄存器中的HcHCCA指向HCCA。
HccaInterruptTable为32个周期表的头指针数组。每帧HC仅访问该表一次。当前帧号的低5位用来索引。
HccaFramNumber HC每帧会更新该16位的值。在新帧,HC发SOF后,HC读一个ED开始处理之前,该值写为HcFmNumber的StartingFrame域。在SOF和更新该值之间,HC不在USB上传输任何数据。
HccaDoneHead周期性地,HC将HcDoneHead的值写到HccaDoneHead中,那么主机软件就可以处理完成的TD了。当延迟计数器为0,会在一帧的开始HcDoneHead写入内存。写完后,HC设值HcDoneHead=0,且设置WD位。写完后,HC可以开始建立新的完成队列,但是它不能讲其写往内存,除非HCD已经清楚了WD位。
该值的LSb用来表明中断情况。来自于HC的中断,HCD检查HccaDoneHead值,若为0该值不是HccaDoneHead更新导致的,需要检查HcInterruptStatus寄存器进一步确定是哪一个引起的。若不为0,是由HccaDoneHead更新引起的,但是如果此时LSb也不为0,那么一个另外的中断也产生了,需要检查中断状态寄存器来确定。