赞
踩
一、spi四种模式详解
不同的模式采集数据的方式是不一样的。
一般内置SPI的单片机上,都有两个寄存器配置位CPOL和CPHA
我们拿STM32单片机来举例,可以通过结构体成员配置。
这是通过固件库直接配置,固件库的底层也是配置相应的寄存器。
CPOL:时钟极性
CPHA:始终相位
CPOL和CPHA的作用。
CPOL = 0:空闲状态时,SCLK保持低电平
CPHA = 0:数据从第一个时钟(SCLK)边沿开始传输数据
CPHA = 1:数据从第二个始终(SCLK)边沿开始传输数据
CPOL与CPHA组合的四种模式
模式0特性:
CPOL = 0:空闲时是低电平,第一个跳变沿是上升沿,第二个跳变沿是下降沿
CPHA = 0:数据在第一个跳变沿(上升沿)采样
CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿
CPHA = 0:数据在第一个跳变沿(下降沿)采样
CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿
CPHA = 1:数据在第二个跳变沿(上升沿)采样
模式不同就是:空闲时间的电平状态和数据采样的起点不同
spi时序图详解
1.先确定芯片支持什么SPI哪种模式读写数据
确定了使用哪种模式,单片机才能确定数据采集的方式,主控和从机要保持一致。
如果有些芯片的数据手册是没有告诉是哪种模式时,需要自己看时序图分析
第一步:
第二步:
什么是数据有效区?
红色框起来的区域就是数据有效区。
什么是无效数据区?
上图蓝色框的区域就是无效数据区
需要关心是的DI和DO在数据有效区的时候,CLK是上升沿还是下降沿。
从上图可以看出
所以就只有模式0和模式3可以满足当前从机的时序逻辑。
分析整体时序
①读指令:
读指令数据是在W25Q64的DI引脚产生的,DI相当于W25Q64的MISO,就是接受单片机发送过来的数据
这个读指令(0x03)是单片机发给W25Q64的。
0x03内拆分为8个Bit在DI引脚上传输,每个CLK传输一位Bit
②24位地址
③单片机接收数据
单片机程序注意
51单片机一般没有内置SPI模块,所以整个时序需要自己写程序去模拟,简称模拟SPI。
而STM32单片机一般有内置SPI,就不用自己写程序去模拟时序,直接应用。
但是如果用内置SPI有一个细节,特别容易被忽略,就是你读数据的时候,读一个字节之前要先发一个字节任意值数据。(哑数据)
发送一个字节的哑数据是为了维持主从设备之间的通信时序同步,确保数据的可靠传输。这个细节容易被忽略,但它在SPI通信中非常重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。