I am going through SPI transmission for implementing in FPGA, While researching, In few articles such as
https://en.wikipedia.org/wiki/Serial_Peripheral_Interface and this https://web.archive.org/web/20150413003534/http://www.ee.nmt.edu/~teare/ee308l/datasheets/S12SPIV3.pdf Which says in Section 4.4.1

Using two bits in the SPI Control Register1, software selects one of four combinations of serial clock phase and polarity.

The CPOL clock polarity control bit specifies an active high or low clock and has no significant effect on the transmission format.

The CPHA clock phase control bit selects one of two fundamentally different transmission formats. Clock phase and polarity should be identical for the master SPI device and the communicating slave device. In some cases, the phase and polarity are changed between transmissions to allow a master device to communicate with peripheral slaves having different requirements.

My question is What is the need of specifying the different modes in SCK, Though the last line tries to reason out, It sounds vague and doesn't specify actual reason,
What is the actual reason is for specifying the SCK polarity and Phase in which mode is determined.

  • 3
    \$\begingroup\$ The short answer is that there is no "official" SPI standard like there is for many other interfaces (such as I2C). Different SPI devices have different timing requirements. \$\endgroup\$ Oct 3, 2019 at 7:19
  • \$\begingroup\$ Hmm, That explains it a bit, But I am expecting a answer which elaborates your point, Like how electrically assigning different reading mode will solve the timing requirements, Forgive me if I am not able to gauge I am new to it. \$\endgroup\$
    – FlyingDodo
    Oct 3, 2019 at 8:58
  • \$\begingroup\$ Yes, agrees to Caleb Reister, Even those modes and sampling points are modified as per manufacturer to get higher data rates on SPI bus. \$\endgroup\$
    – user19579
    Oct 3, 2019 at 11:16

1 Answer 1


SPI module on a microcontroller can be used to talk to several slave chips that might use different modes. For instance one chip might require rising clock edges to load data, and another chip might require falling clock edges to load data. The communication has to use the right settings for each chip or it fails to transfer data reliably, so there is a need to select which settings to use. So the last line you are confused about just means that one settings are used with one chip and between transmissions settings can be changed so another settings can be used with another chip.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.