我对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.

最佳答案

重新。为什么4种模式,极性决定了时钟的空闲状态,相位决定了读/写哪个边缘数据,所以这就产生了2×2=4种不同的可能性。(技术上看,AA>)在技术上,一种模式将“足够”以这种方式传输数据,但是SPI并不是强迫每个人实现一种特定的模式,而是允许这四种可能性以获得更大的灵活性。
至于如何配置时钟相位和极性,这取决于您使用的设备,而您没有指定任何设备。通常,该设备具有与时钟相位和极性对应的位的寄存器。有些芯片可能会实现一个类似SPI的3线协议,这是不可配置的,您需要配置总线上的其他设备来匹配它。

关于c - SPI中的时钟相位和时钟极性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24780535/

10-12 00:20
查看更多