본문 바로가기
  • 다음에는 무엇을 해볼까 | 공대생의 취미 전시
PCB HW설계 실무 | 인프런 강의 공부

[ 4-2 ] MCU Schemetic 작성 | 데이터시트 분석 및 핀 역할 공부

by 이예승539 2025. 7. 25.

※ 본 글은 삼코치님의 [PCB HW설계 실무] (https://inf.run/DMhQh) 강의를 수강하며 개인적으로 공부한 내용을 바탕으로 정리한 학습 기록이며, 삼코치님의 허락 하에 작성되었습니다. 강의의 흐름과 깊이를 알기위한 예시 글이므로, 더 깊이있는 설명과 체계적인 실무 경험은 강의에서 직접 확인하실 수 있습니다!

※ 2-2, 4-2, 5-2 이외의 글은 개인적인 공부를 위해 작성하였으므로 공개하지 않습니다.


 

 MCU를 사용하기 위해선 Schemetic을 작성해 MCU와 컴퓨터를 연결할 필요가 있다. 이는 MCU에 사용된 범용 핀인 GPIO (General Purpose Input/Output) 핀에게 목적을 할당해줘야 하기 때문이다. MCU는 다른 칩들과 통신을 하게 되는데 통신하는 포트가 범용적이라 우리가 추가적으로 통신할 포트를 매칭해줘야 한다. 특히 핀의 기능들을 중복하면 안된다. 추가적으론 배선에 용이하도록 최적화를 고려해서 핀을 할당해주면 더 좋다.

 강의에선 STM 사의 핀 매핑 프로그램 CubeMX를 사용하지는 않지만, STM 사의 유튜브 채널에 자세한 설명이 잘 나와있다. 이후 PCB 거버 파일을 작성하고 어셈블리로 제작한 뒤 컴퓨터와 회로를 연결해 해보도록 하자.


STM32F103 칩의 데이터시트 읽어보기

 우리가 흔히 데이터시트를 읽는다고 하는데, 텍스트를 읽는다로 해석하기 보단 그 의미를 해석해서 schemetics에 입력하는 게 맞다고 생각한다. 우리가 TI 같은 칩 메이커가 아니니 오직 데이터시트 내 정보를 갖고 공부를 해야 한다. 하지만 데이터시트가 너무 많아 한번에 공부하기는 힘들다. 따라서 우리는 필요한 일부만 먼저 보고 추가적인 부분은 다음에 조금씩 공부할 것이다.

 

 우선 우리 회로에 디버깅용으로 쓰이는 STM32F103 데이터시트를 알아보자. (메인 프로세서인 F407은 이것보다 더 길다. 기능이 더 많아서 그럴 것이다) F103 시리즈는 데이터시트가 참 많은데, 그럼 어딜 중점적으로 봐야 할까?

 

 ① 데이터시트의 제목

F103 데이터시트의 제목. 간단하게 소자에 대해 볼 수 있다

 

 데이터시트의 제목은 칩의 기능을 간단하게 적어놓은 것이다. 소자의 특징에 대해 한눈에 알 수 있으니 내가 선정한 소자를 확인하고 쉽게 파악할 수 있다.

 

 ② Features

F103의 Feature. 소자의 전체적인 특징을 구체적으로 볼 수 있다.

 

 Feature에는 제목에서 얘기한 스펙을 구체적으로 얘기해준다. 사용되는 전원, 통신 채널 등 여러 값을 확인할 수 있다. 우리가 사용하는 소자를 확인하기 위해 모든 스펙을 찬찬히 보는 것이 아니라, 여기를 통해 전체를 확인할 수 있다.

 

 ③ 목차

F103의 목차. 목차를 클릭하면 해당 페이지로 자동으로 이동한다.

 

 목차에선 Feature의 내용과 추가적인 정보를 되게 자세하게 볼 수 있다. 우리가 사용하는 칩을 제작한 칩 메이커에서 인증해준 정보니, 보드를 설계할 때에도 이를 파악하고 제작해야 된다. 우리는 추후 칩을 어떻게 사용해야 되는지, 어떤 소자들과 같이 연결해야 되는지를 목차를 통해 빠르게 파악할 것이다.


STM32F103 Schematic 설계하기

 STM32F103의 Schematics를 설계하기 위해선 아래와 같은 정보들이 필요하다. 단순히 하나의 정보만 필요한 게 아니라 전원부터 통신, CLK, 노이즈 제거용, 리셋 등 다양한 기능이 하드웨어적으로 구성되어야할 필요가 있기 때문에 위에서 얘기했던 것처럼 데이터시트의 일부분만 참고해서 볼 것이다. 이 각 페이지에 따른 내용은 아래에 적어놨다.

STM32F103 페이지  설명
Page-11 Block Diagram
Page-15 Booting Config
Page-26 PIN Names, Package info
Page-28~33 Pin Config Table
Page-35 Load Cap, VDD
Page-36 Voltage Page
Page-37 Max Power
Page-50 Clock Config
Page-59 ESD Table
Page-66 Reset
Page-68 I2C Pull-ups
Page-77 Design Guidelines

Block Diagram. (p.11)

F103 MCU의 기능 블럭 다이어그램. 핀 명을 확인하며 어디에 사용되는 핀인지 쉽게 알 수 있다

 

 소자마다 어느 정도는 통일되어 있겠지만 기능마다 핀 이름이 다 다르다. 우리는 이를 위해 블럭 다이어그램을 확인하며 이 핀이 어디 기능에 쓰이는 지 알 수 있다. 기능 별 핀은 아래와 같다. 사진에 형광 표시한 블럭들이 주요하게 알면 좋을 블럭들이다. 다른 MCU든 많이 사용되니 알아두면 좋을 것 같다. 간단하게 정리해봤다.

 

 1) 코어

 F_max = 최대 주파수, NVIC = 연산을 미리 처리하는 인터럽트. SW(Serial Wire)/JTAG(디버그 인터페이스). JT 붙으면 JTAG관련 포트. 테두리는 칩을 얘기하는거라 우리는 이 포트를 고려해야 함.
 2) 메모리

 메모리 > CPU > 메모리 구조가 폰 노이만 구조. Flash 메모리(코딩된 내용이 저장됨)와 SRAM(CPU에서 사용하는 메모리. 속도가 매우 빠르지만 휘발됨)이 있다. DMA(CPU 아래). CPU의 개입 없이 주변 장치와 메모리 간 데이터 전송. 하드웨어 가속기
 3) Reset

 RST = 리셋. POR(전원이 애매하게 들어올 때 오동작 발생 시 리셋), PDR(전원 공급이 특정 임계값 아래로 떨어질 때 시스템을 초기화)

 4) Clock Control
 오른쪽에 CLK. OSC, RC, PLL은 CLK와 관련 있다. 클럭 Source를 외부 or 내부 어디서 받을 지 결정. 외부 쓰면 외부 배터리 사용 해 저전력, But 별도의 회로 구성 필요. PLL은 내부 회로. 주파수 조절(분주)하는 회로.
 5) AHB, APB

 통신 버스 구조. 
 6) TIMER(TIM)

 모터 제어용 PWM, 타이머 기능, DAC 등 활용 가능. WatchDog (비정상 동작할 때 자동 리셋. 1분간 원하는 동작 안하면 강제 초기화)
 7) 통신 주변 장치

 USART 통신 하거면 옆 포트의 핀들이 필요하다. USART, SPI, I2C, CAN 등 통신들을 사용한다.
 8) ADC

 12bit ADC가 두 채널 존재. 우리는 외부 ADC를 따로 구매해서 사용. MCU에 존재하긴 한다!
 9) GPIO

 여러 목적으로 사용할 수 있는 핀. CubeMX로 설정해서 핀마다 기능 부여 가능.

  

 이 아래에는 위의 표에서 언급했던 페이지별로 정리했다. MCU 자체가 갖고 있는 기능이 되게 많다.


