简介

不是所有的flash都是spi协议,本节学习用SPI协议传输数据的flash
SPI是摩托罗拉公司提出的通讯协议,和IIC一样,也是板级的协议,但是速度要比IIC快得多。
SPI是全双工通信

SPI物理层特性

SPI有三条公共总线:SCK、MOSI、MISO、和一条信号选择线 SS。
SPI协议使用SS信号线来寻址,当主机选择从设备时,就把对应的SS信号线置位0,SS被拉高标志着结束信号。

SCK时钟信号线,有主机产生,时钟频率是总线的一半,18M或者36M

MOSI根据英文缩写可知,主输出从输入,当做主机的输出端,从机的输入端。MISO则正好相反。两条总线可以同时进行,也就是全双工,可以同时发送和接收数据。

在NSS信号线作用下(片选线)置为低电平,选中从机。
在SCK时钟的控制下在上升沿或下降沿进行触发和采样,输入和输出可以同时进行。

对于什么时候触发、什么时候采样,是由时钟相位决定的(CPHA),当CPHA = 0 时,在时钟的奇数边缘采样,偶数边缘触发。当CPHA = 1时,在时钟的偶数边缘采样,奇数边缘触发。


经上,一共有如下四种模式

stm32 SPI功能框图

stm32 SPI外设简介

stm32 SPI的外设可用作通讯的主机或从机,支持SCK时钟的PCLK1和PCLK2的2分频。完全支持SPI的四种模式,数据帧长可设置为8位或者16位,可设置数据MSB或者LSB先行(高位先行或者低位先行)。

时钟控制逻辑

波特率寄存器 由CR寄存器的三个位来配置

数据控制逻辑

数据寄存器DR 16位的,因为发送或者接收的数据可以是8位或者16位的,当采用8位模式时,,DR寄存器的高8位不可用,并强制为0。采用16为传输模式时,就都可以用。不论是接收还是发送都是通过移位寄存器来操作的。SPI可以选择配置MSB或LSB,若选择高位先行,则送DR的最高位开始传输,反之,从DR的地位开始传输。
图中的发送缓冲区就是DR寄存器

SPI初始化结构体讲解

1、SPI的单双向模式:CR1寄存器的位配置

2、SPI模式:选择当主机还是从机使用,配置CR1寄存器。当作为主机的时候需要产生SCK信号时序,当作为从机的时候,需要接收外来的SCK时序,总之,时序信号是由主机产生的。

3、配置数据帧长度:可以是8位或者16位,CR1寄存器配置

4、设置时钟极性 CPOL :在刚开始情况下的SCK时钟的电平状态。配置CR1寄存器

5、设置时钟相位 CPHA :当时钟相位为0时,在SCK奇数边缘采样,偶数边沿触发。通信正在进行的时候不可更改。

5、设置片选信号是软件还是硬件触发:配置CR1的寄存器

6、波特率控制器,设置时钟分频因子 :配置CR1寄存器

7、设置高位先行,还是低位先行(MSB,LSB):配置 CR1寄存器

8、CRC校验:麻烦、不启用、不配置

简单介绍flash的存储特性

W25Q128 。128M个位,折合16MB,把这16M大小的空间分成若干块,每一块在分若干扇区。
flash的存储特性:
1、在写入数据之前必须先擦除
2、 擦除的时候会把所有的数据位重置为1
3、写入数据只能把1改成0
4、flash最小的擦除单位是扇区,一擦最少是一个扇区

其实擦除就是把某一位置1,然后在改

