라즈베리 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)
  • 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