minlog

시리얼 통신(Serial Communication)

2024.01.29·조회수:
0
thumbnail
 

서론

임베디드 시스템의 핵심은 다양한 프로세서와 회로 간의 상호 작용이다. 웹 환경에서는 기기 간 통신을 가능하게 하는 프로토콜과 같은 표준 규격이 필요하다. 이에 대해 가장 널리 사용되는 시리얼 통신에 대해 살펴보겠다.

시리얼 통신의 개념

시리얼 통신은 ‘직렬’ 이라는 뜻을 가진 Serial에서 유래되었으며, 이와 대비되는 개념이 ‘병렬’Parallel이다. 따라서 시리얼 통신을 ‘직렬 통신’ 이라고 부르는 것이 적절하다. 이는 서로 다른 컨트롤러를 직렬로 연결해 통신하는 방식 중 하나를 의미한다.

  • 직렬 통신

이 방식은 데이터를 한 비트씩 전송하는 방법을 의미한다. 국도와 비슷한 개념으로 생각할 수 있다. 이 방식은 비용이나 자원 소모가 크지 않으며, 단일 선을 사용하기 때문에 하드웨어 구현이 상대적으로 간단하다. 그러나 데이터를 정리하고 수집하는 과정이 필요하다.

  • 병렬 통신

이 방식은 한 번에 8~16 비트를 전송하는 방법을 의미한다. 고속도로와 유사한 개념으로 보면 된다. 이 방식은 비용이나 자원 소모가 크며, 선이 많아서 시리얼 통신에 비해 가격이나 하드웨어적 구현이 복잡하다.

이제 통신이 어떻게 이루어지는지 알아보자.

시리얼 통신에서는 데이터가 이진 펄스 형태로 전달된다. 이진 1은 논리적으로 높은 상태(HIGH)를, 이진 0은 논리적으로 낮은 상태(LOW)를 나타낸다. 데이터를 보내는 역할을 하는 ‘송신기’는 이러한 이진 펄스를 사용해 데이터를 전송하고, ‘수신기’는 이 높고 낮은 신호를 구별하여 의미 있는 데이터로 해석한다. (단, 실제 상황에서는 하나의 송신기와 수신기만으로 구성되지 않을 수 있다.)

시리얼 통신의 구조

이런 통신 방식을 실행하기 위해 ‘송신기’와 ‘수신기’는 클럭이 동기화되어 있어야 한다. 클럭이란 이진 펄스를 논리 정보로 해석할 특정 시점을 결정하는 기준을 말한다.

송신기가 전송한 특정 이진 펄스가 있고, 8비트(8번의 논리 정보 추출이 필요하다고 가정) 데이터를 클럭을 참조하여 수신기가 읽는다고 생각해보자.

만약 클럭이 상대적으로 느리면 10111011로, 빠르면 10111101로 해석하게 된다. 이는 동일한 이진 펄스를 입력받았음에도 불구하고 발생하는 현상이다.

따라서 송신기와 수신기의 클럭을 일치시키는 것이 중요하며, 이를 ‘클럭 동기화’라고 한다. 이 클럭 동기화는 시리얼 통신에서 필수적인 요소이며, 사용하는 인터페이스 유형에 따라 동기와 비동기로 나뉜다.

시리얼 통신의 방식

1. 동기식 시리얼 통신

동기식 시리얼 통신은 각 PC가 클럭 주기를 미리 정하고 이에 따라 데이터를 전송하는 방식이다. 이 때문에 데이터 전송선 외에도 클럭 주기를 조정하는 별도의 클럭선이 필요하게 된다. 미리 설정된 클럭에 맞춰 데이터를 주고받기 때문에 오류 발생 가능성이 적고, 빠른 데이터 통신이 가능하다는 장점이 있다.

2. 비동기식 시리얼 통신

비동기식 시리얼 통신은 특정 주기를 정하지 않고, 시작과 끝을 표시하여 데이터를 전송하는 방식이다. 이 방식은 단순히 데이터 선만 있으면 되므로, 통신 회선을 간편하고 빠르게 구성할 수 있다는 장점이 있다. 그러나 동기식 시리얼 통신에 비해 안정성과 속도 면에서는 다소 떨어진다.

비동기식 시리얼 프로토콜

통신 규격 : RS-232

현재까지 1대1 통신에서 가장 널리 사용되는 규격이 RS-232이다.

RS232는 전화 통신용 모뎀 연결에 사용되는 최초의 직렬 프로토콜이다.

RS는 Recommended Standard의 약자로 현재는 EIA(Electronic Industries Alliance)/TIA(Telecommunication Industry Association)로 변경되었다.

