用户名:  密码:   
加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 技术文章

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

时间:2012-12-06  来源:123485.com  作者:9stone

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


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->技术文章
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门