STM32模块:019 SPI通信

发布于:2025-07-12 ⋅ 阅读:(37) ⋅ 点赞:(0)

SPI介绍

简介

SPI对比I2C:1.传输速度更快,I2C由于是弱上拉,电平上升慢,因此通信速度有上限,而SPI无严格规定的最大传输速度。2.SPI为富家子弟,有钱任性,任务能简单快速完成即可,不考虑性价比;I2C精打细算,思维灵活,考虑成本和性价比。3.SPI的SCK相当于I2C的SCL,MOSI和MISO组合相当于I2C的SDA,同时多了SS线使得通信时不用像I2C写入寻址字节,SPI连接多从机时要增加SS线分别单独连接从机。

称呼:SCK:CK,CLK,SCLK;MOSI(Master Output Slave Input):主机DO(Data Output);MISO:主机DI(Data Input)。作为主机时DO相当于MOSI,DI相当于MISO;非主控设备始终作为从机,常用DI/DO表示,相当于SI/SO,因此连接主机的MOSI/MISO。因此,UART的连接为RX固定接TX,TX固定接RX。SPI的数据连接非固定,要根据设备是主机还是从机来决定。

SPI只支持一主多从,而I2C可支持多主多从。SPI无应答机制,只管接收和发送。

硬件电路

主机输出为推挽输出,主机输入有3条规则:1.从机MISO输出可能会冲突,因此未被SS选中的设备必须输出高阻态。2.选中的才能作为推挽输出。3.主机浮空输入才能识别从机的2种信号,但由于SS的存在,上拉输入也能读取2种信号。SS为低电平有效。

输出的上下拉和推挽的区别在于电平的强弱,而输入的上下拉和浮空的区别在于上下拉输入要有开始标志才能区别两种信号。

移位示意图

SPI时序基本单元

SPI时序

I2C有效数据流第一个字节是寄存器地址,之后是读写的数据,使用的是读写寄存器模型。而SPI中通常采用的是指令码+加读写数据模型,指令功能与由从机外设决定。

W25Q64介绍

简介

W25为M级别存储器,AT24为K级别存储器。

XIP(eXecute In Place),就地执行,直接将程序文件下载到外挂芯片里,执行程序时读取外挂芯片的程序文件执行。

flash:stm32程序存储器,u盘,固态硬盘等。分为Nor Flash和Nand Flash。

Dual SPI:双重SPI模式,即发送时MISO和MOSI同时发送,接受时同时接收,速度翻倍。

Quad SPI:四重SPI模式,除了MISO和MOSI,还有写保护WP和数据保持HOLD充当数据传输引脚,相当于4位并行发送。

地址的位数与存储空间总容量大小对应,而不是与数据单元长度对应。W25Q64以8位1字节作为数据单元,24位地址能读写16MB的数据,使用Q256需要进入4字节模式。

硬件电路

HOLD:当主控进入中断需要占用SPI时,HOLD能使芯片释放总线并记住当前状态,当主控中断完成时继续HOLD之前状态,继续SPI通信,相当于SPI总线进入一次中断。

W25Q64框图

存储空间划分:8M存储空间以64KB为1块(Block),共128块;每块4KB为一个扇区(Sector),共16个扇区;每个扇区256B为一个页(Page),共16页。

Status Register:与忙状态、写保护、写使能等功能有关。

High Voltage Generators:高电压生成器,非易失存储器要实现掉电不丢失需要高电压刺激。

写入地址时高2字节地址进入页地址锁存计数器,低1字节进入字节地址锁存计数器,计数器在操作完成后会自动加1。页缓冲区为256字节的RAM存储器,由于写RAM的速度大于写FLASH,因此该设计能缩短数据写入的时间。

FLASH操作注意事项

由于擦除后数据位为1,所有FF代表存储空间空白而不是00。该芯片中最小擦除单元为一个扇区。

为了弥补擦除存在最小单元的缺点,使FLASH的数据改写更为方便,可以再程序逻辑上 进行如下优化:上电时将FLASH的数据读取出来,放到RAM里,当有数据变动时,再把RAM数据写入FLASH。

由于页缓冲区的存在,每次写入操作只能写入一页数据。且页缓冲器和FLASH的页对应,即要写满256字节需要从页首开始写入。若从FLASH中间位置开始写入数据RAM也从中间开始,此时如果地址范围超出页的范围,会跳回页首造成数据错乱。

FLASH闪存,在非易失存储器中读写速度算非常快的,所以叫闪存。

数据手册

状态寄存器重要位(状态忙、写使能)

指令集INSTRUCTIONS

(知识自学习专题,课程资料来源江协科技)


网站公告

今日签到

点亮在社区的每一天
去签到