티스토리 뷰

Study/EmbeddedSystem

[Embedded] Serial Communication

생각많은 소심남 2017. 7. 10. 00:12

  아마 임베디드 개발을 하다보면 제일 많이 나오는 통신 규격이 직렬통신(serial communication)일 것이다. 많은 핀이 필요한 병렬 통신(parallel communication)과는 다르게 serial communication은 핀 몇개만 가지고 쉽게 데이터 통신이 가능하다. 다만 큰 데이터를 전달하기에는 핀의 갯수가 부족하기 때문에 일반적으로는 큰 데이터를 정해진 크기의 패킷으로 분리해서 그 패킷들을 한꺼번에 보낸다.

 보통 시간과 공간 측면에서 통신이 발생할 경우, 진행되는 과정은 크게 3가지 과정이 있다.

 1. Encoding : 보내고자 하는 데이터를 암호화한다.

 2. Transmission : encoding후 생성된 packet을 상대방에게 전달한다.

 3. Decoding : 수신한 데이터를 복호화한다.

이 때 Transmission이 발생하는 매개체를 보통 channel이라고 하는데, 여기를 통해서 생성된 패킷들이 상대방에게 전달된다. 그런데 channel이라고 하는 것은 딱 정형화된 개체가 아니라 데이터를 전달하는 모든 매체를 표현할 수 있다. 가령 옛날부터 통신 수단으로 많이 사용되었던 연기나, 봉화, 깃발, 또 수화에 사용되는 손이나 팔도 channel이 될 수 있는 것이다.

 이런 통신 수단을 전세계 표준으로 하나의 프로토콜화 시킨 것이 있고, 이걸 보면 아마 한번쯤은 들어봤을 법한 규격들이 있다.

 - RS-232 : serial port를 통해서 통신
 - RS-422 : differential full duplex
 - RS-485 : differential half duplex
 - I2C : I/O peripheral 간의 통신
 - I2S : sound 관련 pheripheral 간의 통신
 - SPI, Ethernet, SATA etc...

channel에 대해서 조금더 설명하자면, 유선 통신 규약 내에서의 channel이라고 하는 것은 구리 선같은 것으로 연결되어 chip2chip간의 데이터를 전압의 크기로 전달할 수 있는 것을 말하며, 무선 통신과 같은 것은 전자기장을 공기를 통해서 전달하는 형태를 말하는데, 이때 channel은 공기가 될 것이다.

댓글