SPI 통신 구현 및 디버깅 방법
본문 바로가기
전자회로

SPI 통신 구현 및 디버깅 방법

by 124578 2021. 5. 9.

SPI 통신 회로를 구성 했는데 생각처럼 통신이 안되는 경우가 있습니다.

저도 SPI통신 회로를 구성한 후 다양한 문제로 인해 통신에 어려움을 겪었는데요. 

오늘은 구현절차와 디버깅 방법에 대해 적어보겠습니다.

SPI통신에 대한 기본개념은 아래 포스팅을 참조해 주세요.

 

developer-depot.tistory.com/79

 

SPI 통신 설명 및 분석 방법

SPI 통신은 PCB 상의 칩과 칩 사이에서 마스터 슬레이브 모드로 서로 통신을 하는 기법 입니다. 아래 설명 글은 슬레이브 칩을 FM25W256으로 설명 하겠습니다. 일반적으로 마스터는 마이크로 컨트롤

developer-depot.tistory.com

 

 

 

1. 회로 체크

 

 

위 그림처럼 구성이 되어있는지 우선 확인합니다. MASTER는 대부분 마이컴이 될것이고 SLAVE는 SPI를 지원하는 칩으로 생각할 수 있습니다. SLAVE측은 기본적인 SPI 관련 통신 말고도 다른 기능적인 단자가 존재 할 수 있습니다. 

하지만 지금은 그런 단자들은 없다고 생각하고 기본적인 SPI 통신단자만 있다고 가정하겠습니다. 

 1) 우선 먼저 보드에 전원을 넣은 후 5V 전압이 제대로 인가되는지 확인 합니다.

 2) 각 단자에 전원이 제대로 인가 되었는지 확인 합니다.

 3) 전원단이 확인 되었다면 다음단계로 넘어 갑니다.

 

2. 펌웨어 작성

  아래 SLAVE 단자에 FM25W256이 연결되어 있다고 가정하겠습니다.

   - FM25W256은 메모리 IC 입니다.

 

 

기본적인 마이컴 펌웨어는 마이컴 종류에 따라서 작성법이 다 틀리겠지만 기본적인 구성은 아래와 같습니다.

 

 1) CPU에서 제공하는 SPI 칩의 초기화 설정을 확인하여 작성합니다.

 2) 기본적인 코드를 작성하여 각 단자를 오실로 스코프로 찍어 파형이 출력되는지 확인합니다.

 

  

 

 - SPI 프로그램  쓰기 코드 플로우

 

  CS(LOW); // 칩셀렉트

  WRITE(0x06); //명령 전송

  CS(HIGH); //칩셀렉트 해제

  

 - SPI 프로그램  읽기 코드 플로우

 

  CS(LOW); // 칩셀렉트

  WRITE(1byte); //명령 전송

  SEND_READ(1byte); // 읽기 클락 전송

  CS(HIGH); //칩셀렉트 해제

 

모든 통신이 정상이라면 아래와 같은 파형을 오실로스코프에서 확인 가능합니다.

SPI 통신은 기본적으로 타이밍 차트가 제일 중요합니다. 

모든 SPI통신칩은 아래와 같은 타이밍차트를 제공합니다. 

우선적으로 핀단자에 대한 설명과 타이밍 차트를 보실것을 추천드립니다.

 

 - 쓰기인 경우

 - 읽기인 경우

 

 처음만에 대부분 위와같은 파형을 쉽게 볼수는 없을 것입니다.

 

3. 디버깅 방법

  만약 위와 같은 파형을 볼수 없는 경우라면 디버깅을 할수 밖에 없습니다.

  모든 펌웨어 구현 및 디버깅의 기본 점검은 하드웨어 -> 소프트웨어 입니다.

 

  1) 전압상태를 체크

   - 하드웨어 VDD 단을 체크하여 전압이 정상적인지 확인합니다.

   - 상태가 정상적이라면 다음단계로 갑니다.

 

 

 

  2) MOSI단의 파형이 전송되지 않는 경우 

  

   - CS단자가 제대로 LOW가 되는 확인합니다.

   - SCLK클럭이 제대로 전송되는지 확인합니다.

   - MOSI단자의 파형이 찌그러지는 경우는 MOSI가 다른단자와 SHORT(단락) 되지 않았는지 확인합니다.

   - 마이컴단의 펌웨어에서 SPI관련 레지스트리 설정을 확인합니다.

   - 오실로스코프로 파형이 정상인지 확인합니다.

   상태가 해결되었다면 다음단계로 갑니다. 

 

  3) MISO 단의 파형의 응답이 없는경우 

   - MISO단이 다른단자와 SHORT 되지 않았는지 확인합니다.

   - 마이컴단의 레지스트리 특히 SPI모드 설정을 확인합니다.

   - 오실로스코프로 파형이 정상적인지 확인합니다.

 

  MISO에서까지 응답이 오실로스코프상에서 정상이라면 대부분 SPI 기본 통신은 된다고 보시면 됩니다.

  이후에는 펌웨어단에서 통신이 제대로 올라오는지 확인합니다.

  이를위해서는 대부분 SPI 칩에서 제공하는 기본 상태 값을 읽어 보는것을 추천합니다.

  특정 칩에서는 칩의 시리얼넘버같은 것을 읽어 보게끔 제공합니다. 

 

 

  4. 기능의 구현

 

   모든것이 완벽하다면 데이터시트상의 SPI기능을 살려 원하는대로 기능을 구현합니다.

   대부분 SPI통신칩은 초기화 시퀀스가 존재 합니다. 

   초기화 시퀀스를 펌웨어가 처리해주고 나서야 원하는 기능을 처리 할 수 있습니다.

 

  

 

 

'전자회로' 카테고리의 다른 글

아두이노 개발 보드의 종류  (0) 2021.10.27
op amp (연산 증폭기) 버퍼회로  (0) 2021.10.26
op amp(연산 증폭기)  (0) 2021.10.13
SPI 통신 설명 및 분석 방법  (4) 2021.05.06
R 저항 소자 개념 정리  (3) 2021.01.11

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로