AI生成NFT艺术:从技术搭建到版权确认全流程
2026/1/8 20:43:43
| STM32F407 | USB3300 | 说明 |
|---|---|---|
| OTG_HS_ULPI_CK | CK | 60 MHz 时钟 |
| OTG_HS_ULPI_D0…D7 | D0…D7 | 8 位数据 |
| OTG_HS_ULPI_DIR | DIR | 方向信号 |
| OTG_HS_ULPI_NXT | NXT | 下一字节 |
| OTG_HS_ULPI_STP | STP | 停止信号 |
| VBUS | 5 V | 主机供电(P-MOS 开关) |
| GND | GND | 共地 |
注意:USB3300 必须 3.3 V 供电,60 MHz 晶振 + 18 pF 起振电容
/* usbd_diskio.c 已由 CubeMX 生成,直接调用 USBH_MSC_Read/Write */#include"usbh_msc.h"externUSBH_HandleTypeDef hUsbHostFS;DSTATUSUSBH_disk_initialize(BYTE pdrv){return(USBH_MSC_UnitIsReady(&hUsbHostFS,pdrv))?RES_OK:RES_NOTRDY;}DRESULTUSBH_disk_read(BYTE pdrv,BYTE*buff,DWORD sector,UINT count){return(USBH_MSC_Read(&hUsbHostFS,pdrv,sector,buff,count)==USBH_OK)?RES_OK:RES_ERROR;}DRESULTUSBH_disk_write(BYTE pdrv,constBYTE*buff,DWORD sector,UINT count){return(USBH_MSC_Write(&hUsbHostFS,pdrv,sector,(BYTE*)buff,count)==USBH_OK)?RES_OK:RES_ERROR;}#include"fatfs.h"#include"usbh_msc.h"#defineBLOCK_SIZE512#defineBLOCK_COUNT2000// 1 MB 测试uint8_tbuf_tx[BLOCK_SIZE];uint8_tbuf_rx[BLOCK_SIZE];voidUSB_Test_MultiBlock(void){FRESULT res;UINT bw,br;DWORD block_addr=1000;// 避开前 1 MB// 填充测试数据for(uint16_ti=0;i<BLOCK_SIZE;i++)buf_tx[i]=i&0xFF;// 多扇区写res=f_write(&file,buf_tx,BLOCK_SIZE*BLOCK_COUNT,&bw);if(res!=FR_OK)printf("Write ERR %d\n",res);// 多扇区读res=f_read(&file,buf_rx,BLOCK_SIZE*BLOCK_COUNT,&br);if(res!=FR_OK)printf("Read ERR %d\n",res);// 校验if(memcmp(buf_tx,buf_rx,BLOCK_SIZE*BLOCK_COUNT)==0)printf("Multi-block OK, %u KB\\n",BLOCK_COUNT/2);elseprintf("Data mismatch\\n");}参考代码 stm32f407+usb3300-实现大容量u盘读写 www.youwenfan.com/contentcsp/51706.html
U 盘容量:32 GB 读速度:14.4 MB/s(Class-10) 写速度:10.6 MB/s(Class-10) 多扇区 2000×512 B:0.8 s(1 MB)