🙏 포스팅을 읽기 전 참고해 주세요 🙏
해당 블로그는 신입 개발자가 공부한 내용을 기록 용도로 운영하는 공간입니다.
최대한 오피셜한 내용을 작성하려고 노력하고 있지만, 일부 부정확한 정보가 포함되어 있을 수 있습니다.
해당 내용은 댓글이나 메일을 남겨주시면 즉시 확인 후 조치를 취하도록 하겠습니다. 감사합니다.
1️⃣ 개요
결론부터 말하자면, MICOM과 MCU(Micro Controller Unit) 혹은 Micro Controller는 동일한 의미이다.
하지만 관련 지식이 없던 나에게는 두 단어가 혼용되어 사용되다 보니 처음엔 다른 개념이라고 생각했고,
비슷한 사람이 있을 지도 모른다는 생각에 MCU에 대한 기초적인 부분을 정리하고자 한다.
MCU가 어떻게 생긴 것인지 모르는 사람들을 위해 사진을 아래에 첨부한다.
2️⃣ MCU(Micro Controller Unit)
마이컴, MCU, 마이크로 컨트롤러 모두 유사한 의미를 갖기에 본문에서는 MCU라는 키워드로 통일하여
사용하도록 하겠다. MCU는 CPU와 주변 장치(RAM, ROM 등)를 하나의 칩으로 만들어 정해진 기능을
수행하는 장치이다. 그렇기 때문에 주변 장치 없이 단독으로 사용할 수 없는 CPU와 달리 MCU는 단독으로
기본적인 동작을 하는 것이 가능하다.
필요한 기능만 수행하도록 설계되기에 저전력, 저비용 등의 장점이 있다.
기능이 많이 정해져 있지 않은 전자제품들(리모콘, 세탁기, 타이머, 프린터 등)에 사용된다.
3️⃣ MCU의 구성 요소
MCU의 내부 구조에 대해 잘 설명된 기사를 발견했기에 첨부된 이미지와 함께 설명을 인용하려 한다.
ㆍCPU - ALU : 산술 연산 및 논리 연산을 수행
CPU - Register : 임시 데이터를 저장하고 빠르게 접근할 수 있도록 함
CPU - Shifter : 데이터의 비트 이동 연산을 수행
CPU - Bus : 명령과 데이터를 메모리와 주고 받는 통로
ㆍ메모리 - ROM : 전원이 꺼져도 데이터를 유지하고, 프로그램 코드와 명령을 저장(비휘발성)
메모리 - RAM : 실행 중인 데이터와 변수를 저장. 전원을 끄면 데이터가 사라짐(휘발성)
ㆍ보조 모듈 - 외부 인터럽트 제어 장치 : 외부 신호에 반응하여 인터럽트를 발생
보조 모듈 - Bus : 보조 모듈 간의 데이터 전송 통로
ㆍ통신 모듈 - SPI, USART, I2C : MCU와 MCU 혹은 MCU와 타 장치 간의 데이터 통신 프로토콜
통신 모듈 - 타이머 : 시간 측정, 카운트 및 제어 신호 생성 담당
ㆍAD/DA 변환기 - ADC : 아날로그 신호를 디지털 신호로 변환
AD/DA 변환기 - DAC : 디지털 데이터를 아날로그 신호로 변환
ㆍ외부 장치와 인터페이스 : 외부 장치와 데이터를 주고 받는 역할. 센서, 엑추에이터, 디스플레이 등을 제어
4️⃣ MCU의 동작 방식
ㆍ프로그램 저장
프로그램 메모리(플래시 메모리)에 프로그램이 저장되는데 이는 MCU가 수행할 작업과 명령을 포함한다.
해당 메모리는 비휘발성으로, 전원이 꺼져도 프로그램이 유지된다.
ㆍ프로그램 실행
전원이 켜지면, CPU가 플래시 메모리에 저장된 프로그램을 읽어와서 명령을 실행한다.
명령 실행은 순차적으로 실행되며, 필요한 경우 반복 수행하기도 한다.
ㆍ데이터 처리
CPU가 프로그램 명령에 따라 SRAM에 저장된 데이터를 처리한다.
ㆍ입출력 제어
CPU가 입출력 포트를 통해 외부 장치(센서, 엑추에이터 등)와 상호작용하며 데이터를 주고 받는다.
입력된 데이터를 처리하거나 출력 신호를 생성하여 외부장치를 제어한다.
5️⃣ MCU의 활용 예시
대부분의 전자 제품에는 MCU가 들어간다. 전자 제품이 특정한 동작을 수행하기 위해서는 MCU에 해당
동작을 수행하는 코드를 작성해서 넣어야 하는데, 어떤 동작을 하는 코드들을 작성하는지 아래의 예시를
살펴보도록 하겠다.
ㆍ밥솥이나 TV 녹화 장치의 타이머 기능
ㆍ리모콘의 IR(적외선 신호) 방출
ㆍ휴대폰의 배터리 전압 측정 및 잔여 배터리 용량 표시
ㆍ시계의 시간 표시
ㆍ버튼을 누르면 기능 수행
ㆍUSB를 통한 컴퓨터와의 데이터 교환
📝 Reference
👉 https://halmony.tistory.com/58
👉 https://blog.naver.com/juwon412/220982641789
👉 https://www.youtube.com/watch?v=-F3nxqKU7YI
👉 https://kkhipp.tistory.com/201
👉 https://www.epnc.co.kr/news/articleView.html?idxno=79052https://kkhipp.tistory.com/201
👉 https://ddaily.co.kr/page/view/2014042112304740367 https://kkhipp.tistory.com/201
그림1 : https://www.epnc.co.kr/news/articleView.html?idxno=79052
'~2024.10' 카테고리의 다른 글
[AOS] WifiManager + Recycler View 응용 실습(JAVA) (1) | 2024.06.16 |
---|---|
[JAVA] 자바에서 스레드를 구현하는 두 가지 방법(JAVA 5 이전) (0) | 2024.06.02 |
[Android] CameraX API 관련 이것저것 정리한 글 (0) | 2024.05.18 |
[Ubuntu 22.04] 사용자 목록(User List) 확인하는 명령어들 (0) | 2024.05.14 |
[Kotlin] 코틀린 기초 문법 정리① : 변수 (0) | 2024.05.12 |