AT89C51SND1芯片中自带的USB控制器做U盘。由于此芯片RAM只有2K,因此,我开了512个字节的缓冲区,每写满512字节,便向Flash中写。众所周知的原因,Flash必须整个Block先擦除,然后才写得上,于是我找了一个Block做缓存,先把这个缓冲Block擦干净,...
全文
回复(16) 2003-05-04 23:12 来自版块 - USB驱动开发
表情
cfqxd人家用的是专用控制器,内部带DMA的,你的51片内存储、读取太慢,要是用CPLD来做,速度肯定没问题(2009-09-13 12:56)
guo136我也在做,问题一样啊,那为大侠帮一下(2009-09-11 09:26)
wsqss2004Frank_wang: 你也在做89c51snd吗?有qq号没,我想和你交流一下!!!!! 我现在是在写的时候出现了这种情况。在写入时会莫名奇妙的增加64或128字节的0xff,代码如下(端点2out): for(R_count=0;R_count<511;) ...(2004-12-24 13:04)
lujunql不是片子的问题!程序中有些是需要用汇编写的!(2004-12-24 12:40)
zhwlu解决方案在这里: QQ:69695814 TEL:029-86510973(2004-12-24 10:34)
NewTech这是不会的,你算一下就明白了,usb的速度最快是1MB/s,所以在中断中使用的时间只占1/3的cpu时间,而且有2mscpu是在空等的,此外中断接受子程序要用汇编来写才够快!(2003-05-08 02:32)
frank_wang 编译器我用的是KEIL,应该还可以吧。  另外,你的8KRAM是单独加片子么,还是你的处理器里本来就带的有呀?我目前的设计不太允许再加RAM了。而我的芯片中仅有2KRAM 由于我已经将Block4以后的写请求直接写入而不予缓存,其实我想关键其实对于大文件...(2003-05-07 21:08)
NewTech忘记说一点了,现在市面上的优盘大多数采用专用的硬件控制器,所以读出的速度1M/s,写入800k/s(2003-05-07 20:03)
NewTech你可以在USB中断里接受数据,放到缓冲区里,在主程序里检测缓冲区数据的多少,大于一定的数值,就写入,再写之前判断是否为空的块,不是就要先擦除(这个时间大约2ms),按照500k/s的速度,缓冲区的大小差不多要8K byte。(2003-05-07 20:01)
NewTech你的这种做法应该没有什么问题啊,是不是你用的编译器的效率太低啊!(2003-05-07 19:57)

返回顶部