首先拿到一颗芯片首先要获取它的数据手册,一般来讲获取手册的方法就是搜索立创,然后寻找你需要的芯片,这里不在过多的赘述。
作为嵌入式工程师,通常会遇到一般分为两种情况,一种就是自己需要设计板子,完成硬件和软件搭建,另一种则是硬件已经固定好,需要去搭建驱动。两种皆需要熟读手册,根据自身的资源条件进行设计,时钟速率,模式选择,如何布局等待,另一种则是根据手册需要知道现在的硬件是选择的什么模式,不过两者都需要确认模式是否正确,如何使能,否则皆是竹篮打水一场空。
进入正题,如何操作,首先我们看手册是非常繁琐的,那么第一步就是先将已有的条件(手册)输入给AI,输入你想完成的任务,如何读flash,写flash,基础的了解,可能就会给你说因为你这芯片容量很大,超越了3地址模式,所有如果你想使用所有的内存,必须转换为4地址模式等等,这样起码能够避免60%70%问题。
好了我们开始看手册,手册如何看第一就是时序,我们首先就是要知道如果我要写flash,那么你支持的传输速率最大最小支持多大,传输帧与帧之间的间隔需要多久(CS低,CS高,CS低),传输字节之间允许你传输的最大间隔多长,多久会视为掉线,对于裸机来说,这个可太重要了,系统的轮询是需要时间的,阻塞传输的话严重影响通信效率,非阻塞的那就需要考虑你这个传输会不会断了。
进入到flash手册,模式你们自己去选择,首先我们会看到指令码介绍,然后加时序图,我们要根据自己选择的模式一个一个看过去,你得到了你想要的指令,不重视状态寄存器的话,那么我可以很负责的告诉你状态寄存器也是非常重要的,在独自测试flash时,可能会遇到一次写成功多次写失败,明明程序都一样啊,那么毫无疑问就是状态寄存器的问题,flash属于内部编程,你32或dsp使用dma传输的速度是很快的,如果你在状态寄存器未完成还处于繁忙状态时,中断接收拉高cs信号,那么毫无疑问你会失败,单次测试你会成功,这个问题如果不加逻辑分析仪是难以发现的,因为你单次发送成功了,但是第二次就失败,毫无疑问就是状态寄存器的原因,逻辑问题,你需要检测,另外,在测试时,只有while(1)使用测试平台时,dma传输一定要加延迟,并且检测状态寄存器,而且写之后需要擦除的。
flash是一个很简单的器件,状态寄存器检测一定不能忘。