您的位置:技术中心首页 > 总线协议 >> SPI总线时钟极性和时钟相位的概念理解

SPI总线时钟极性和时钟相位的概念理解

作者:未知   时间:2007-10-18 21:37:50  来自:网上转载  浏览次数:16  文字大小:【】【】【

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

其工作模式有两种:主模式和从模式,无论那种模式,都支持3Mbit/s的速率,并且还具有传输完成标志和写冲突保护标志。

跟SPI密切相关的两个概念是时钟极性和时钟相位。

  • 时钟极性:表示时钟信号在空闲时是高电平还是低电平。
  • 时钟相位:决定数据是在SCK的上升沿采样还是在SCK的结束沿采样。

下面以矩力的7022B芯片为例子,分析SPI工作模式的设置。

在7022B的数据手册中,指出:在SCK的上升沿放数据,在下降沿取数据。在SCK的下降沿将DIN的数据采样到7022B中,在SCK的上升沿将7022B的数据放置在DOUT上面输出。

下面是模拟SPI总线对7022B进行读取的例子,这个例子生动表示了何时放数据,何时采样数据。

unsigned long Read_reg3(unsigned char cmd)
{
       int i;
       unsigned long data;
       set_bit(SPI_PORT,SPI_SS);
       clr_bit(SPI_PORT,SPI_SCK);
       clr_bit(SPI_PORT,SPI_SS);
       for(i=0;i<8;i++)
       {
           set_bit(SPI_PORT,SPI_SCK);
              if(cmd&0x80)
              {
                set_bit(SPI_PORT,SPI_MOSI);
              }
              else
              {
                clr_bit(SPI_PORT,SPI_MOSI);
              }
              cmd=cmd<<1;
              nop;
              nop;
              clr_bit(SPI_PORT,SPI_SCK);nop;
       }
       clr_bit(SPI_PORT,SPI_SCK);
       _delay_us(3);
       data=0;
       for(i=0;i<24;i++)
       {
           set_bit(SPI_PORT,SPI_SCK);
              nop;
              nop;
              nop;
              if(PINB&(1
              {
                data+=1;
              }else
              {
                data+=0;
              }
              data=data<<1;
              nop;
              clr_bit(SPI_PORT,SPI_SCK);
       }
       set_bit(SPI_PORT,SPI_SS);
       return data;
}

如果采用硬件SPI,则需要对单片机(ATMEGA16)SPI寄存器进行设置,本例子中,需要设置SPCR=0x57;//MSB在先01010011

时钟极性为0,因为空闲时CLK电平为低。

时钟相位设置为1,因为是下降沿采样数据,上升沿放数据。

我对SPI的理解错在采样的概念上。比如,下降沿采样,当主机接收时,我觉得应该是先有下降沿,再有采样。其实,正确的理解是:采样是对主机从机都一致的概念,采样之前必须把数据准备好。当主机接收数据时,主机也是下降沿采样,但是在下降沿发生之前,必须准备好数据,换句话说,从机在上升沿发生后,就要把数据放出来,为下降沿采样做好准备。

责任编辑:5life

更多相关 SPI 的文章

本文共有0条评论,现在显示最新的5条。

栏目导航

电路基础
硬件语言
逻辑验证
电路综合
后端设计
可测设计
基本逻辑
制造封装
总线协议
说文解字
工具学习
数字滤波
闲话漫谈
数字锁相
设计杂项
低耗设计

站点最新

更多相关链接

  SPI接口单线应用
  SPI总线时钟极性和时钟相...
  SPI接口的出错分析及其改进
  SPI总线接口
  I2C总线串行接口应用设计
  SPI总线杂碎
  SPI、I2C、UART三种串行...
  汽车总线协议的形势判断
  I2C 总线规范学习笔记
  SPI 接口简介

栏目最新

更多相关链接

  SPI接口单线应用
  SPI总线时钟极性和时钟相...
  SPI接口的出错分析及其改进
  SPI总线接口
  I2C总线串行接口应用设计
  SPI总线杂碎
  SPI、I2C、UART三种串行...
  汽车总线协议的形势判断
  I2C 总线规范学习笔记
  SPI 接口简介

热点文章

更多相关链接

  I2C总线性能介绍
  SPI、I2C、UART三种串行总线...
  SPI接口单线应用
  SPI 接口简介
  I2C 总线规范学习笔记
  SPI总线杂碎
  SPI总线接口
  SPI总线时钟极性和时钟相位的...
  I2C总线串行接口应用设计
  SPI接口的出错分析及其改进