本帖最后由 rain_noise 于 2015-4-3 17:06 编辑
1. 简介
1.1 芯片简介
LPC1768是NXP推出的高性能Coterx-M3芯片,最大主频为100MHz。
N25Q256A是Micron(美国镁光)公司推出的一款256Mbit的串行Flash,容量大,读写速度快,最大可支持108M的读写速度。
1.2 连接方式
LPC1768通过SPI接口与N25Q256连接,其中P1.18、P1.21为片选端,P1.20为SCK0,P1.23为MISO0,P1.24为MOSI0。
图1 LPC1768与N25Q256的连接图
1.3 寻址方式
N25Q256是由两片128Mbit存储单元叠加而成。支持3字节地址读写方式,最大寻址为128MBit。默认使用的是Lower 128Mbit。如果要想使用Upper 128MBit,则需要使用WRITE EXTENDED ADDRESS REGISTER控制命令修改。
图2 N25Q256内存分布图
2 函数介绍
2.1. 初始化SPI_FLASH_Init
该函数主要是初始化SSP0控制引脚的复用功能,设定SSP为主控制器模式,设定SSP0运行的时钟频率。测试时使用的频率是25M。
图3 SPI_FLASH_Init函数
2.2 读函数SSTF016B_RD
N25Q256支持READ、FAST READ、DUAL OUTPUT FAST READ、DUAL INPUT/OUTPUT FAST READ、QUAD OUTPUT FAST READ、QUAD INPUT/OUTPUT FAST READ等多种读取方式,函数使用的指令是FAST READ(0x0B)指令。
图4 SSTF016B_RD函数
2.3 写函数SSTF016B_WR
使用PAGE PROGRAM指令写入数据。在使用写函数指令之前,必须先发送WRITE ENABLE指令才能进行写入操作。
图5 SSTF016B_WR函数
2.4 擦除函数
N25Q256支持3种擦除方式,分别是SubSector(4KB)、Sector(64KB)和BULK(全片擦除)。可根据待擦除的SubSector数目选择最快的擦除方式。
图6 SSTF016B_Erase函数
3 测试
N25Q256A共有0x400个Sector,分别对其进行擦除、读取、写入、读取的方式进行验证,测试流程如图7所示。
图7 测试流程图
测试代码:
图8 测试代码
测试结果如图9、图10所示。符合预期。
图9擦除之后的读取结果
图10 写数据之后的读取结果
LPC1768读写两片N25Q256A的原理与实现.pdf
(843.34 KB, 下载次数: 136)