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

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

STC8单片机硬件SPI通信例程W25Q16相关推荐

  1. 【GD32F427开发板试用】硬件SPI通信驱动CH376芯片,用单片机实现U盘数据下载

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:周文杰 SPI通信作为单片机多种基础数据传输模式中的一种,驱动外部芯片CH376实现数据 ...

  2. t12电烙铁c语言程序,T12白光烙铁固件源码(天山V1.2 51单片机硬件SPI LED支持3芯手柄)...

    /********************************************************************************* * COPYRIGHT NOTIC ...

  3. STM8使用SPI通信需要注意的几个问题

    概述: 在使用STM8L101F3单片机,SPI通信读取三轴传感器ADXL362数据时,出现了一系列的问题,在这里做个笔记,也希望可以给大家一个小的参考. 问题一: 在SPI初始化过程中,没有初始化M ...

  4. STC8单片机OLED通过SPI硬件中断方式驱动——优化

    #include <STC8.H> #include "SPI.h" #include "oled.h" #include "oledfo ...

  5. STM8L151 使用硬件SPI驱动W25Q16 Flash

    SPI:有四根线的串行通信协议,允许与其他设备以半.全双工.同步.串行方式通信. MISO:主模式输入.从模式输出线 MOSI:主模式输出.从模式输入线 CLK:时钟线 NSS:从设备选择引脚,主设备 ...

  6. STC8系列单片机硬件I2C使用教程(二)

    硬件I2C(中断方式)以STC8F2K08S2单片机为例 一.I2C相关的寄存器 二.I2C中断相关的寄存器 ① I2C中断源 ② I2C中断允许位 ③ I2C中断标志位 三.程序编写 ① 寄存器和相 ...

  7. TLE5012B ESP32驱动程序、硬件电路设计、4线SPI通信,驱动完美兼容4线SPI不用改MOSI开漏推挽输出

    一.TLE5012B 简介 TLE5012B 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行角度测量. 它通过使用单片集成 巨磁阻 (iGMR) 元件,来测量正弦和余弦角分量,这些原 ...

  8. AS5047P磁编码器ESP32驱动程序、硬件电路设计、SPI通信时序、逻辑波形分析、注意事项

    1.AS5047P硬件设计 1.1 简介.性能参数 AS5047P 是一种款高分辨率旋转位置传感器,用于在整个 360 度范围内进行高速(高达 28krpm)角度测量.这种新型位置传感器配备了革命性的 ...

  9. ADIS16488与单片机SPI通信返回0xFFFF的问题解决方法

    使用单片机为STM32F103RBT6,在使用硬件SPI读取ADIS16488的产品标识与各轴输出值时,发现始终返回0xFFFF,一般来说,如果是时序问题的话,读取不同的寄存器时不太可能返回同一个值, ...

最新文章

  1. 企业IT运维管理的发展有章可寻
  2. 485有时候从机接收指令没反应_原创案例丨秒杀一辆12年爱唯欧启动无反应
  3. SpringBoot同时集成Redis和Guava作为缓存组件--进一步分析代码
  4. Latex 经常见到的问题和解决方法
  5. 5.16GW光伏扶贫,各省费用如何筹措?
  6. java计算雷达扫描范围_雷达扫描 - linyinmobayu - 博客园
  7. 软件专家袁萌:番茄花园作者罪有应得
  8. 设计模式:原型模式(C++)【克隆羊多莉】
  9. 算法高级(1)-概述
  10. FireFox的插件范例,竟然有问题
  11. 运输问题中产销不平衡问题(表上作业法和LINGO方法)
  12. 阿里云邮箱标准版集团版尊享版怎么选
  13. 「杂谈」Nanopore组装的拟南芥基因组效果如何?
  14. es6删除数组某一项_什么时候用集合,什么时候用数组?一文帮你清晰界定
  15. 前一阵子闹得沸沸扬扬的IP归属地,到底是怎么实现的?
  16. 微信小程序:个人页面/我的页面/资料页面
  17. 深圳各区对企业制定行业标准和国家标准的补贴,奖励5-200万
  18. 数据采集—数据采集技术
  19. vue打包时报错 Error: No PostCSS Config found in 的解决方法
  20. 计算机组成原理乘法运算说明过程,计算机组成原理第二章 第8讲 定点乘法运算...

热门文章

  1. Linux时间同步的几种方式
  2. 转:python webdriver API 之分页处理
  3. java which_which
  4. StableDiffusion入门教程
  5. 【LadyBug】thirdScriptError:api request success callback function,Cannot read property undefine参数
  6. 扎心了!税前2万4,到手1万4,年终扣税方式1月1日起施行~
  7. Linux中bash: ls: 未找到命令… 相似命令是: ‘lz‘
  8. office 2016 PPT导出视频失败?
  9. ABP学习一(.Net6 API 整合 ABP)
  10. 无聊之作-纸牌接龙(排火车)结束平均次数