SPI协议的Flash相关推荐

  1. 基于SPI协议的Flash全擦除

    基于SPI协议的Flash全擦除 `timescale 1ns / 1ps module flash_be_ctrl(input wire sys_clk,//系统时钟频率50MHZ input wi ...

  2. 基于SPI协议的Flash驱动控制-数据普通读操作

    目录 Flash数据普通读操作 实现原理 verilog设计代码 verilog测试代码 Flash数据普通读操作 实现原理 将片选信号拉低,写入读操作指令,最少读取一个字节的数据,写入读指令后要写入 ...

  3. 基于SPI协议的Flash驱动控制-扇区擦除

    目录 Flash扇区擦除 实现原理 verilog设计代码 verilog测试代码 Flash扇区擦除 实现原理 扇区的概念 Flash型号的数字代表容量,单位兆bit,如M25P16,此Flash的 ...

  4. 【FPGA】SPI协议详解及对flash读写操作

    FPGA基于SPI实现对flash读写操作 概括 一.SPI协议.flash讲解 1.SPI协议 2.flash (1)WREN (2)RDID (3)WRSR (4)READ (5)PP (6)SE ...

  5. 【STM32】SPI协议通信详解

    目录 一.SPI协议简介 二.SPI物理层 三.SPI协议层 1.通讯的起始和停止信号 2.数据有效性 3.时钟信号的相位和极性(重点) 四.SPI 特性及架构(重点) 1.通信引脚 2.时钟控制逻辑 ...

  6. STM32学习之SPI协议(读写FLASH)

    关于STM32学习分享 第八章 SPI协议(读写FLASH) 文章目录 关于STM32学习分享 前言 二.代码 1.spi_flash.c 2.spi_flash.h 3.main.c 总结 前言 开 ...

  7. 嵌入式硬件入门——Flash Memory(W25Q64+SPI协议)

    Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失. 文章目录 Flash Fla ...

  8. FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用

    写在前面 SPI协议系列文章: FPGA实现的SPI协议(一)----SPI驱动 FPGA实现的SPI协议(二)----基于SPI接口的FLASH芯片M25P16的使用 在上篇文章,简要介绍了SPI协 ...

  9. STM32F429入门(二十一):SPI协议及SPI读写FLASH

    IIC主要用于通讯速率一般的场合,而SPI一般用于较高速的场合. 一.SPI协议简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设 ...

最新文章

  1. 扩增子统计绘图3热图:样品相关分析,差异OTU
  2. socket中的nagle算法
  3. easyui 渲染问题(转)
  4. 未来网闸的发展趋势(实际应用需求,解决方案)
  5. Simbad的使用--检索、导入、保存
  6. Libevent源码分析-----开篇
  7. c#精彩编程200例百度云_每天宅家创客5分钟|智龙6号星球车:01唤醒星球车——温州中小学趣味信息技术云课程...
  8. PAT Basic Level 1072 开学寄语 (20 分)
  9. 维度表和事实表的区别
  10. 04:AD采样【MSP430F5529】
  11. 计算机基础ps变换蝴蝶,在PS中用自由变换制作飞舞的蝴蝶和用内容识别比例缩放的操作过程...
  12. 法院裁定抖音违规共享用户信息 多闪被勒令删头像、昵称
  13. DCloud之APP离线SDK升级步骤(3.5.3升至最新版3.6.7.81556_20221018)
  14. C51单片机数码管动态显示
  15. python豆瓣mysql_Python3.5爬取豆瓣电视剧数据并且同步到mysql中
  16. Jenkins邮箱配置中,使用SSL连接的问题
  17. 量子计算机的研究进展,量子计算原理及研究进展.pdf
  18. 小熊饼干、大白兔也遭遇小浩路过
  19. 2014年爆火的脸萌,真的消失了吗?
  20. EI 期刊目录 下载和查询方法(很简单)

热门文章

  1. (CNVD-2021-17391)|启明星辰-‘‘天清汉马USG防火墙‘‘逻辑漏洞
  2. 【linux驱动】网卡驱动程序
  3. 终于丫你奶奶的浩方了!
  4. python关键词_Python批量挖掘百度凤巢关键词
  5. 我的程序员之路(15)——2019年前半年总结
  6. RFID电子配线架系统
  7. 如何保证按时上床睡觉?
  8. ElasticsearchRestTemplate客户端使用
  9. python数据分析与应用实训题答案第七章_应用回归分析,第7章课后习题参考答案...
  10. edb mysql_通过MTK迁移Mysql到EDB实战指南