Interfaces
- Rpi에는 다른 장치와 통신할 수 있는 여러 인터페이스가 있습니다
- GPIO이외에도 PWM, UART, I2C, and SPI 인터페이스를 가지고 있습니다.
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 |