全球旧事资料 分类
进行数据交换根据外设工作要求其输出串行同步时钟极性和相位可以进行配置时钟极性CPOL对传输协议没有重大的影响如果CPOL0串行同步时钟的空闲状态为低电平如果CPOL1串行同步时钟的空闲状态为高电平时钟相位CPHA能够配置用于选择两种不同的传输协议之一进行数据传输如果CPHA0在串行同步时钟的第一个跳变沿上升或下降数据被采样如果CPHA1在串行同步时钟的第二个跳变沿上升或下降数据被采样SPI主模块和与之通信的外设音时钟相位和极性应该一致
时序图详解SPI时序图详解SPI接口在模式0下输出第一位数据的时刻SPI接口在模式0下输出第一位数据的时刻SPI接口有四种不同的数据传输时序取决于CPOL和CPHL这两位的组合图1中表现了这四种时序时序与CPOLCPHL的关系也可以从图中看出
f图1CPOL是用来决定SCK时钟信号空闲时的电平CPOL0空闲电平为低电平CPOL1时空闲电平为高电平CPHA是用来决定采样时刻的CPHA0在每个周期的第一个时钟沿采样CPHA1在每个周期的第二个时钟沿采样由于我使用的器件工作在模式0这种时序CPOL0CPHA0所以将图1简化为图2只关注模式0的时序
f图2我们来关注SCK的第一个时钟周期在时钟的前沿采样数据上升沿第一个时钟沿在时钟的后沿输出数据下降沿第二个时钟沿首先来看主器件主器件的输出口MOSI输出的数据bit1在时钟的前沿被从器件采样那主器件是在何时刻输出bit1的呢bit1的输出时刻实际上在SCK信号有效以前比SCK的上升沿还要早半个时钟周期bit1的输出时刻与SSEL信号没有关系再来看从器件主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的那从器件又是在何时刻输出bit1的呢从器件是在SSEL信号有效后立即输出bit1尽管此时SCK信号还没有起效关于上面的主器件和从器件输出bit1位的时刻可以从图34中得到验证
图3注意图3中CS信号有效后低电平有效注意CS下降沿后发生的情况故意用延时程序延时了一段时间之后再向数据寄存器写入了要发送的数据来观察主器件输出bit1的情况MOSI
f可以看出bit1值为1是在SCK信号有效之前的半个时钟周期的时刻开始输出的与CS信号无关到了SCK的第一个时钟周期的上升沿正好被从器件采样
图4图4中注意看CS和MISO信号我们可以看出CS信号有效后从器件立刻输出了bit1值为1通常我们进行的spi操作都是16位的图5记录了第一个字节和第二个字节间的相互衔接的过程第一个字节的最后一位在SCK的上升沿被采样随后的SCK下降沿从器r
好听全球资料 返回顶部