모뎀, 마우스 및 CNC(계산된 수치 계산) 기계에도 사용된다. 단일 송신기만 단일 수신기에 연결할 수 있다. 전이중 통신을 지원하며 최대 1Mbps의 전송 속도를 허용한다. 케이블 길이는 50피트로 제한된다.

원래는 25핀을 사용했지만, 최근에는 주로 9핀을 사용하는 것이 일반적이다. 또한 이 9핀 중에서도 3핀만 연결해도 통신에 아무런 문제가 없다. (2번, 3번, 5번핀)

2번: 수신 데이터 라인(rx). 즉, DCE를 기준으로 실제 데이터를 수신하는 물리적인 선 3번: 송신 데이터 라인(tx). DCE를 기준으로 실제 데이터를 송신하는 물리적인 선 5번: 데이터의 기준점(ground)을 제공하는 선

통신 규격 : RS-422

RS422를 사용하여 최대 1Mpbs 제한까지만 데이터를 전송할 수 있다. 

RS232 시리즈의 문제를 극복하기 위해 RS422가 등장한다. RS422는 멀티 드롭 직렬 인터페이스이다.

단일 버스를 사용하여 한 번에 10개의 송신기를 4000개의 수신기에 연결할 수 있다. 두 개의 트위스트 페어 케이블(차동 구성)을 사용하여 데이터를 보낸다. 케이블 길이는 10피트이며 전송 속도는 10Mbps이다.

통신 규격 : RS-485

RS485는 업계에서 선호하는 프로토콜이다.

RS422와 달리 32개의 라인 드라이버와 32개의 수신기를 차동 구성으로 연결할 수 있다. 송신기는 라인 드라이버라고도 한다. 그러나 한 번에 하나의 송신기만 활성화된다.

동기식 시리얼 프로토콜

동기식 통신 프로토콜은 온보드 주변 장치에 가장 적합한 리소스이다.

장점은 동일한 버스에서 더 많은 장치를 인터페이스할 수 있다. 동기식 프로토콜 중에는 I2C, SPI, CAN 및 LIN이 있다.

I2C 프로토콜

I2c(Inter-Integrated Circuit)는 동일한 버스에서 서로 다른 장치 간의 데이터 교환에 사용되는 2와이어 양방향 프로토콜이다. I2c는 7비트 또는 10비트 주소를 사용하여 최대 1024개의 장치를 연결할 수 있다. 그러나 시작 및 중지 조건을 생성하기 위해서는 클럭 신호가 필요하다. 장점은 400kbps의 데이터 전송 속도를 제공한다. 온보드 통신에 적합하다.

SPI 프로토콜

SPI(직렬 주변 장치 인터페이스) 프로토콜은 중단 없이 연속 스트림으로 데이터를 송수신한다. 이 프로토콜은 고속 데이터 통신이 필요한 경우에 권장됩니다. 제공할 수 있는 최대 속도는 10Mbps이다. i2c와 달리 SPI에는 4개의 와이어가 있다. MOSI(Master out slave in), MISO(Master in slave out), Clock 및 Slave Select Signal 이론적으로 우리는 무제한의 슬레이브를 연결할 수 있으며 실제로 버스의 부하 커패시턴스에 따라 다르다.

CAN 프로토콜

이 프로토콜은 차량 시스템 또는 자동차 전용이다. 구리를 절약하기 위해 다중 전기 배선에 사용되는 메시지 지향 프로토콜이다. 차량의 자동 시동/정지, 충돌 방지 시스템 등과 같은 애플리케이션에 사용되는 다중 마스터 다중 직렬 버스다.

USB

USB 인터페이스는 직렬 또는 병렬 포트를 대체하는 가장 좋은 방법이다. USB 포트와 관련된 데이터 전송 속도는 직렬 및 병렬 인터페이스보다 상당히 빠르다. USB는 1.5Mbps(USB 1.0)에서 4.8Gbps(USB 3.0)까지의 속도를 지원한다. 오늘날 대부분의 임베디드 장치는 16진수 파일을 마이크로컨트롤러에 덤프하기 위해 USB OTG(On the Go 프로그래밍) 기술을 사용한다.

마이크로와이어

마이크로와이어는 3선 직렬 통신 프로토콜이다. 마이크로컨트롤러에는 주변 칩과 인터페이스하기 위한 직렬 I/O 포트가 있다. 최대 3Mbps 속도를 지원한다. i2c 및 SPI 프로토콜의 하위 집합보다 빠르다.

출처

https://advancedtestingservices.tistory.com/194 [에이티에스, ATS:티스토리]

https://velog.io/@jeeho102/%EC%8B%9C%EB%A6%AC%EC%96%BC-%ED%86%B5%EC%8B%A0Serial-Communication [Today Jeeho Learned, velog]