본문 바로가기

반응형

임베디드

(18)
4. MCU 보드 제작기 - 저항과 커패시터 MCU 보드를 설계하면서 다양한 저항과 커패시터를 사용한다. 저항은 과전류를 보호하여 마이크로컨트롤러 같은 소자들이 오동작하거나 망가지는 것을 방지한다.  커패시터의 경우 전원으로부터의 고주파 잡음을 제거하는 디커플링(Decoupling), 노이즈를 제거하는 바이패스 등 다양한 역할을 수행한다.   회로이론에서 단순하게 저항의 크기나 커패시터의 크기만을 생각했던 것과 다르게 실제 설계에 있어서는 생각해야 할 부분이 많다. 저항 소자도 여러가지 종류가 있고, 커패시터 소자도 여러 종류가 있으며 회로의 목적에 따라서 적절한 종류의 소자를 사용할 수 있어야 한다. 다음은 저항 소자의 종류와 커패시터 소자의 종류를 나열한 것이다. 저항의 종류탄소피막 저항기 : 세라믹 로드에 탄소 분말을 피막 형태로 입힌 후 나..
3. MCU 보드 제작기 - 파워 블록(LDO Regulator) 저번 글에서 다이오드 OR회로를 이용하여 여러 외부 전원 사이의 쇼트와 역방향 전류를 방지해 주었다. 이제는 MCU 보드를 동작시키는데 적압한 전압을 가지는 전원으로 전압 레벨을 조정해주어야한다. LDO Regulator를 사용하면 쉽게 원하는 전압 레벨로 전원을 조정할 수 있다. LDO Regulator는 전압 레귤레이터의 일종으로, 전압을 안정화 시키는 역할을 한다. LDO는 Low Dropout의 약자로 LDO Regulator는 낮은 입출력 전위차에서도 동작하는 리니어 레귤레이터를 뜻한다. LDO의 원리는 OPAMP와 증폭기(BJT, FET 등)를 이용하여 feedback 회로를 구성하고 출력 전압을 사용자가 원하는 전압의 전원으로 출력하는 것이다. 자세한 내용은 이 블로그의 글을 참고하기를 바란..
2. MCU 보드 제작기 - 파워 블록(OR 회로) 보드를 동작하기 위해서는 당연하지만 전력을 공급해주어야 한다. STM32F103RBT6 소자의 경우 2V ~ 3.6V 사이의 전압을 인가해주어야 동작하고, 최대 150mA의 전류를 요구한다.  우선은 외부 전원이 들어오는 상황을 생각해보자. 크게 USB 전원, 배터리 전원, UART 전원을 통해서 약 5V의 전력이 공급될 것이다. 다이오드 OR 회로를 이용하여 전원이 동시에 공급 되었을 때 다른 전원으로 전류가 흐르는 것을 방지하고, 쇼트가 일어나는 것을 방지할 수 있다. 회로 설계의 목표는 다음과 같다. 낮은 전력 손실 : Vf가 작은 것을 선택 -> 너무 큰 전압의 강하는 보드의 동작에 지장을 줌정격 전류 : 300mA( STM32F103RBT6  소자 최대 전류(150mA) x 2(margin))그..
1. MCU 보드 제작기 "규칙으로 배우는 임베디드 시스템"이라는 책을 읽고 책의 저자가 블로그에 자작 MCU 보드를 만드는 방법을 자세하게 올려두었다는 것을 알게 되었다. 전자회로 설계에 필요한 이론적인 내용뿐만 아니라, 회로설계, PCB 설계에 필요한 실전적인 내용과 적용 사례도 담고 있어서 유익했었다. 회로설계부터 실제 제품 수주까지 한 번 정도는 전 과정을 밟아볼 필요가 생각했고, 블로그를 참고하며 실습을 진행했다. 회로설계, PCB 아트웍을 모두 끝냈고, JLCPCB에 PCB와 PCB Assembly를 의뢰하였다. 보드가 도착하고 테스트를 완료하면 끝날 것 같다. 내용을 정리할겸, 블로그를 작성하기로 하였다.  이번 실습의 목적은 STM32F103RBT6 마이크로컨트롤러를 중심으로 하는 범용 보드를 제작하는 것이다. J..
6. 임베디드 실습 : 버튼 동작(Polling, Interrupt) 버튼을 동작시켜 보자. 두 가지 방식이 있다. 첫 번째 방식은 폴링(Polling)이고, 나머지 하나는 인터럽트(Interrupt)이다. 폴링 방식은 장치, 프로그램 등에 대해 충돌 회피, 동기화 처리 등을 목적으로 다른 장치 또는 프로그램의 상태를 주기적으로 검사하여 일정 조건이 만족하는 지를 판단하는 것이다. 실습할 것을 예로 들면, 버튼이 눌렸는 지를 판단하기 위해, main loop에 상에 주기적으로 버튼이 눌렸는 지 판단하는 함수를 추가하는 것이다. 인터럽트 방식은 폴링 방식과는 다르다. 인터럽트 방식은 프로그램이 실행되고 있는 중에, 하드웨어적인 오류, 사용자 정의한 상황 등 예외상황이 발생하여 처리가 필요할 때, MCU가 이를 먼저 치리하도록 하는 것이다. 실습의 예로 들면 버튼이 눌릴 경우..
5. 임베디드 실습 : GPIO + Systick 이제 드디어 LED를 켜볼 것이다. 간단한 동작을 위해 참 돌아돌아 온 것 같다. 이번 글에서는 보드에 장착되어 있는 LED를 주기적으로 키고 끌 예정이다. GPIO(General Purpose Input Output)는 입력이나 출력을 포함한 동작이 런타임 시에 사용자에 의해 제어될 수 있는, 집적 회로나 전기회로 기판의 디지털 신호 핀이다. GPIO를 조작하기 위해서는 다음과 같으 과정을 거쳐야 한다. 조작할 pin을 포함한 포트에 클럭소스를 배분한다. 해당 pin 입출력을 설정한다. 레지스터를 조작하여 디지털 출력을 조정한다. 사용하는 레지스터는 다음과 같다. 각각의 레지스터에 대해서 간단하게 설명해 보겠다. APB2ENR 레지스터는 입출력 장치에 클럭 소스를 배분할 지 안할 지를 결정한다. CPI..
4. 임베디드 실습 : Main System Clock Source 클럭(Clock)을 설정해야 한다. 기기가 제대로 동작하기 위해서는 시간의 기준이 되는 신호가 필요하다. 이 신호가 바로 클럭이다. 클럭의 속도가 빨라지면 내부에서 명령어를 처리하는 속도가 빨라진다. 게임에 관심이 있는 사람이라면 오버클럭(Over clock)이라는 용어를 들어본 적이 있을 것이다. 기존의 안정성을 고려하여 설정된 클럭 수보다 더 높게 클럭을 설정하여 성능을 끌어올리는 것인데, 여기서의 클럭이 우리가 다룰 클럭과 같은 의미이다. 클럭을 높이면 왜 동작이 빨라지는 것인가? 앞서서 언급했던 것처럼 클럭은 MCU 동작의 기준이 된다. 예를 들어 0과 1의 값을 반복하는 클럭이 있다면, 특정 레지스터에서 다른 레지스터로 값을 넘길 때는 0에서 1로 클럭 값이 전환되어야 한다는 등 하드웨어적으로 ..
2. 임베디드 실습 : ldscript 작성 컴파일한 오브젝트 파일들은 대부분 바로 실행할 수 있는 형태가 아니다. 오브젝트 파일들을 그룹 짓고, 심볼 간 의존성을 해결해야 하는데, 이러한 작업을 링킹(Linking)이라고 한다. 링커 스크립트는 타깃에서의 메모리 섹션의 서술을 담은 파일이다. 링커가 플래시의 올바른 위치에 심볼을 위치시키고, 코드가 참조할 수 있는 메모리 매핑 영역의 특수위치에 대해 소프트웨어 구성요소에 지시하기 위해 사전에 알고 있어야하는 정보이다. 스크립트는 C 코드와 상호작용할 수 있고, 스크립트에 의해 정의된 심볼을 내보낼 수 있다. 다음은 실습에 사용할 스크립트 파일의 내용이다. MEMORY { FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K RAM (rwx) : ORIGIN = 0x2..

반응형