flash大小为1MB,spi接口通信;MCU挂载了两个从设备另一个是eeprom。
在spi层做了一个防止片选脚竞争的互斥变量。
读取指令在本次调试过程中未遇到特别的问题。主要是写数据的时候出现较多的问题:
1、向flash发送指令后,需要拉高片选释放spi总线,这个时候发送的指令才能生效:示例,写flash数据前,需要发送一个写使能的指令,发送完写使能指令后,不可立即进行写数据操作。必须拉高完spi的片选后,再次拉低才可以写数据。
2、flash写数据:最大只能写入一页数据(256Byte,我这边的flash是最大只能写这么多,其他的没有了解太多);写10个字节也可以,但是这里有个点需要注意,单次写入的地址加数据长度不可跨页,否则数据将会写到本页开始的地方。示例:若本页仅可以写入9个字节,而应用层需要写入10个字节,则需要分两次写,第一次写9个字节(第一页),第二次写一个字节(第二页)。写完数据,需要拉高片选脚,这时flash才真正的将数据写到flash的存储介质中,之前都是缓存在flash控制器的缓冲区中。
擦除指令发送后亦要拉高片选,芯片才会执行擦除指令。
以上是本人遇到的flash处理问题,仅供各位参考。