아두이노를 이용하여, 디스플레이나 WIFI, Bluetooth 등 각종 모듈을 이용하다보면 수 많은 통신관련 약어들이 나온다. 하나하나 꼼꼼히 찾아보면 좋겠지만 우리는 늘 시간이 부족하지 않은가? 그러다보니 대부분 감각적으로 육감적으로 그러려니 하고 추측성 개발을 하게 된다.

이번에 본인이 여유를 가지고 하나씩 찾아본 것들을 정리해 본다. 아마 전자관련 학과나 관련 업무를 하고 있는 사람이라면 너무나 당연하게 알고 있을 것 들이다. 그러므로 이번 글을 나와 마찬가지로 비전공자를 위한 것으로 보기 바란다.

 

 

ISP 와 ICSP. 그리고 SCP

 

아두이노에 펌웨어를 업로드 할때, ISP 나 ICSP 라는 용어가 나온다. 그리고 아두이노 보드를 보면 ICSP 라고 써 있는 곳이 있다. 그 영역의 핀을 보면 MOSI, MISO, SS 등이 존재한다. 그동안 대충 통신 프로토콜인가? 하고 넘어갔었다. 이번에 정리를 하고자 한다.

 

 

ISP 와 ICSP

 

ISP 는 In-System Programming 의 약자이고, ICSP 는 In-Circuit Serial Programming 의 약자이다. 둘다 MCU 에 프로그래밍을 한다는 행위에 대한 이야기다. 좀 더 엄밀히 나눠 보자면 ICSP 는 시리얼 통신 방식으로 프로그램을 올리는 것이고, ISP 는 MCU 에 프로그램을 올리는 모든 행위를 의미한다. 그렇기에 ISP 가 좀 더 넓은 개념이라고 할 수 있다.

 

다시 말하지만 ISP 와 ICSP 는 '행위/행동' 을 지칭하는 것이지 프로토콜이 아니다. 그렇다면 보통 어떤 프로토콜을 이용하여 이 '행위'를 할까? 이때 사용되는 프로토콜이 바로 SPI 이다. 이외에 JTAG 등이 존재한다. 아두이노에서는 모두 SPI 를 이용하는것으로 보인다.

 

SPI

 

SPI 는 Serial Peripheral Interface 의 약자로서 해석하자면, '직렬 주변기기 인터페이스' 정도라고 할 수 있다. SPI 통신은 프로토콜이며 다음의 4가지로 구성되어 있다.

 

  • MOSI: Master Out, Slave In 의 약어로서, 마스터 장치에서 슬레이브 장치로 보내는 데이터 LINE
  • MISO: Master In, Slave Out 의 약어로서, 슬레이브 장치에서 마스터 장치로 보내는 데이터 LINE
  • SCLK: Serial Clock 의 약어로서, 클럭 신오를 위한 LINE
  • SS: Slave Select 의 약어로서, 각 슬레이브 장치를 선택하는 LINE

 

요약하자면 ISP 는 MCU 에 프로그램을 올리는 행위를 말하며, 그 중에서 ICSP 는 시리얼 통신 방식을 이용한 ISP 이다. SPI 는 4개의 LINE 을 이용하는 통신 프로토콜이다.

 

이제 우리가 펌웨어를 올리기 위해서 이용할때 사용하는 예제 코드인 'Arduino as ISP' 의 의미를 정확히 알 수 있게 되었다. 굳이 번역하자면, ' 아두이노를 MCU 프로그래머로' 정도가 되지 않을까?

 

 

 

UART 와 TTL

 

아두이노에 펌웨어를 업로드 할때 함께 나오는 용어가 바로 UART TTL 이라는 것이다. 나는 처음에 UART 가 USB 와 관련된 것으로 생각했다. 그럼 TTL 은 뭐지?

 

 

UART 가 뭔데?

 

UART 는 Universal Asynchronous Receiver/Transmitter 의 약어로서, 통신 프로토콜을 의미한다. 즉 우리가 흔히 생각하는 RX 와 TX로 단순하게 데이터를 주고 받는 그 Serial 통신이다.

 

 

그럼 TTL 은?

 

TTL 은 UART 통신의 전압에 대한 표준 중 하나이다. 즉 RX 와 TX 로 데이터를 주고받고 하는데, 전압을 몇 volt 로 할 것이냐에 대한 이야기다. 흔히 0 과 1 이 있다고 할때 전압 0v 는 0을 의미하고, 5v 는 1을 의미한다고 어림잡아 알고 있을 것이다. 이게 바로 TTL 에서 정의한 표준이다.

 

그러면 또 다른게 있나? 물론 있다. 바로 RS-232, RS-422, RS-485 등이다. RS-232 는 0v ~ 5v 가 아닌 -12V ~ 12V 를 이용하며, RS-485 는 차동 신호를 이용한다. 왜 서로 다른 전압을 이용할까? 그것은 바로 더 먼 거리에서 통신이 가능토록 하기 위해서다. 전압이 낮으면 아무래도 먼 거리(긴 선) 통신을 하기에 불리하다. 손실이 있으니까ㅡ

 

 

요약하자면 UART 는 RX, TX 를 이용한 통신이며, TTL 은 UART 통신의 전압 표준 중 하나이다.

"USB to UART TTL" 이라는 모듈은 PC 의 USB 통신 프로토콜을 UART 통신 프로토콜로 변환해 주는 모듈인 셈이다. 물론 전압은 0v ~ 5v 를 이용한다.

 

 

 

I2C

 

OLED Display 같은 장치를 이용하면 I2C 를 이용해 봤을 것이다. 혹은 아두이노 보드에 SCL 혹은 SDA 라고 써 있는것을 보았을 것이다.

 

I2C 는 IIC 를 의미하며, Inter-Integrated Circuit 의 약어이다. '직접 회로 간 통신' 정도로 해석이 가능하다. 즉, 시리얼 통신 프로토콜이며, 다음으로 구성되어 있다.

 

  • SCL: Serial Clock 를 뜻하며, 클럭 신호를 위한 LINE
  • SDA: Serial Data 를 뜻하며, 데이터 전송을 위한 LINE

 

 

 

가끔 I2C 통신 프로토콜의 SCL 와 SPI 통신 프로토콜의 SCLK 가 헷갈린다. 둘다 각각의 프로토콜에서 Clock 신호를 위한 LINE 을 의미하기 때문이다. 헷갈리지 않기 위해서는 다음과 같이 생각하면 편하다. I2C 는 각 LINE 의 약어가 모두 세 글자. SPI 의 LINE 약어는 모두 네 글자이다. 그러므로 SCLK 는 네 글자이므로 SPI 통신에 쓰이며, SCL 은 세 글자이므로 I2C 에 쓰인다.

 

 

 

'Hardware' 카테고리의 다른 글

아두이노의 소소한 함정들  (1) 2024.10.19
타이머 LED 만들기  (0) 2024.10.17
[ESP8266-01] 아두이노 프로그래밍  (1) 2022.03.22
[ESP8266-01] 최신 Firmware 업그레이드  (11) 2022.03.20
전압 측정기 만들기  (1) 2020.01.31