spi协议时序图和四种模式 |
您所在的位置:网站首页 › 三线制spi时序图详解 › spi协议时序图和四种模式 |
一、spi四种模式详解
不同的模式采集数据的方式是不一样的。 一般内置SPI的单片机上,都有两个寄存器配置位CPOL和CPHA 我们拿STM32单片机来举例,可以通过结构体成员配置。 CPOL = 0:空闲状态时,SCLK保持低电平 ![]() CPHA = 0:数据从第一个时钟(SCLK)边沿开始传输数据 CPHA = 1:数据从第二个始终(SCLK)边沿开始传输数据 模式0特性: CPOL = 0:空闲时是低电平,第一个跳变沿是上升沿,第二个跳变沿是下降沿 CPHA = 0:数据在第一个跳变沿(上升沿)采样 ![]() CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿 CPHA = 0:数据在第一个跳变沿(下降沿)采样 CPOL = 1:空闲时是高电平,第一个跳变沿是下降沿,第二个跳变沿是上升沿 CPHA = 1:数据在第二个跳变沿(上升沿)采样
![]() 1.先确定芯片支持什么SPI哪种模式读写数据 确定了使用哪种模式,单片机才能确定数据采集的方式,主控和从机要保持一致。 如果有些芯片的数据手册是没有告诉是哪种模式时,需要自己看时序图分析 第一步: 通过时序图分析CLK空闲时的电平状态。图上显示,空闲时高低电平都可。先用低电平分析第二步: 分析DI和DO是在时钟的上升沿还是下降沿采集数据。(DI代表从机MISO)(DO代表从机MOSI)主要是通过DI与DO在数据有效区时,CLK时上升沿还是下降沿来判断什么是数据有效区? 红色框起来的区域就是数据有效区。 一般数据是通过DI和DO两个引脚传输的,所以有效区就是,这两个引脚的值只能是高电平或者低电平相当于有效区的电平就是最终要传输的数据位,低电平代表0,高电平代表1传输8个位,代表1个字节的数据什么是无效数据区? 上图蓝色框的区域就是无效数据区 这个时刻CLK数据采集的时钟还没有到来,所以DI和DO引脚的电平是可变的需要关心是的DI和DO在数据有效区的时候,CLK是上升沿还是下降沿。 所以就只有模式0和模式3可以满足当前从机的时序逻辑。 分析整体时序 W25Q64这个Flash芯片读取存储的数据。![]() ①读指令: 读指令数据是在W25Q64的DI引脚产生的,DI相当于W25Q64的MISO,就是接受单片机发送过来的数据 这个读指令(0x03)是单片机发给W25Q64的。 0x03内拆分为8个Bit在DI引脚上传输,每个CLK传输一位Bit ②24位地址 发完读指令之后,单片机继续发24位的内存地址,相当于单片机要读取W25Q64哪个内存地址的数据这个数据的地址是由单片机确定的,不是固定的。数据位可以是高电平,也可以是低电平③单片机接收数据 这个时候通信双方的角色就变了,单片机变成数据的接收方了,W25Q64变成数据的发送方数据从W25Q64的DO引脚发送(MOSI)通过时序,单片机就可以读取到存储在W25Q64中存储的数据 单片机程序注意51单片机一般没有内置SPI模块,所以整个时序需要自己写程序去模拟,简称模拟SPI。 而STM32单片机一般有内置SPI,就不用自己写程序去模拟时序,直接应用。 但是如果用内置SPI有一个细节,特别容易被忽略,就是你读数据的时候,读一个字节之前要先发一个字节任意值数据。(哑数据) 发送一个字节的哑数据是为了维持主从设备之间的通信时序同步,确保数据的可靠传输。这个细节容易被忽略,但它在SPI通信中非常重要。 引用无极单片机的教程 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |