본문 바로가기

전자공학/기초지식

임베디드 하드웨어 엔지니어가 알아야 할 인터페이스 소개: 초보자용!

반응형

 

 

 

 

 

 

안녕하세요! D.U.T입니다!

방문 및 클릭해 주셔서 감사합니다!

 

 

 

이번 포스팅은 초보 하드웨어 엔지니어가 알아야 할 인터페이스를 소개하려고 합니다.

 

하드웨어 인터페이스를 소개하는 이유는 이렇습니다.

제 티스토리에 방문하시는 분들은 아마도 임베디드 하드웨어에 관심이 있는 분이라고 생각합니다.

방문하시는 분들에게 최대한 도움이 되는 정보를 제공해 보도록 하겠습니다.

 

초보 하드웨어 엔지니어가 알아야 할 인터페이스를 소개하기 앞 서 간단하게 임베디드 시스템이란 무엇인지 알아보겠습니다. 

 

☆ 임베디드 시스템이란?

임베디드 시스템(embedded system)은 제품에 내장된 제한된 리소스로 특정 작업을 수행하도록 설계된 컴퓨터 시스템입니다. 임베디드 시스템은 자동차, 스마트폰, 의료 기기, 세탁기, 냉장고 및 가전제품과 산업 기계와 같은 많은 일상적인 장치에서 쉽게 찾을 수 있습니다. 일반적으로 모터 제어, 신호 측정 또는 데이터 처리와 같은 특정 기능 또는 일련의 기능을 수행하도록 설계됩니다. 

 

 

( 임베디드 시스템 )

 

 

임베디드 시스템은 특정 설계 요구사항 때문에 일반적으로 특수 하드웨어 및 소프트웨어 도구를 사용하여 설계됩니다. 예를 들면, 마이크로컨트롤러가 중앙 처리 장치로 사용될 수 있으며, 시스템은 임베디드 시스템용으로 설계된 실시간 운영 체제(RTOS)에서 실행될 수 있습니다. 임베디드 시스템 소프트웨어를 개발하는 데 사용되는 프로그래밍 언어는 어셈블리 언어나 C와  C++ 같이 로우 레벨 언어로 개발합니다. 

 

 

 


 

 

 

그러면 임베디드 시스템(embedded system)에서 하드웨어 인터페이스는 왜 필요할까요?

 

 

 

잠시 생각의 시간을 가져보겠습니다. 

 

 

 

 

생각해보셨을까요?!

 

여러분이 생각하신 내용이 정답일 수도 있습니다!

 

항상 자유롭게 여러 생각을 해보는 게 좋다고 저는 생각합니다. 

 

개인적으로 생각하는 내용과 일반적으로 알려진 사실을 말씀드리겠습니다. 

 

임베디드 시스템(Embedded system)에서 하드웨어 인터페이스가 필요한 이유는 이렇습니다!

 

 

 

▶임베디드 시스템(Embedded system)에서 하드웨어 인터페이스가 필요한 이유!

임베디드 하드웨어 인터페이스는 시스템이 내부 세계와 외부 세계와 통신하는 수단입니다. 

 

 

( 하드웨어 내부 인터페이스 구성 예 )

 

내부 세계와 통신하는 이유는 이렇습니다. 마이크로컨트롤러가 중앙처리장치로 사용되면, 임베디드 시스템 제어 왕으로서 자기 밑에 있는 신하들에게 명령을 하달하거나 각 정보들을 수집해서 모든 일을 관장한다고 이해하시면 됩니다. 구체적으로 메인 프로세스가 다른 IC들(MCU, Sensor, FPGA 등)에게 레지스터 설정 명령어나, 실시간 데이터를 전달받아 특정 기능을 수행하도록 합니다. 

 

 

 

( 하드웨어 외부 인터페이스 구성 예 )

 

다음으로 외부 세계와 통신하는 이유는 이렇습니다.

임베디드 시스템과 외부 장치 간의 물리적 연결을 제공하여 데이터를 시스템 안팎으로 전송할 수 있도록 하거나 디버깅 목적을 가지고 있습니다.

임베디드 시스템 입장에서는 데이터나 결과물을 전송하는 목적이 크지만 펌웨어 및 임베디드 소프트웨어 개발자, 하드웨어 엔지니어에게는 디버깅 용도로 가장 많이 사용합니다. 개발을 하다 보면 항상 문제가 발생하고 그 문제를 해결해야 하기 때문입니다. 

 

 

 

 

 

▶임베디드 시스템 하드웨어 인터페이스 소개! - 초보자용

임베디드 하드웨어 엔지니어가 알아야 할 임베디드 시스템에서 일반적으로 사용되는 다양한 유형의 하드웨어 인터페이스를 나열하고 간략하게 설명드리겠습니다. 구현 방법이나 동작 원리 설명은 내용이 많으므로 개념 위주로 간단하게 소개드리겠습니다. 

