라즈베리 GPIO
라즈베리 파이가 다른 장치들과 데이터를 주고 받는 방식
GPIO pin
- General Purpose Input/Output
- single-board computer(or microprocessor)와 다른 component 사이의 표준 인터페이스
- Rapsberry Pi 3B+에는 40-pin header가 있는데 그 중 28개가 GPIO pin들이고 나머지는 power 또는 ground pin이다
- 각 pin들에는 기본적으로 통신 방법(SPI, I2C, UART 등)이 할당되어 있다
SPI
- Serial Peripheral Interface (직렬 주변기기 인터페이스)
- 직렬 동기 통신(synchronous serial communication)의 사실상(de facto) 표준
- serial(직렬) : 데이터를 한 번에 1bit씩 순차적으로 전송하는 방식 (e.g. USB, RS-232)
- parallel(병렬) : 한 번에 여러 비트를 동시에 전송 (e.g. PCI, DDR)
- 주로 microprocessor 사이의 단거리 유선 통신에 사용된다
- master-slave(main-sub) 구조를 따른다. 하나의 main device에 여러 개의 sub(peripheral) device들이 연결해서 chip select signal 을 통해 데이터를 주고 받는다
- Motorola가 1980년대에 처음 개발했다
- 주로 microcontroller와 SD card, LCD, ADC(Analog-Digital Converter) 등의 주변기기 사이의 데이터 통신에 사용된다
- 일반적으로 네 개의 논리 신호(pin)들을 이용한다
- !(CS) (Chip Select) - 통신할 장치를 활성화하기 위해 main에서 전송하는 신호
- negative를 의미하는 ! 또는 bar는 해당 신호가 LOW(0)가 활성화를 의미하는 active low임을 나타낸다
- SCLK (Serial Clock) - main에서 보내는 clock signal
- MOSI (Master Out Slave In) - master에서 slave로 전송하는 신호(pin)
- MISO (Master In Slave Out) - slave에서 master로 전송하는 신호(pin)
- !(CS) (Chip Select) - 통신할 장치를 활성화하기 위해 main에서 전송하는 신호
sudo raspi-config
--> Interfacing Options --> SPI Enable 선택
I2C
- 1982년 Philips Semiconductors에서 개발한 Serial Communication Bus이다
- SPI와 마찬가지로 synchronous serial communication(동기식 직렬 통신)이다
- 비교적 느린 주변기기(IC)와 microcontroller(또는 processor) 사이의 단거리 통신에 사용된다. 속도보다는 단순함과 낮은 비용이 요구되는 경우에 적합하다
- Display 설정(e.g. backlight, contrast, hue)을 제어하는 등의 간단한 통신에 사용된다
UART
- Universal Asynchronous Receiver-Transmitter (범용 비동기화 송수신기)
- 비동기 직렬 통신에 사용된 장치
- UART를 사용하기 위해서는 수신측과 송신측에서 다음과 같은 설정을 동일하게 맞춰야 한다
- Voltage level
- Baud Rate
- Parity bit
- Data bits size
- Stop bits size
- Flow Control
- RS-232, raw TTL
references
- Raspberry Pi and General-Purpose Input/Output
- [WIKIPEDIA] Serial Peripheral Interface
- [WIKIPEDIA] I2C
- [WIKIPEDIA] UART