常用的串口通信协议之SPI协议简析

接口/总线/驱动

1143人已加入

描述

继续更新常用的串口通信协议。本次要介绍的是SPI协议。 (学习这么大的事情,必须要有BGM!) (结合BGM学习效率更加)

3.SPI:   
 
SPI(serial peripheral interface)也是一种同步串行通信协议。这里为啥要说“也”呢,回想上一篇介绍的PS/2不也是同步串行通信协议吗。SPI由一个主设备和 一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据的交换。标准的SPI仅仅使用4个引脚,常用于主设备和外设(flash、实时时钟、dsp等器件)的通信。

下面说说这四个引脚分别用来干啥。 
  
1)SSEL:从设备片选使能信号。如果从设备是低电平使能,那么拉低这个引脚,从设备将会被选中,主机和这个被选中的从机进行通信。    
2)SCK:时钟信号,由主机产生。    
3)MOSI:主机给从机发送指令或者数据的通道。    
4)MISO:主机读取从机的状态或者数据的通道。
    
另外还需要特别介绍两个名词:

1)CPOL:clock polarity,时钟极性。通信整个过程分为空闲时刻和通信时刻,SCK在数据发送前后的空闲状态是高电平,那么CPOL为1,否则为0。   
2)CPHA:clock phase,时钟相位。  
   
对CPOL和CPHA进行排列组合的话,会发现SPI会有四种工作模式。

下面介绍这四种模式:

模式0:CPOL = 0, CPHA = 0.

串口通信

模式1:CPOL = 0, CPHA =1.

串口通信

模式2:  CPOL = 1, CPHA = 0.

串口通信

模式3:  CPOL = 1, CPHA=1.

串口通信

总结:CPHA=1表示数据输出在第一个时钟周期的第一个沿,数据采样在第二个沿;

CPHA=0表示数据采样在第一个沿,数据输出在第二个沿.

CPOL=1表示第一个沿为下降沿;

CPOL=0表示第一个沿为上升沿.

根据从设备的技术手册可以确定SPI.

下面给出一个SPI控制器模块的实例代码:

(工作在模式0,100MHz分频产生1MHz的SCK时钟)

串口通信

串口通信

串口通信

串口通信

串口通信

串口通信



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分