STM32学习笔记——SPI通信与SPI FLASH 应用

SPI 背景知识

SPI(Serial Peripheral interface)是串行外设接口,是一种高速,全双工,同步的通信总线。是Motorola

首先在其MC68HCXX系列处理器上首次定义的

SPI 特征

  1. 全双工串行通信

  1. 高速数据传输速率

  1. 数据传输不限于8位,可以是任意大小的字节

  1. 非常简单的硬件结构,从机不需要唯一地址(与IIC不同)。从机使用主机时钟,

不需要精密的时钟振荡器(与UART不同)

SPI 总线的物理层

SPI是一个同步的数据总线,也就是说它采用单独的数据线和单独的时钟信号来保证发送端和接收端的同步。时钟是一个震荡信号,接收端在确切的时候对数据线上的信号进行采样

SS:片选引脚,SPI工作时片选引脚拉低,表示通信开始

SLK:时钟信号,由主机发送

MOSI:Mater Output Slave Input 主机发送数据从机接收数据

MISO:Mater Input Slave Output 主机接收数据从机发送数据

注:主机在同一时刻只能与一台从机进行通信

SPI时序图

注:

CPOL:时钟极性选择,为0时SPI总线空闲时,时钟线为低电平;为1时SPI总线空闲时,

时钟线为高电平

CPHA:时钟相位选择,为0时在SCLK在第一跳变沿,主机对MOSI采样,在第二跳变沿

从机对MOSI采样。为1时在SCLK在第一跳变沿,从机对MOSI采样,在第二跳变沿,

主机对MOSI采样。

在项目开发中,用的比较多的是模式0(MFRC)和模式3(SPI FLASH)

模式3

模式3

SPI FLASH时序图

SPI FLASH读取ID:

从时序图可以看出,SPI开始工作时,主机首先发送0x90命令,再发送24位地址,该地址全为零

随后接收到的第一个八位数据围为厂商id,第二个数据为设备id

SPI FLASH写使能/写失能:发送0x06,解除写保护,发送0x40,添加写保护

SPI读取busy位状态寄存器值:

发送0x05命令,接收到的数据,取其最低位既为状态寄存器数值

SPI FLASH页写入:

进行写使能,发送0x20命令,发送24位地址,发送数据,最多发送256个字节等待状态寄存器清零,结束通信。进行写使能前,必须保证该扇区被擦除过。

SPI 页擦除:

计算扇区首地址,发送24位地址,等待状态寄存器清零:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值