1. 之前接触到GD25Q64芯片,只做了基本的应用,就是读取芯片的ID。使用硬件SPI要更加方便
下面是硬件SPI的代码,对SPI做了初始化,写了一个SPI读写函数
#include "gd25q64.h"
/* 硬件SPI初始化设置 */
void SPI_Init(void)
{
/* SPI口配置 */
// 把SPI口映射到P4口
P_SW1 &= ~(1<<2); // bit2写0
P_SW1 |= (1<<3); // bit3写1
SPCTL = 0xD0; // 1101 0000 使能SPI主机模式 数据高位在前 模式0 主频是35MHz/4=8.75MHz
SPSTAT = 0xC0; //清中断标志
}
/* SPI读写函数
byte:要写的数据
返回值:读出的数据*/
unsigned char SPI_RW(unsigned char byte)
{
SPDAT = byte; //发送测试数据
while (!(SPSTAT & 0x80)); //查询完成标志
SPSTAT = 0xc0; //清中断标志
return SPDAT;
}
2.在字库存储的应用中,就应用到了GD25Q64芯片的存储功能。
下面的函数是分为三类:
① 组成其他函数的基本函数,读取GD25Q64状态,写使能,等待空闲
②擦除芯片,最小的是扇区,中间是块,最大直接格式化整个芯片
③按位置读写数据
对照.h文件中的定义
//指令表
#define GD25Q_WriteEnable 0x06
#define GD25Q_WriteDisable 0x04
#define GD25Q_ReadStatusReg 0x05
#define GD25Q_WriteStatusReg 0x01
#define GD25Q_ReadData 0x03
#define GD25Q_FastReadData 0x0B
#define GD25Q_FastReadDual 0x3B
#define GD25Q_PageProgram 0x02
#define GD25Q_BlockEras