主控器和存储器的组合,是任何嵌入式系统的最简单构成,就像电脑的CPU和硬盘一样。
在嵌入式系统平常运行过程中,主控器和存储器之间的通信是非常频繁的,要想产品稳定,掌握存储器的读写规范最为基本也最为重要,一旦数据出错,会让主控器产生错误的判断,而导致系统紊乱。
下面以SPI Flash为例,从编程器设计者的角度,把如何更好的运用存储器的几个关键点做一些剖析,供大家在设计的时候参考:
一、封装:
芯片的所有使用细节都会在它的官方器件手册有具体说明(除了有些厂商芯片资料不公开)。所以使用一个芯片之前,第一件事就是要学会把它的器件手册上有用的内容进行提取。封装一般是关注的第一点,它涉及到电路板的整体布线,通常SPI NorFlash都是采用SOP8这种封装。
二、读写时序
主控器连接的脚位是否都用来编程呢?不是,在此,通过CS#、SCLK、SI这三个重要管脚重点介绍一下写操作,芯片操作时序图如下:
①、当我们要写指令字,需要把CS置为“0”,然后将数据送到数据输入脚SI,给一个8位时钟。
②、当我们要写入数据字,需要把CS置为“0”,然后发一个地址,将数据送到数据输入脚SI,同样,也是给一个8位时钟。
③、注意时间轴,如果没有标明,那么从左往右为时间正向轴,上图分为2部分,上面一部分是接着下面一部分。
④、需要释放注意的是,时序图里各个引脚的电平变化,基于的时间紧轴是一致的。一定要严格按照时间轴的增长方向来仔细地观察时序图,要让主控器的控制口线严格遵守时序图的变化。
所有的主控器都需遵循芯片本身的时序规则,不然就无法对芯片进行读写操作。当然编程器也必须符合这种规律,但编程器的读写速度肯定比嵌入式主控器效率要高。下面一组图是SmartPRO 6000F-PLUS编程器与嵌入式主控器对Flash的读写效率对比,实测了两款比较大容量的SPI Flash芯片进行比较,结果见下图。
烧录器速度快就是因为他有专门的口线来产生时序,完全满足芯片的时序。而嵌入式系统的总线总是很繁忙,总线的资源没有全部利用来产生读写时序,读写速度肯定慢下来了。两种方法,都是把数据准确无误的写入到芯片当中,只是效率不同而已。