SPI中的时钟相位和时钟极性

时间:2014-07-16 12:14:07

标签: c protocols

我对SPI有一个简单的怀疑。我已经完成了SPI协议。我理解的每一件事。但我不知道时钟相位和时钟极性。

    As there are 4 wires(MOSI, MISO, CS and SCK). I came to know from document,

SPI中有4种工作模式取决于时钟相位和时钟极性。例如,如果时钟的相位为零(即CPHA = 0),数据在时钟的上升沿锁存,CPOL = 0,并且在时钟的下降沿,CPOL = 1.根据我的理解,锁存数据,时钟需要做如下,

#define CPOL                     1  // Set CPOL to 1 or 0
#define CPHA                     1  // Set CPHA to 1 or 0

#if CPHA
   #define SCK_POST
   #if CPOL
      #define SCK_INIT 1
      #define SCK_PRE  SCK=0
      #define SCK_MID  SCK=1
   #else
      #define SCK_INIT 0
      #define SCK_PRE  SCK=1
      #define SCK_MID  SCK=0
   #endif
#else
   #define SCK_PRE
   #if CPOL
      #define SCK_INIT 1
      #define SCK_MID  SCK=0
      #define SCK_POST SCK=1
   #else
      #define SCK_INIT 0
      #define SCK_MID  SCK=1
      #define SCK_POST SCK=0
   #endif
#endif


     1. My question is how the clock phase and clock polarity is configured.

由于时钟相位和时钟极性没有引脚。

    2. Why 4 modes are there, it seems two mode is enough. 

1 个答案:

答案 0 :(得分:2)

重。为什么4种模式,极性决定了时钟的空闲状态,相位决定了哪个边沿数据读/写发生,因此这导致2×2 = 4种不同的可能性。 (参见diagrams。)从技术上讲,一种模式对于以这种方式传输数据“足够”,但不是强迫每个人都实现一种特定模式,SPI允许这四种可能性以获得更大的灵活性。

至于如何配置时钟相位和极性,取决于您使用的设备,并且您不指定任何设备。通常,该器件具有寄存器,其位对应于时钟相位和极性。有些芯片可能会实现类似SPI的3线协议,这种协议是不可配置的,您需要在总线上配置其他设备以匹配它。