图3中信号clk_50M为全局时钟;ISP_Rst为芯片的复位信号;ISP_CS,ISP_WR,ISP_RD分别为ISPl362的片选信号、读信号、写信号,均为低电平有效;ISP_Al为模式选择信号,当其值为1时,芯片工作于设备控制器模式,为O时芯片工作于主机控制器模式;ISP_A0为高时对应的ISP_Data为DC的初始化命令,当ISP_AO为低时对应的ISP_Data为写入相应寄存器的配置值。
2.2设备接收请求
主机的每次请求,都是将请求以setup包的形式发送到out端点的out缓冲区。当out缓冲区接收到数据时,芯片的INT2管脚将会有中断产生。在模式寄存器、硬件配置寄存器、中断使能寄存器正确配置之后,当有中断事件产生时,ISP1362内部的SIE就能够检测到中断,并置中断寄存器的相应位为高电平。固件通过读取并分析中断寄存器的值来判断中断类型,再进行中断事件的处理。
固件首先检测到的是out中断。这是因为在上电复位以后,主机就向out缓冲区发第一个setup请求包。当接收到out中断时,固件首先读取out端点的端点状态寄存器将中断清除,以便于芯片接收其他的中断。接着固件再根据端点状态寄存器的值判断out缓冲区内是否含有setup包,然后固件读取out缓冲区。
根据out缓冲区的内容判断是何种请求,再决定做何响应。in中断的产生不同于out中断。in中断是在in缓冲区由空变满之后才产生的,in中断的产生需要固件进行写in缓冲区的操作。换而言之,是写in缓冲区的操作引发了in中断的产生,而不是in中断的产生引发了写缓冲区的操作。当固件检测到in中断时,同样要通过读in端点的端点状态寄存器将中断清除。