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