직렬 통신이라고도 하며 연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한 번에 하나의 비트 단위로 데이터를 전송하는 과정을 의미한다. 이러한 통신에는 직렬과 병렬 두 가지 방식이 존재하고 다음으로 동기와 비동기 시리얼 통신으로 나뉜다. 아래 그림을 보고 한 번 알아보자.

병렬(Parallel) 통신
직렬(Serial) 통신

 위의 그림이 병렬 통신 방식이고 아래 그림이 직렬 통신 방식이다. 병렬 방식은 여려 개의 데이터 선으로 한 번에 데이터를 보내기 때문에 짧은 시간에 많은 데이터를 보낼 수 있지만 그에 비례하여 많은 데이터 선의 설치와 관리를 해야 되기 때문에 비용이 그만큼 많이 들게 된다.

 그에 반해 직렬 통신은 한 개의 데이터 선으로 한 개의 비트만을 보내기 때문에 병렬보다 시간이 많이 걸리지만 그만큼 단순하고 간단한 구조를 갖고 있다. 요즘 I/O 단자들은 그렇게 크지 않기 때문에 직렬이 주로 많이 이용되고 있다.

 다음은 동기 통신과 비동기 통신에 대해 알아보자.

동기 시리얼 통신
비동기 시리얼 통신

 동기 시리얼 통신은 각각의 PC가 이러한 신호 주기로 보내겠다는 약속(Clock)을 하고 데이터를 전송하는 방법이다. 그렇기 때문에 데이터를 보내는 데이터 선 말고도 클럭 주기를 맞추는 클럭선이 하나 더 필요하다. 미리 보내는 주기(Clock)를 맞추고 데이터를 주고받기 때문에 오류가 적고, 빠른 데이터를 통신할 수 있다.

 비동기 시리얼 통신은 따로 주기를 정하지 않고 시작과 끝을 알려주고 데이터를 전송하는 방법이다. 데이터 선만 있으면 되기 때문에 매우 단순하고 빠르게 통신 회선을 구성할 수 있다. 하지만 동기 시리얼 통신에 비해 안정성이나 속도가 느리다.

 

 다음으로 시리얼 통신에는 여러가지 종류들이 있다. 그 종류들에 대해 알아보자. 파랑색은 장점, 빨간색은 단점이다.

UART(Universal Asynchronous Receiver/Transmitter) : 컴퓨터나 기타 주변장치의 시리얼 포트를 이용하는 시리얼 통신 방식

※ '범용 비동기화 송수신기'라고 불리며 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다

  • 정보 교환을 위해 송신과 수신 2개의 데이터 핀 연결을 필요로 함

  • 송신과 수신은 동시에 할 수 있는 전이중(full-duplex) 방식

  • 한 번의 하나의 장치만 연결이 가능한 1:1 통신 방식

  • 여러 개의 주변장치를 연결하기 위해서는 많은 수의 데이터 핀이 필요함

  • 다른 방식에 비해 단점이 많지만 간단하면서도 오랫동안 사용된 방식으로 많은 주변장치들이 지원함

    • Ex) RS - 232, RS - 422, RS - 485와 같은 통신 표준과 함께 사용

 

 SPI(Serial Peripheral Interface) : 짧은 거리에서 주변장치와 고속으로 정보를 교환하기 위해 주로 사용

  • 3개의 데이터 핀 연결과 1개의 제어 핀 연결로 4개의 핀 연결 필요

  • 3개의 데이터 핀 중 2개는 데이터 송수신, 하나는 동기화를 위한 클록 신호 수신에 사용

  • 동일한 SPI 포트를 통해 여러 개의 장치를 연결하는 1:n 통신이 가능함

  • 하나의 장치를 마스터(master), 다른 장치들은 슬레이브(slave)로 동작함

  • 제어 연결 핀을 통한 하드웨어적인 방식을 사용함

  • 고속의 데이터를 안정적으로 전달하고 여러 개의 장치들이 포트를 공유할 수 있음

  • 제어 핀의 수가 연결된 장치의 수에 비례하여 증가함

 

 I2C(Inter-Integrated Circuit) : 짧은 거리에서 주변장치와 저속으로 정보를 교환하기 위해 주로 사용

  • 2개의 데이터 핀 연결만을 필요로 함

  • 1:n으로 연결된 마스터-슬레이브 구조의 통신 방식

  • 2개의 데이터 핀 중 1개는 데이터 전송, 하나는 클록 신호에 사용

  • 송수신이 동시에 이루어질 수 없는 반이중 방식

  • 장치 구별을 위해 소프트웨어적인 주소를 사용하므로 별도의 제어 핀 연결은 필요없음

  • I2C 장치의 수가 증가하여도 필요로 하는 핀의 개수는 증가하지 않음

'MCU' 카테고리의 다른 글

Atmega8(A) 특징  (0) 2019.08.10
Atmega8(A) 소개  (0) 2019.08.10
ADC(Analog-Digital Converter)  (0) 2019.08.05
UART(Universal asynchronous receiver/transmitter)  (0) 2019.07.30
MCU란?  (0) 2019.07.15
블로그 이미지

Mr.HB

프로그래밍 이야기

,