참고로 소제목으로 초보자용으로 표기하였지만, 임베디드 시스템을 개발하는 모두가 알면 좋은 내용이라고 생각합니다.

 

 

 

1. I²C (Inter-Integrated Circuit)

I²C는 아이스퀘어드시라고 부르며 혹은 그대로 아이투시라고 부르기도 합니다. 

I²C는 마이크로컨트롤러와 동일한 버스의 여러 장치 간에 데이터를 전송할 수 있는 2 와이어 직렬 통신 인터페이스입니다. 일반적으로 센서와 다른 주변 장치 간의 저속 통신에 사용됩니다.

 

( Inter-Integrated Circuit )

 

회로 설계에서는 I²C는 직렬 데이터(SDA)와 직렬 클럭(SCL)이라는 두 개의 양 방향 라인을 사용합니다. 최대 전압은 +5 [V]까지이며, 일반적으로 +3.3 [V]가 시스템에 사용되지만 다른 전압도 가능합니다. 

 

 

 

2. SPI (Serial Peripheral Interface)

SPI는 마이크로컨트롤러와 센서, 데이터 저장 장치 및 디스플레이와 같은 주변 장치 간에 데이터를 고속으로 전송할 수 있는 동기식 직렬 통신 인터페이스입니다.

 

( Serial Peripheral Interface )

 

SPI는 일반적으로 단일 마스터와 함께 Master-Slave 아키텍처를 사용하여 전이중 모드에서 통신합니다. 슬레이브 선택(SS) 라인을 사용하여 개별 칩 선택(CS)을 통해 여러 슬레이브 장치도 지원할 수 있습니다.

 

 

 

3. USB (Universal Serial Bus)

USB는 모두 익숙하시죠? USB(Universal Serial Bus)는 마이크로컨트롤러와 컴퓨터 또는 기타 장치 간의 통신에 사용되는 일반적인 인터페이스입니다. 고속 데이터 전송을 제공하며 임베디드 시스템을 프로그래밍하고 디버깅하는 데 일반적으로 사용됩니다. USB는 너무 대중적으로 많이 알려져 있으므로 많은 설명은 드리지 않겠습니다. 핵심은 임베디드 시스템에서 디버깅용으로도 사용한다는 것만 아시면 됩니다. 

 

 

 

4. 이더넷 (Ethernet)

이더넷(Ethernet)은 컴퓨터 네트워크 기술입니다. 일반적으로 많이 알려진 LAN 및 WAN에서 가장 많이 활용되는 기술 규격입니다. LAN 포트는 모두 알고 계시죠?

 

(이더넷) Pixabay @planet_fox

 

이더넷은 내장된 시스템이 네트워크에 연결하고 네트워크의 다른 장치와 통신할 수 있도록 해주는 네트워크 인터페이스입니다. 일반적으로 산업 제어 시스템 및 사물 인터넷(IoT) 응용 프로그램에 많이 사용됩니다.

 

 

 

5. UART

UART(Universal Asynchronous Receiver/Transmitter)는 데이터를 한 번에 한 비트씩 전송할 수 있는 널리 사용되는 직렬 통신 인터페이스입니다. 일반적으로 마이크로컨트롤러와 컴퓨터 또는 다른 마이크로컨트롤러 간의 통신에 사용됩니다.

 

( Universal Asynchronous Receiver/Transmitter )

 

 

 

6. 블루투스 및 Wi-Fi

내장된 시스템이 다른 장치와 무선으로 통신할 수 있도록 해주는 무선 통신 인터페이스입니다. 일반적으로 IoT 애플리케이션 및 무선 센서 네트워크에 사용됩니다. 가전제품을 예로 설명드리면, 세탁기, 냉장고, TV 등이 모두 블루투스 및 Wi-Fi를 지원합니다. 블루투스 및 Wi-Fi도 너무 대중적으로 많이 알려진 기술이므로 많은 설명은 드리지 않겠습니다. 

 

 

 


 

 

 

임베디드 하드웨어 엔지니어가 알아야 할 인터페이스를 최대한 쉽게 소개해드리려고 했습니다만, 많은 도움이 되셨는지는 모르겠습니다. 

 

개인적으로 실제 많이 사용해 본 인터페이스를 순서를 나열해 보면I²C, SPI, USB입니다. 임베디드 시스템 설계에 많이 적용하거나 사용합니다.

I²C, SPI, USB 회로 설계는 어렵지 않으니 인터넷이나 책을 참고하여 공부를 한번 해보시는 걸 추천합니다.


마지막으로, 긴 글 읽어주셔서 감사합니다.

 

궁금한 점은 댓글 남겨주시기 바랍니다. 

 

 

 

 

 

 

 

 

 

 

반응형