-라즈베리파이 끼리의 SPI 통신은 한 대를 Master, 다른 한 대를 Slave로 설정하여 진행합니다.
- 라즈베리파이는 기본적으로 Master 모드만 지원하므로, Slave 역할을 수행하려면 커널 모듈 설정 변경 및 추가적인 핀(GPIO) 배선이 필요합니다.
1. 핀(Pin) 연결도
Master와 Slave 라즈베리파이의 핀을 다음과 같이 다이렉트로 연결합니다.
MOSI (Master Out Slave In) <---> MOSI
MISO (Master In Slave Out) <---> MISO
SCLK (Clock) <---> SCLK
CE0/1 (Chip Enable) <---> GPIO 핀 (Slave의 CS 역할로 사용)
GND <---> GND (접지 필수)
2. Slave 설정 (수신기)
라즈베리파이는 기본적으로 하드웨어 슬레이브를 지원하지 않으므로, 기기 트리(Device Tree) 오버레이 설정이 필요합니다.
1) 터미널 창을 열고 /boot/firmware/config.txt 파일을 엽니다.
2) 파일 맨 아래에 dtoverlay=spi-slave를 추가하고 저장합니다.
3) 라즈베리파이를 재부팅합니다.
3. 통신 테스트 파이썬 코드
파이썬의 spidev 라이브러리를 활용하여 통신을 주고받을 수 있습니다.
Master 라즈베리파이 (송신 및 수신):
---< SPI_master.py >-----------------------------
import spidev
import time