Booting Config. (p.15)


 Booting은 MCU가 전원 키거나 리셋 직후 바로 하는 기능이다.  MCU는 부팅 시 세 가지 설정으로 가능하다. User Flash, System Memory, Embedded SRAM. 부팅을 할때 메모리 기반으로 어떻게 부팅할 지 정한다.

 부팅 핀은 BOOT1, BOOT2가 있는데, 2개면 2bit로 4개까지 모드를 설정할 수 있다. BOOT1 = 0일때 내장 Flash로 부팅하고, BOOT1 = 1, BOOT2 = 0이면 시스템 부트로더, BOOT1, 2 = 1이면 내장 SRAM으로 한다. 내장 SRAM 부팅은 디버깅, 특수 목적으로만 사용된다.


PIN Name, Package info (p.26)


 소자의 핀 이름과 메인 기능, 추가적인 기능들이 나열되어 있다. 좌측에는 소자 형태별로 핀 번호가 다르다. LQFP는 Quad Flat으로, 4개가 평평하고 바깥으로 나가있다. QFPN은 핀이 안 쪽으로 들어가 있는 형태이며, BGA는 소자 아래에 볼처럼 납땜 공간이 동그랗게 있다. 아래 공간을 다 쓸 수 있어 사용할 수 있는 핀 갯수가 되게 많다.

