본문 바로가기

Embedded System

통신 프로토콜(I2C, SPI, ISP, UART)

반응형

 


 

안녕하세요.

이번 게시글에서는 임베디드, FPGA등 다양한 개발 보드와 환경에서 가장 많이 사용하는 통신 프로토콜 4개에 대해 알아보겠습니다.


 

 

통신 프로토콜 (Comunication Protocol)

: 마이크로컨트롤러와 주변장치 사이에 디지털 정보를 간편하게 전송할 수 있는 방법을 제공하기 위해 만들어진 통신 프로토콜을 말한다.

 

1. I2C [Inter-Integrated Circuit]

: 여러 개의 장치를 연결하는 경우에도 신호선 두 개(SDA-Serial Data, SCL-Serial Clock)만을 연결하여 사용할 수 있다. 적은 신호선을 사용하는 장점이 있는 반면 SPI에 비해 속도가 느리며 동시 양방향 통신이 불가능하여 양방향 통신이 필요한 경우에는 전송 속도가 더 느려진다. (아두이노 우노 <=> SDA:A4, SCL:A5 / 아두이노 메가 <=> SDA:D20, SCL:D21) 

 

2. SPI [Serial Peripheral Interface]

  : 수신을 위한 별도의 연결선인 MOSI(Master Out Slave In)와 MISO(Master In Slave Out) 그리고 클록(SCK)가 존재하며 하드웨어적인 연결인 SS(Slave Select)를 사용하므로 총 4개의 연결선을 가진다. 속도가 빠르며 전이중(full-duplex) 방식으로 송신과 수신이 동시에 이루어질 수 있지만. 활성 장치를 선택하기 위해 추가 연결이 필요하므로 여러 장치를 연결하여 사용하기 위해서는 연결선이 증가한다는 단점이 있다. 

 

3. ISP [In-System Programming]

  : 마이크로컨트롤러의 플래시 메모리에 프로그램을 다운로드하여 설치하는 방법 중 흔히 사용하는 방법 중 하나가 ISP이다. 마이크로 컨트롤러가 시스템에 설치된 이후(In System) 마이크로컨트롤러의 플래시 메모리에 프로그램을 다운로드할 수 있도록 해주는 방법을 가리킨다. ISP를 위해 SPI핀(MISO, MOSI, SCK, SS, 5V, GND) 중 SS 대신 Reset을 사용하는 것 빼곤 동일한 핀을 사용한다. 리셋 핀이 HIGH(Vcc)인 상태에서 마이크로컨트롤러는 플래시 메모리에 설치된 프로그램을 실행하지만, LOW(GND)인 상태에서 마이크로컨트롤러는 ISP를 통해 프로그램을 다운로드해 설치한다. Atmega328 마이크로컨트롤러에서 ISP를 위해 사용되는 핀은 오른쪽과 같다. 

 

 

4. UART [(Universal Asynchronous Receiver/Transmitter]

: UART (Universal Asynchronous Receiver/Transmitter) 통신은 데이터를 비동기적으로 전송하는 시리얼 통신 프로토콜이다. UART는 송신(Tx, Transmit)와 수신(Rx, Receive) 간에 데이터를 주고받는 데 사용된다. 송신핀(Tx)는 데이터를 전송하는 장치이며, 데이터 비트를 전송하기 전에 시작 비트를 보낸다. 시작 비트는 데이터 프레임의 시작을 나타냅니다. 데이터 비트는 전송되는 정보를 나타낸다. 선택적으로 패리티 비트가 포함될 수 있으며, 데이터 오류를 검출하기 위해 사용된다. 마지막으로 정지 비트가 전송되어 데이터 프레임의 끝을 나타낸다.

수신기(Rx)는 데이터를 수신하는 장치이며, 전송된 데이터 비트를 수신하여 해독한다. 시작 비트를 감지하여 데이터 프레임의 시작을 확인하고, 데이터 비트를 수신하여 정보를 추출한다. 패리티 비트(있는 경우)를 사용하여 오류를 검출하고, 정지 비트를 감지하여 데이터 프레임의 끝을 확인한다.

UART는 데이터를 전송하기 위해 Tx와 Rx 두 개의 신호선을 사용하며, 비동기적으로 작동하여 별도의 클럭 신호를 사용하지 않는다. 이러한 특성으로 인해 UART는 간단한 구성으로 다양한 장치 간의 통신에 널리 사용된다.

 

 

 

 

반응형