STC8单片机硬件SPI通信例程W25Q16
2022-08-02 来源:csdn
SPI全双工通信使用起来相当方便,最常见的是W25Q16存储颗粒的使用了,当重新上电时,存储再W25Q16中的数据不会丢失,仍然可以读取出来,下面就简单讲一下如何使用W25Q16存储芯片。
本篇讲的是使用硬件SPI让单片机和W25Q16进行通信,模拟SPI通信将会在下一篇讲。使用W25Q16的步骤如下:
1.配置与SPI有关的寄存器
SPI的数据寄存器配置起来很简单,清零即可。
SPI的状态寄存器,SPI的中断标志位SPIF和写冲突标志位WCOL都需要写1清0,即将SPIF,WCOL位都置1即可。
SPI的控制寄存器,设置主机模式时,将SSIG和MSTR位都置1即可,使能SPI将SPEN位置1即可,相位和极性的配置在这里默认就是正确的,因此不用再去配置了。
2.寄存器配置成功后,就可以开始写驱动了,最主要的就是这两个了,最后会上传所有代码,在这里就不多贴了。
//发送一个字节
void spi_sendbyte(unsigned char dat)
{
SPDAT = dat;
while(!(SPSTAT & 0X80)); //等待数据发送完成
SPSTAT = 0XC0; //写1清零
}
//接收一个字节
unsigned char spi_readbyte()
{
spi_sendbyte(DUMMY);
return SPDAT;
}
3.驱动有了,就可以先测试一下写的程序是否正确,在W25Q16的手册中有一个读取ID号的指令(0X9F),如何读取成功,W25Q16会返回给你3个字节,分别是 EF 40 15(注意都是十六进制),如何能够成功读取到ID号的话,说明你的程序是正确的,就可以进行其他读写操作了。需要注意的是,不同型号的W25X系列芯片的ID号是不同的,需要查他们的芯片手册才可以知道,比如
型号 序列号
W25X16 3015
W25X32 3016
W25X64 3017
W25Q80 4014
W25Q16 4015
W25Q32 4016