좌측부터 LQFP, QFPN, BGA이다


 아래는 핀의 설명으로 패키지 type에 대해 넘버링되어 있다. 한국어 특징 상 E와 2가 비슷하기 때문에 PE2는 P Echo 2로 읽는다. 핀 넘버로 종류도 알 수 있는데, 알파벳 + 숫자는 Ball Type. 단순 숫자는 Quad Type이다. Pin의 역할에 따라 I, O, S로 나눈다.

 Main function은 핀이 사용할 수 있는 주요 기능이며 매핑 정보가 나와있어 이에 따라 GPIO + 추가 기능을 할 수 있다. 

 이 부분을 설계 시 몇 가지 주의사항이 있다. 전원 공급 시 필터 추가해 레이아웃 처리하며 BOOT는 기본 풀 다운. 펌웨어 업데이트 시만 풀 업으로 가능하도록 만든다. JTAG/SWD 은 디버깅에 꼭 필요하니 다른 기능으로 재할당 시 조심하며, 클럭 관련 부분은 보정 커패시터 및 저항 확인해야 한다. (정확한 CLK을 위해 필수!) 마지막으로 사용하지 않는 핀은 안정적인 상태를 유지해야 한다. 


Load Cap, VDD (p.35)

 

 핀의 부하는 50pF으로 그림처럼 캐패시터가 달려있다. 또한 핀의 전압도 이와 같이 주면 된다고 나와있다. 이게 중요한 이유는 크리스탈이 요구하는 특정 부하 때문이다. 이를 충족시키지 않는다면 크리스탈의 정확한 공진 주파수를 형성할 수 없어 발진이 잘 안된다.


Voltage tab. (p.36)

 

 이 그림은 Power supply scheme으로 칩에 공급되야 할 전원들이 표시되어 있다 . 맨 위 V_BAT은 RTC와 백업 레지스터에 전원을 공급하는 핀으로, 실제 전원이 꺼지면 작은 건전지가 공급해준다. 밑의 V_DD, V_DDA에는 여러 cap이 붙는 것을 볼 수 있다. 우리는 V_DD를 설계해야 되기 때문에 그 부분을 자세히 볼 필요가 있다.

 여기 V_DD에서 1/2/3/4/5 여러 포트가 있는 것을 볼 수 있는데, (종이가 겹쳐있는 로고) 칩에 대한 관점으로 보면 원활한 전력 공급을 위해 여러 부분에 공급이 되도록 한다. 가이드된 대로 쓰도록 하자!


Max power (p.37)

 

 이전에 power budget 구할 때 참고한 곳이다. 표의 맨 윗줄에 동작 전압이 있는데, 절대 최대 전압과 권장 동작 전압은 다름을 알아야 한다. -0.3 ~ 4V 범위에서 0.5는 그냥 들어올 수 있는 것, 동작하는 전압은 2~4V로 다르다.


Clock Config p.50


 주파수 특성은 소자가 모드별로 사용하는 주파수에 대한 특정을 정리해둔 부분이다. 제일 빠르게 쓸 때 HSE, 느리게 쓰면 LSE 부분을 따로 확인하면 된다. 전형적으론 8MHz를 쓰나, 제일 빠르면 25MHz를 쓴다.
 위에서 Load Cap을 얘기하면서 CLK은 정확한 커패시터 값이 필요했다고 했다. 따라서 여기에 Input 커패시턴스가 나와있다. 다행이 HSE, LSE 둘 다 5pF을 캐패시터를 쓰면 된다. 모드에 따라 하드웨어를 바꾸지 않아도 된다.

 공진기를 추가적으로 사용해 다른 주파수를 사용하려면 부하 Cap을 계산해서 부착해야 한다. 이 또한 데이터시트에 잘 나와있으니 Schematics와 함께 사용하면 된다.

Load Cap C_L1, C_L2를 잘 부착해서 사용해야 한다. 계산식도 데이터시트에 잘 나와있다


ESD Table (p.59)  


 ESD는 정전기 방전이다. 우리 사람도 전기가 흐르며 정전기로 인해 고전압을 발생시킬 수 있다. 만약 소자를 잡아 고전압이 가해진다면 분명히 고장날테니, 이에 대해 미리 테스트를 하여 고장 방지를 하는 것이다. HBM(Human Body Model), CDM(Charge device Model) 모델 별로 기준 전압이 다르다. 이 기준 전압으로 테스트를 하게 되는데 대략적인 전압을 기억해두자.


