
首先Flash芯片要求在修改一个Cell中的位的时候,在修改之前,必须先Erase即擦除掉这个Cell。Erase完成之后,Cell中全为1,然后再写入数据。
写入时,当某个Cell的数据位恰好为1,这个Cell的电路就不做任何动作;如果遇到待写入某个Cell的数据位为0,电路将对应Cell的字线电压提高到足以让电子穿过绝缘体的高度,这个电压被加到Control Gate上,从而对Cell中的FG进行充电,Cell的状态从1变为0,完成了写入,这个写0的动作又叫做“Programm”。由于Flash的最常见表现形式——EPRROM一般是只读的,但是一旦要将其中的程序更改,则需要重新写入新程序,即Re-Programm,所以就顺便将写入Flash的过程叫做Programm了。一块崭新的SSD上所有Cell都是已经被Erase好的,也可以使用特殊的程序对整个SSD重新整盘Erase。
首先你先要折算一下两边的速率。串口的实际速率(有效数据,也就是你所需要的数据)例如波特率9600,一位起始位,一位停止位,8位数据,无校验的情况下,那么你的传输速率是960B/s(注意:字节不是位了)那么你要知道FLASH中的传输的速率是多少。去掉指令。实际有效传输速率是多少。datasheet里面肯定有。
如果说串口数据有效速率>flash的读写有效速率。那么这个设计本身就是错误的。(哈哈。基本不可能啦。而且串口速率可设。)
串口数据有效速率<flash的有效速率。那么可以用一个FIFO缓存一下。发完指令以后读取数据。不过这个是要注意格式的。
其中牵扯到的时序概念这里就不详述了。
简单流程,串口输入数据,串并转换后控制FIFO的写部分。利用FIFO的空信号指示FLASH读写模块的工作。然后么当发完指令以后FLASH从FIFO里面读取数据。这样就搞定了~
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)