我用CH375的Device方式做优盘,选择外置固件模式,采用BUlK-Only和UFI协议,现在发现优盘数据读取没有问题,而写入时速度非常慢,文件稍微大一点就会出错无法写入,用BUS HOUND监测,发现写一个8K的文件,光从PC接受4096个字节的数据就用了将近1秒钟,写入之后总共耗时2.3秒,这种现象是不是有问题?怎么解决?有哪些因素会 影响U盘的写入速度?
你每次下传的数据都是满包64字节的数据吗?还有就是和你的程序的优化也有关系,前面的如果不是满包的话,速度会降很多。
是的,都是每64个满包接收,达到512字节之后再写FLASH扇区. 问题是4096个字节按每次64字节接收,不写入flash只接受都花了984ms!
这个肯定和你的程序有关系,拿51单片机来说,24M晶振,传输4096个字节的时间在20MS左右,也就是说传输的速度在200K字节/S。
case 0x2a://Write LCD_Clear(); LCD_GotoXY(32,0); LCD_DispStr("Write "); RequestSense[2]=0x00; add=add+(uint32)buf[17]<<24;//逻辑扇区号 add=add+(uint32)buf[18]<<16; add=add+(uint32)buf[19]<<8; add=add+(uint32)buf[20];
templen=0; templen=templen+(uint16)buf[22]<<8; templen=templen+(uint16)buf[23]; templen=templen*512; i=0; sum=0; while(sum { USB_COMW(CMD_RD_USB_DATA); length=USB_DATR(); sum=sum+length; if(length>0) { for(len=0;len!=length;len++) buffer[64*i+len]=USB_DATR(); i++; } DelayMS(10); if((sum%512)==0) { parameter.SectorIndex = add; parameter.RsvdForLow =0x01; parameter.Buf = buffer; // FlashCommand(DISK_SECTOR_WRITE, ¶meter); add++; i=0; } }
break; 这是我处理写命令的程序段,帮我看看有没有什么问题? 还有,我的晶振是12M,这个有没有什么影响?
速度慢的问题已经基本解决,现在发现不能写入word文档,Excel和文本文件可以写入,这是为什么?
怎么解决的,说来听听