본문 바로가기
Embedded/Raspberry PI

Serial Interfaces

by kjy1010 2023. 12. 28.

Interfaces

 

 

  • Rpi에는 다른 장치와 통신할 수 있는 여러 인터페이스가 있습니다
  • GPIO이외에도 PWM, UART, I2C, and SPI 인터페이스를 가지고 있습니다. 

PWM

PWM 신호와 듀티 사이클 그리고 전류 값의 관계

 

  • Pulse Width Modulation
    - 하나의 와이어 및 시간 축을 사용하여 이진법(0,1)이 아닌 일부 범위의 값(1,2,3,…100,)을 표현할 수 있습니다
    - 모터 속도, LED 밝기 등을 제어할 수 있습니다.
    -  핀(analogue)의 전압 출력을 변조합니다
    - 아날로그 출력의 특성상 노이즈가 발생할 수 있음 -> 불안정
    - 정전압으로 안정적인 제어가 가능

UART

 

  • UART (Universal Asynchronous Receiver Transmitter)
    - 시작/종료 신호 사용
    - 느린 통신
    - 시작 비트, 데이터 비트, 중지 비트
    - 라즈베리 파이는 UART만 있습니다
    - 보레이트는 사전에 설정해야 합니다
    - 두 장치 간의 통신을 위해서는 일종의 프로토콜이 필요합니다

    - 단일 회선을 통한 통신(병렬이 아님)
    - UART는 시리얼 통신입니다. 데이터는 시간 축에 의해 변조됩니다

  • USART (Universal Sync/Asynchronous Receiver Transmitter)
    - 클릭 신호를 사용
    - 고속
    - clock line이 필요함
    - 동기화 비트, 시작 비트, 데이터, 중지 비트

UART에 대해 더 자세하게 알아보겠습니다.

 

 

  • 두 장치 간의 통신을 위해서는 일종의 프로토콜이 필요합니다
    - 두 장치 간의 주파수가 다르거나 동기화할 수 없습니다
  • 단일 회선을 통한 통신(병렬이 아님)
    - UART는 시리얼 통신입니다. 데이터는 시간 축에 의해 변조됩니다

 

  • 2 Rpi는 UART 인터페이스를 통해 서로 통신할 수 있습니다.
    - 동일한 "baud rate"를 사용하도록 설정해야 합니다
  • baud
    - baud는 기호율을 측정하는 일반적인 단위이며, 이는 다음과 같은 구성 요소 중 하나입니다
    데이터 채널을 통한 통신 속도를 결정합니다.
    - baud rate : 초당 전송되는 심볼 수.

IC2

 

 

  • I2C(Inter-Integrated Circuit)
    - Philips에서 개발
    - 마이크로 프로세서와 저속 주변기기 간의 통신에 사용됩니다.
  • Master / Slave
    - 마스터가 전체 통신을 제어합니다
    - R/W 데이터가 발생하기 전에 주소가 발생해야 합니다 -> 많은 디바이스를 가지고 있는 통신에 좋습니다
    - 동일한 버스와 짧은 반복 데이터 통신
  • I2C는 클럭 신호를 사용하여 동기화를 수행합니다
  • 마스터와 슬레이브 간에 필요한 4개의 회선 – VCC, GND, SDA, SCL
    - SDA는 데이터 전송에 사용됩니다.
    - SCL은 클럭 신호를 전송하는 데 사용됩니다
  • Data write (Master -> Slave)

  • Data read (Slave -> Master)

 

I2C를 라즈베리파이에서 사용하기 위해 다음과 같은 설정이 필요합니다.

 

pi@raspberrypi: ~ $ sudo raspi-config

 

위의 명령어를 통해 raspi-config를 실행하였다면 아래의 사항을 순차적으로 진행합니다.

  • “Interface Options" 을 선택
  • “I2C” 를 선택
  • “Enable” (or “Yes”) 를 선택
  • “Finish” 를 선택

pi@raspberrypi: ~ $ ls /dev/i2c*
/dev/i2c-1

 

이제 위의 명령어를 통해 I2C를 사용할 준비가 끝난것을 확인 할 수 있습니다.

 

SPI

 

 

  • SPI(Serial Peripheral Interace)
  • Motorola가 개발함
  • I2C와 같은 Master-Slave 구조
  • SCK라는 클럭 신호를 사용하여 동기화합니다
  • I2C와 달리 SS(slave select) 회선을 사용하여 주소가 아닌 통신 장치를 지정합니다

SPI를 라즈베리파이에서 사용하기 위해 다음과 같은 설정이 필요합니다.

 

pi@raspberrypi: ~ $ sudo raspi-config

 

위의 명령어를 통해 raspi-config를 실행하였다면 아래의 사항을 순차적으로 진행합니다.

  • “Interface Options” 를 선택
  • “SPI” 를 선택
  • “Enable” (or “Yes”) 를 선택
  • “Finish” 를 선택
pi@raspberrypi:~ $ ls /dev/spi*
/dev/spidev0.0 /dev/spidev0.1

 

이제 위의 명령어를 통해 SPI를 사용하기 위한 준비가 끝났음을 확인 할 수 있습니다.

'Embedded > Raspberry PI' 카테고리의 다른 글

ADC with SPI  (4) 2024.01.03
PWM 실습  (4) 2024.01.03
Raspberry PI GPIO 실습(3)  (2) 2023.12.27
Raspberry PI GPIO 실습(2)  (0) 2023.12.22
Raspberry PI GPIO 실습(1)  (0) 2023.12.21