Reset (p.66)


 핀 이름에선 이 핀의 역할을 알 수 있으나 가끔은 어떻게 동작시키면 되는 지도 나와있다. 소자의 이름 앞에 N, n이 붙으면 풀 다운 시 핀의 기능이 동작한다는 뜻이다. 따라서 NRST pin은 Active low일 때 리셋된다. 리셋 시 레지스터 초기화, 프로그램 카운터 초기화를 수행하며 이후엔 High로 다시 돌려줘야 한다.
 사용하기 위해 Schematic 시 풀업 저항을 이 NRST 핀에 붙여야 한다.


I2C Pullup (p.68)


 I2C는 통신을 위해 SCL, SDA이란 두 개의 핀을 갖고 있다. 이 때 두 핀에는 Floating을 방지하기 위해 풀 업 저항을 붙여야 한다. Pull up 저항은 PCB 라인따라 다르지만 1k ~ 10k를 주로 사용하며, 저항이 낮을 수록 전원을 더 바짝 끌어줘 빠르게 풀업이 가능하다. 반대로 저항이 크다는 것은 전원 전압까지 끌어오는 속도가 느려 pull up strength가 작다. 그럼 저항이 작으면 좋은 거 아닌가? 하고 생각할 수 있지만 보드 쪽 저항보다 작으면 전원을 더 끌어와서 영원히 전원만 끌고 오며 Leakage가 생기기에 풀업에서 저항은 필수이다.


STM32F103 schematic 작성하기

디버거 MCU의 Schematics.

 

 위의 Schematics는 강의에서 설명한 디버거 회로이다. 이를 하나씩 설명하며 순서를 설명하는 것은 비효율적이니 어떤 순서대로 설계하며 주의할 점을 얘기해보겠다.

 또한 소자를 배치하면서 이름 뒤에 여러 숫자가 있다. 이는 전압(내압), 퍼센트(tolerance, 정확도 +-), 칩의 사이즈를 적어놓은 것이다. 우리 회로는 24V로 내압이 안 크니 50V 정도로, CLK과 관련된 곳 제외하고 정확할 필요가 없으니 정확도는 ±10%로 사용한다. 

  1. 전원 (VBAT, VDD, GND)
    전원은 p.36 Voltage Tab의 커패시터를 참고해서 전원을 공급한다. 또한 VDD는 효율적인 전력 공급을 위해 칩의 각 면에 존재하니 잊지 말고 도면을 작성해야 한다.
  2. CLK (OSC_IN, OSC_OUT)
    소자는 전원, CLK, GND만 연결되어 있어도 동작한다. 그만큼 중요한 소자로 p.54 External clock 항목을 참고해서 정확한 소자 값으로 설계해야 한다.
  3. NRST
    핀 이름에서 볼 수 있드시 이 핀은 GND로 붙어야 Reset이 된다. 따라서 토글 스위치와 풀 업 저항을 연결해 물리적으로 Reset이 되도록 설계한다.
  4. 디버거 (이름에 J가 붙은 핀)
    이 F103은 F405를 켜기 위한 디버거로, 컴퓨터와 연결해주는 역할을 한다. 따라서 F405와 컴퓨터로 연결되어야 한다.
  5. 통신 (USBD_P, USBD_N)
    우리는 USB 2.0으로 컴퓨터로 연결할 것이다. 따라서 USB 커넥터와 이를 연결해야 한다.
  6. No Connection Flag
    우리가 Flag 없이 단순히 비워놓는다면 컴퓨터 상에선 사용하지 않는 핀인지, 우리가 연결을 까먹은 건지 알지 못한다. 따라서 단축키 Ctrl + Q를 입력해 쓰지 않는 핀마다 Flag를 달아줘야 한다. 그렇지 않으면 Electrical Rule Checker에서 수많은 에러가 나올 것이다.

 모든 소자를 연결 후 우리는 Schematic을 잘 작성했는지 궁금할 때가 있을 것이다. 이 때 상단의 Electrical Rule Checker를 눌러 회로적 문제를 파악할 수 있다.

진행하는 시트 내 모든 문제를 검색하기에 에러 갯수가 아직 많다


 MCU는 기능이 워낙 다양하고 기능마다 구현해야 할 회로가 많아 시간이 오래 걸렸다. 다음에는 PHY, Motor Driver까지 얼른 정리해보도록 하겠다.