SPI通信

1.SPI Serial Peripheral Interface )是由 Motorola 公司开发的一种通用数据总线
2.四根通信线: SCK Serial Clock )、 MOSI Master Output Slave Input )、
MISO Master Input Slave Output )、 SS Slave Select
3.同步,全双工
4.支持总线挂载多设备(一主多从)

SCKSerial Clock):时钟线

MOSIMaster Output Slave Input):主机接主机输出,从机接从机输入

MISO(Master Input Slave Output):主机接主机输入,从机接从机输出

SSSlave Select):从机选择线(有X个从机就用X根SS)

SPI没有应答机制。

从机W25Q64上的DI是MOSI,DO是MISO。

硬件电路

SSx:低电平为选择从机

从机的规定(SS为高电平时,从机的MISO一定切换为高阻态(不出任何电平)SS为低电平时,从机的MISO才允许为推挽输出(防止主机的MISO有多个电平冲突))

所有输出:为推挽输出(高低电平都有强大的驱动能力)

移位示意图

 来一个时钟信号,移位寄存器向左移动一位(SPI主机移位寄存器左边的数据通过MOSI移到SPI移位寄存器的右边,SPI从机的移位寄存器左边的数据通过MISO移到略(图))

实现字节交换

SPI时序

基本时序单元

相比于模式1(在SCK上升沿之前就要移出一下数据)(应用最多,本次应用)

(SCK产生上升沿)(相关寄存器移出数据)(MOSI和MISO表示主机和从机移出的数据)(然后SCK产生下降沿)(相关寄存器移入数据  ,读MOSI和MISO)  

相比于模式0(在SCK取反)

相比于模式1(在SCK取反)

完整时序

不同的硬件外设,波形不同

指令码,指令集不同

 Address是先写入的24为的高位(23~16)

 W25Q64简介

 可以存汉字,在OLED显示屏上显示。

硬件电路

 HOLD和WP是低电平有效(都接VSS表示不要用)

电源指示灯   滤波

 W25Q64框图

1,上面是内存空间【块(Block)--> 扇区(Sector)--> 页(page) -->】

2,控制逻辑 , 状态寄存器 , 高电压发生器(使存储器发生刻苦铭心的变化,使得掉电不丢失),2个地址锁存计数器(指定地址,可自主加一),256字节页缓存区  RAM->Flash

Flash操作注意事项

写入操作时:

写入操作前,必须先进行写使能。
每个数据位只能由 1 改写为 0 ,不能由 0 改写为 1。
写入数据前必须先擦除,擦除后,所有数据位变为 1。
擦除必须按最小擦除单元进行。(最小擦除单元是 扇区 擦除)
连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入。
写入操作结束后,芯片进入忙状态,不响应新的读写操作。

读取操作时:

直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取。

看W25Q64BV的数据手册

18页有指令集。54页有执行编程的时间。

其他略

软件SPI代码例子

硬件SPI通信外设

主线加分支的学习方法:先学习最常用,最简单的主线知识学完,然后在实践中学习分支

STM32 内部集成了硬件 SPI 收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻 CPU 的负担
可配置 8 /16 位数据帧、高位先行 / 低位先行
时钟频率: PCLK() / (2, 4, 8, 16, 32, 64, 128, 256)
支持多主机模型、主或从操作
可精简为半双工 / 单工通信
支持 DMA( 帮助搬运大量数据
兼容 I2S 协议( 用于数字音频信号传输 )(手册23.5有)
STM32F103C8T6 硬件 SPI 资源: SPI1 SPI2
SPI和I2C一般都是高位先行(串口一般是低位先行)          PCLK是外设时钟
APB2的PCLK是72MHz    APB1的PCLK是36MHz     SPI1是APB2的   SPI2是APB1的

框图

有数据发送时会进入发送缓冲区(TDR)移位寄存器没数据时 发送缓冲区(TDR)立刻进入移位寄存器,转入时刻会置状态寄存器(TXE)为1  表示发送寄存器空。检查到状态寄存器(TXE)为1时,紧跟着下一个数据就可以到TDR中。实现一个数据发完,下一个跟上不间断连续发送。

移位寄存器把要移出的移出后,会存移入的数据,将这些数据转入接收缓冲区(RDR),这个时刻会置状态寄存器(RXNE)为1,表示接受寄存器非空,然后移出寄存器来。

BR[2:0] 控制分频

LSBFIRST寄存器: MSB是高位的意思  LSB是低位的意思

SPE: 是SPI使能

MSTR:配置主从模式

还有很多寄存器:看手册对应

TXE:移位寄存器到RDR的箭头

RXNE:TDR到移位寄存器的箭头

主模式全双工连续传输

 非连续传输

缺点:MOSI输出移动数据时没有将下一个数据与写入TDR等候,会使输出一个字节后(第二个数据还没有送来)要等待一段时间。(SCK频率低时影响不大,频率高了化影响很大)

要实现最高效率用主模式全双工连续传输加上DMA自动转运

看手册23章SPI

代码略

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值