:写使能信号。在其上升沿时,命令、地址和数据锁存到相应的寄存器中。该信号与AT89C5131芯片的P3.6 信号连接。
:读使能信号。在其下降沿时,输出数据到I/O总线,同时,它还可以对内部数据地址进行累加。该信号与AT89C5131芯片的P3.7 信号连接。
CLE:命令锁存使能信号。当CLE为高电平时,命令在 上升沿通过I/O端口送入命令寄存器。该信号与AT89C5131芯片的P1.0引脚连接。
ALE:地址锁存使能信号。当ALE为高电平时,地址在 上升沿送入地址寄存器。该信号与AT89C5131芯片的P1.1引脚连接。
:片选信号。用于控制设备的选择。当设备忙时 为高电平而被忽略,当处于编程和擦除操作时设备不能回到备用状态。该信号与AT89C5131芯片的P1.2引脚连接。
R/ :准备好/忙输出。当它为低电平时,表示编程、擦除和随机读操作正在进行,在操作完成后返回高电平;当芯片没被选中或输出禁止时,其为高电平时。该信号与AT89C5131芯片的P1.3引脚连接。
3.固件设计实现
本文设计的USB移动存储设备采用Bulk-Only传输方式,遵循UFI命令规范。移动存储设备固件的主要功能是响应USB总线的各种标准请求,向主机返回设备的状态信息;同时,解析接收到的SCSI命令,进行相应的命令处理和数据读写操作。固件设计采用中断驱动,当AT89C5131从总线上接收到请求包时,通过调用相应的中断事件处理函数来实现,后台处理USB传输,从而保证了闪存的快速读写速率。主要中断事件有:
(1)主循环等待USB中断,设置相应标志位。移动存储设备插入主机后,主机向移动闪存的控制断点0发出标准请求,固件进入标准请求处理函数,设备回送给主机所要求的相应描述符,调用相关驱动程序。
(2)当USB主机通过Bulk-In端口读取闪存数据后,产生Bulk-In端口中断。
(3)当AT89C5131通过Bulk-Out端口接收到主机发送的命令字CBW后,触发Bulk-Out端口中断。
3.1 响应USB总线标准请求
当USB移动存储设备接入主机后,USB主机控制器对设备进行总线枚举过程,首先向设备发送标准USB请求GET_DESCRIPTOR来获得最大数据包长度;接着发出SET ADDRESS请求,为设备分配地址;使用新分配的地址再次发出GET_DESCRIPTOR请求,读取设备的配置信息[4],如设备描述符、配置描述符、接口描述符、端口描述符和字符串描述符等,并选择合适的驱动程序;最后,发出SET CONFIGURATION请求配置端口属性。