我打算用内部FLASH模拟U盘空间。
内部FLASH的操作是没有问题的,读写都很正常。
但是在USB驱动函数下,添加FLASH操作函数后,在PC端会出现无法格式化U盘。但是我用内存作为存储空间,则能进行格式化。参照
http://www.openedv.com/thread-76304-1-1.html
是我的操作不对么?
下面是我的操作函数。
int8_t STORAGE_Read_FS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 6 */
blk_addr+=FLASH_USER_START_ADDR;
uint32_t n;
for(n=0;n<blk_len;n++)
{
Flash_Read_Sector(blk_addr,buf,STORAGE_BLK_SIZ);
blk_addr+=512;
buf+=512;
}
return (USBD_OK);
/* USER CODE END 6 */
}
int8_t STORAGE_Write_FS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 7 */
blk_addr+=FLASH_USER_START_ADDR;
uint32_t n;
for(n=0;n<blk_len;n++)
{
Flash_Write_Sector(blk_addr,buf,STORAGE_BLK_SIZ);
blk_addr+=512;
buf+=512;
}
return (USBD_OK);
/* USER CODE END 7 */
}
原子哥,您好,我用429IGT6内部SRAM模拟U盘空间,设定了几种扇区大小:(1)扇区512字节,200个扇区;(2)扇区1K,100个扇区;(3)扇区2K,50个扇区;(4)扇区4K,20个扇区;(5)扇区8K,10个扇区。5种情况均下载测试,只有(1)~(4)可以正常模拟U盘功能,第(5)种情况下,插入之后双击就是“请将磁盘插入“可移动硬盘(F)””。。。是不是可以初步认为是USB驱动程序格式化最大支持4K的扇区操作???而429IGT6内部flash扇区是16K、64K、128K。那是不是修改USB驱动程序,可以实现最大支持格式化128K扇区的操作,从而实现429内部FLASH模拟U盘的功能???
还请原子哥抽时间分析、指导下!谢谢
16K和32K我也试过了,用内部SRAM模拟U盘,设置(1)4个扇区,每个扇区16K;(2)2个扇区,每个扇区32K;不行,无法格式化
一周热门 更多>