本项目是以SPI Flash(如W25Q128等)存储元件作为存储单元,MCU主控完成USB接口通信并根据SCSI协议实现U盘功能。其结构如下图所示:
SPI Flash部分移植
SPI功能部分相对简单,ACM32F403的接口引脚和STM32F103的相同,可直接对接,按照ACM32F403的说明对SPI接口进行初始化,并对底层读写函数进行更改即可。
USB部分移植
1. STM32F103代码结构
在ST的芯片上,USB的数据是由两个中断,USB_LP_CAN1_RX0_IRQHandler和USB_HP_CAN1_TX_IRQHandler来进行,其中高优先级中断(USB_HP_CAN1_TX_IRQHandler)用于处理同步(Isochronous)模式传输或双缓冲块(Bulk)传输模式下的正确传输事件,而低优先级中断(USB_LP_CAN1_RX0_IRQHandler)用于处理其他传输时间。ST的USB数据处理如下图所示:
由于USBFS协议的限制,一包数据中最多可携带64字节数据,因此,当存在大量数据需要进行传输(IN