STC8单片机硬件SPI通信例程W25Q16

        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

        讲的比较简单,有什么不懂的地方可以在下方留言;有什么不对的地方,大家可以指出来,希望可以共同进步。全部代码已上传。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值