본문 바로가기
DSP, MCU/TMS320F2838x (C28x)

TMS320F28388D ] SPI Clocking Schemes / CPOL, CPHA 설정

by eteo 2023. 8. 14.

 

 

 

TMS320F2838x칩 Clock Phase 설정에는 주의할 점이있다.

 

 

우선 SPI 통신을 하려면 CPOL(Clock Polarity)과 CPHA(Clock Phase)라는 두 가지 파라미터를 설정하는데 이 설정 조합에 따라 다음의 4가지 SPI 모드가 있다.

 

 

 

 

 

 

 

 

그리고 TMS320F2838x driverlib에도 Mode 설정이 존재하는데 CPOL은 동일하지만, CPHA를 설정할 때 주의가 필요하다.

 

 

 

 

 

 

 

보통은 CPOL, CPHA 설정에 따라 클럭과 데이터를 동기화하는 방법은 다음과 같다.

 

  • CPOL = 0: IDLE 일 때 클럭이 LOW 레벨이다.
    • CPHA = 0 : 데이터가 클럭의 first edge에서 캡쳐(샘플링)되고, 그 다음 edge에서 전파(출력)된다.
    • CPHA = 1 : 데이터가 클럭의 second edge에서 캡쳐(샘플링)되고, 그 다음 edge에서 전파(출력)된다.
  • CPOL = 1 : IDLE 일 때 클럭이 HIGH 레벨이다. 
    • CPHA = 0 : 데이터가 클럭의 first edge에서 캡쳐(샘플링)되고, 그 다음 edge에서 전파(출력)된다.
    • CPHA = 1 : 데이터가 클럭의 second edge에서 캡쳐(샘플링)되고, 그 다음 edge에서 전파(출력)된다.

 

 

 

 

 

그런데 유저매뉴얼 SPI CCR 레지스터 설명을 봐보자.

 

예를 들어 CLK POLARITY 가 0이고 CLOCK PHASE 가 0일 때 데이터가 상승에지에서 출력되고 하강에지에서 입력된다고 되어있다.

 

이는 일반적인 CPOL = 0, CPHA = 1 의 동작이니, 즉 CPHA를 반대로 설정해야 의도한대로 동작하는 것이다.

 

 

 

 

 

 

 

매뉴얼의 SPICLK signal options 그림을 참조하자.

 

그림 아래 설명에도 CPOL, CPHA 설정은 부품 제조업체마다 다를 수 있으니 아래 waveform을 보고 선택하라고 되어있다.

그러니 Receive latch points를 기준으로 보고 선택하면 되겠다.

 

 

 

 

 

 

 

실제로도 제어하려는 IC가 mode 3(CPOL = 1, CPHA = 1)을 지원하면, TMS320F2838x 칩에서는 CPOL = 1, CPHA = 0 으로,

IC가 mode 0(CPOL = 0, CPHA = 0)을 지원하면 TMS320F2838x 칩에서는 CPOL = 0, CPHA = 1로 설정해야 통신이 잘 되는 것을 확인하였다.