手把手教你如何实现SPI读写W25Q64

目录

前言

一、从0开始讲清SPI通信协议

(1)简介

(2)通信本质

(3)通信时序 

1.起始条件

2.终止条件 

3.交换字节

4.完整时序

二、W25Q64

(1)简介

(2)引脚功能图

(3)内部空间框图 

三、 软件模拟SPI

(1)通信层 

1.通信引脚配置

2.SPI起始条件 和 终止条件

3.SPI写入一个字节

(2)硬件驱动层

(3)主函数 

总结

前言

本文为作者对SPI通信协议的知识总结以及简单应用,通过软件翻转GPIO电平模拟SPI实现读写W25Q64。


提示:如有错误请尽情指出,希望对广大读者有所帮助。

一、从0开始讲清SPI通信协议

(1)简介

SPI是一种通信速率极高的全双工同步通信协议,它是一主多从的模式。

共有四根及以上根信号线,分别是SCK时钟线、MOSI主机输出从机线(Master Output Slave Input)、MISO主机输入线(Master Input Slave Output)和SS片选信号线。

有多少个从机,则配置多少根SS信号线,空闲状态时,SS信号线默认处于高电平。当需要与某一从机进行通信时,拉低相对应的SS信号线即可。由此可知,SPI通信的起始条件和终止条件分别是拉低SS线和拉高SS线。

SPI的输出引脚(MOSI、SS、SCK)应配置为推挽输出,从而使得高低电平驱动变化十分迅速,达到更高的传输速度。

当有多个从机时,从机输出也有多个,但主机输入只有一个,所以当从机的SS引脚为高电平时,也就是从机未被选中时,它的MISO引脚必须为高阻态,相当于引脚断开,不输出任何电平,这样就可以防止一条线有多个输出,而导致电平冲突的问题了。

(2)通信本质

 SPI的通信本质就是主机和从机之间通过移位寄存器交换字节数据。

主机的移位寄存器会将一个字节的8位通过MOSI逐次放在从机的MOSI上。

同理,从机的移位寄存器也会将一个字节的8位通过MISO逐次放在主机的MISO上,由此即可完成数据的交换。

当我们只需要一个设备的数据时,那么我们可以只对一方的数据进行操作,舍弃另一方的数据即可。

(3)通信时序 

SPI的通信时序主要由三大部分组成,分别是起始条件、交换字节、终止条件。 

1.起始条件

SS从高电平切换到低电平

2.终止条件 

 SS从低电平切换到高电平

3.交换字节

SPI的交换字节时序共有四种模式,它们之间的区别在于不同电平时期,移入/移出数据。

由于模式0最常用,所以本文只对模式0进行讲解。

 在模式0中,空闲状态时,SCK默认为低电平。

在SCK由高电平切换为低电平时,主机和从机会移出数据,在由低电平切换为高电平时,主机和从机会移入数据,也就是读取数据,如下图所示。

4.完整时序

在从机的芯片手册中,一般会有相对应的指令集,其中的每个指令所对应的数据称为指令码。

SPI的通信时序一般为<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值