Training application noteDatasheet-to-Site Lab Guide

STM32F103 Datasheet-to-Site Lab Guide

RCC, GPIO, ADC1, TIM2 PWM, EXTI6를 실제 STM32F103 문서에서 읽고 사이트 코드와 UI로 확인하는 수강생용 HTML 가이드

Document ID
LAB-DS-SITE001
Revision
Rev 1.0
Student scope
RCC / GPIO / ADC1 / TIM2 PWM / EXTI6
Site views
Register / Pin / Graph / Mission / Docs / Log
이 문서는 데이터시트를 대신하지 않습니다. 수강생이 먼저 실제 DS5319 데이터시트와 RM0008 레퍼런스 매뉴얼에서 무엇을 확인해야 하는지 잡고, 같은 사실을 현재 사이트에서 어떤 코드와 UI로 검증할 수 있는지 이어 주는 실습용 안내서입니다.
UART/USART 데이터시트와 사이트 기능은 유지하지만, 이번 1차 모터 실습 검토 범위에서는 UART 실행 코드와 제출 테스트를 제외합니다. PA10 / COMM_RX 실행 경로도 현재 모터 실습 핀맵에 넣지 않습니다. 현재 실습 핀맵은 PA1 / CURRENT_SENSE, PA2 / PWM_OUT, PA3 / DRV_EN, PA4 / DRV_DIR, PA5 / FAULT_IN, PA6 / HALL_IN 중심입니다.

Contents

  1. 실제 문서에서 먼저 읽을 것
  2. 사이트 그림이 모사한 원본 page map
  3. 사이트에서 바로 확인하는 통합 코드
  4. 코드가 하는 일과 데이터시트 근거
  5. RCC 확인: 클럭 enable 비트와 Register View
  6. GPIO 확인: 설정 레지스터와 Pin / Graph View
  7. ADC1 확인: PA1 CURRENT_SENSE analog 입력과 raw 값
  8. TIM2 PWM 확인: 공식 pin truth와 trainer PA2 route
  9. EXTI6 확인: PA6 HALL_IN interrupt
  10. 모터 드라이버 사양과 포트별 출력 확인
  11. 수강생 제출 캡처 체크리스트

1 실제 문서에서 먼저 읽을 것

주제공식 문서에서 알 수 있는 것이 사이트의 HTML 문서에서 볼 위치사이트에서 확인할 위치
RCC DS5319 Rev 20의 clock tree와 RM0008 Rev 21 Section 7.3.7RCC_APB2ENR에서 AFIO/GPIOA/ADC1 enable 비트를 확인한다. TIM2RM0008 Rev 21 Section 7.3.8RCC_APB1ENR.TIM2EN을 본다. STM32 스타일 RCC 클럭 제어 데이터시트의 clock tree, enable register map, peripheral bring-up map. Register 탭의 RCC_APB2ENR, 필요하면 RCC_APB1ENR.
GPIO RM0008 GPIO 장의 port-bit 구조, CRL/CRH의 4-bit nibble, IDR/ODR/BSRR/BRR 데이터 흐름을 확인한다. DS5319 Table 5에서는 PA1/PA2/PA3/PA4/PA5/PA6의 실제 pin 기능을 본다. STM32 스타일 GPIOA 데이터시트의 GPIO mode figures, official functions, currently simulated table. Register 탭의 GPIOA_CRL/GPIOA_IDR/GPIOA_ODR, Pin 탭의 PA3 / DRV_EN, PA4 / DRV_DIR, PA5 / FAULT_IN, PA6 / HALL_IN.
ADC1 DS5319 feature list에서 12-bit ADC와 변환 범위를 확인하고, RM0008 Section 11에서 channel, sample/hold, conversion data path, official result register ADC_DR를 확인한다. STM32 스타일 ADC1 데이터시트의 source basis, input equivalent circuit, trainer-executable subset. Pin 탭의 PA1 / ADC1_IN1 / CURRENT_SENSE; Graph 탭의 PA1 / CURRENT_SENSE voltage trace; raw 값은 Register 탭의 ADC1_DR_CH1.
TIM2 PWM DS5319 Table 5에서 실제 PA2TIM2_CH3이고, TIM2_CH1은 기본 PA0 또는 remap PA15라는 점을 확인한다. RM0008 timer 장에서는 output compare/PWM mode, CCER, CCR 흐름을 본다. TIM2 PWM 짧은 레퍼런스 챕터의 official pin truth, trainer route, programming information. Register 탭의 RCC_APB1ENR, TIM2_CCER, TIM2_CCR1; Pin 탭과 Graph 탭의 PA2 / PWM_OUT.
EXTI6 / Hall RM0008 Figure 20/21EXTI_IMR/RTSR/FTSR/PR 설명에서 line 6 interrupt path와 pending clear 방식을 확인한다. DS5319 Table 5에서는 PA6 package pin truth를 본다. STM32 스타일 EXTI 데이터시트의 official source-selection truth와 trainer-fixed PA6 -> EXTI6 -> HALL_IN route. Pin 탭의 PA6 / HALL_IN, Register 탭의 EXTI_IMR/EXTI_RTSR/EXTI_PR, Log 탭의 Hall count trace.

1.1 사이트 그림이 모사한 원본 page map

아래 page는 로컬 기준으로 검토한 공식 PDF의 표시 page입니다. 목차 page에서 한 번, 실제 그림 page에서 한 번 같은 figure 번호가 검색될 수 있으므로, 표에는 실제 그림이 있는 page를 적었습니다.

사이트 HTML 문서사이트 그림/표모사한 공식 원본공식 PDF page
RCCrcc-clock-tree-reference.jpgDS5319 Rev 20 Figure 2 Clock tree, RM0008 Rev 21 Figure 8 Clock treeDS5319 p.12, RM0008 p.93
RCCrcc-hse-clock-sources.jpgRM0008 Rev 21 Figure 9 HSE/LSE clock sourcesRM0008 p.94
RCCrcc-enable-register-map.jpgRM0008 Rev 21 Sections 7.3.6-7.3.8, enable register mapRM0008 p.144-149
GPIOAGPIO port-bit architectureRM0008 Rev 21 Figure 13 and Figure 14RM0008 p.160
GPIOAInput floating / pull-up / pull-downRM0008 Rev 21 Figure 15RM0008 p.163
GPIOAOutput configurationRM0008 Rev 21 Figure 16RM0008 p.164
GPIOAAlternate-function configurationRM0008 Rev 21 Figure 17RM0008 p.165
GPIOAHigh-impedance analog configurationRM0008 Rev 21 Figure 18RM0008 p.166
ADC1adc1-architecture.jpgRM0008 Rev 21 Figure 22 Single ADC block diagramRM0008 p.217
ADC1adc1-input-equivalent-circuit.jpgDS5319 Rev 20 Figure 38 Typical connection diagram using the ADCDS5319 p.77
ADC1adc1-regular-conversion-timing.jpgRM0008 Rev 21 Figure 23 Timing diagramRM0008 p.220
ADC1adc1-analog-watchdog.jpgRM0008 Rev 21 Figure 24 Analog watchdog guarded areaRM0008 p.220
TIM2 PWMtim2-pwm-path.jpgRM0008 Rev 21 Figure 126, Figure 127, Figure 130; plus DS5319 Table 5 pin truthRM0008 p.383, p.388; DS5319 p.29
EXTIEXTI source-selection / internal flow figuresRM0008 Rev 21 Figure 20 and Figure 21RM0008 p.207, p.210
VMD-MD01-LiteDriver block/application-circuit figuresVNH5019A-E Figure 1, Figure 4, Figure 5; H-bridge concept cross-check with DRV8873-Q1VNH5019A-E p.5, VNH5019A-E p.15, VNH5019A-E p.16; DRV8873-Q1 p.12
IMS Actuator InterfaceSystem interface figures공식 vendor figure 직접 모사가 아니라 현재 trainer simulator/UI contract를 STM32 GPIO/ADC/TIM/EXTI 문서와 대조해 재구성한 시스템 그림Cross-check sources: DS5319 Table 5 p.28-31, RM0008 GPIO p.160-166, EXTI p.207/210, ADC p.217/220, TIM p.383/388

모든 그림은 vendor PDF를 복사한 이미지가 아니라 source structure를 보고 다시 그린 reconstructed figure입니다. 정확한 bit, register, pin truth는 각 HTML 본문과 표를 기준으로 확인합니다.

2 사이트에서 바로 확인하는 통합 코드

아래 코드는 현재 trainer header/MMIO contract에 노출된 심볼만 사용합니다. 코드 편집기에 붙여넣고 Build & Step 또는 Build 후 Step을 누르면 RCC, GPIO, ADC1, TIM2 PWM, EXTI6 확인을 한 번에 시작할 수 있습니다.

#include "training_api.h"

static uint32_t motor_phase; /* Trainer state for DRV_EN/DIR/PWM sequencing, not an STM32 register. */
static uint32_t hall_events; /* Trainer state mirroring PA6 HALL_IN events. */

void user_init(void) { /* Bring-up for the current lab pin map: PA3 DRV_EN, PA4 DRV_DIR, PA2 PWM_OUT, PA5 FAULT_IN, PA6 HALL_IN, PA1 CURRENT_SENSE. */
    RCC->APB2ENR = (1u << 0) | (1u << 2) | (1u << 9); /* AFIOEN + IOPAEN + ADC1EN for GPIOA, EXTI, and current feedback. */
    RCC->APB1ENR = (1u << 0); /* TIM2EN for the trainer PWM command. */
    GPIOA->CRL = 0x44422204u; /* PA1 analog; PA2/PA3/PA4 outputs; PA5/PA6 digital inputs. */
    ADC1->CR = (1u << 1); /* Trainer CH1_EN for PA1 / ADC1_IN1 / CURRENT_SENSE. */
    TIM2->CCER = 0x01u; /* Trainer CC1E gate for PA2 / PWM_OUT. */
    TIM2->CCR1 = 0u; /* Trainer duty percent starts at 0. */
    EXTI->IMR = (1u << 6); /* Enable PA6 / HALL_IN interrupt masking. */
    EXTI->RTSR = (1u << 6); /* PA6 Hall route uses rising edges. */
    EXTI->FTSR = 0u; /* Falling edge is disabled in this lab. */
    EXTI->PR = (1u << 6); /* Clear pending EXTI6 by write-1. */
    GPIOA->ODR = 0u; /* Start DRV_EN, DRV_DIR, and PWM command low. */
} /* End user_init; all configured symbols are exposed by the current training_api.h contract. */

void EXTI6_IRQHandler(void) { /* Trainer hook for PA6 HALL_IN; official STM32F103 shares EXTI9_5, but this simulator exposes a dedicated EXTI6 handler. */
    if ((EXTI->PR & (1u << 6)) != 0u) { /* Check pending Hall edge on PR6. */
        hall_events = HALL->COUNT; /* Read trainer Hall counter tied to PA6. */
        trace_u32(hall_events); /* Trainer-only log; not an STM32 peripheral. */
        EXTI->PR = (1u << 6); /* Write 1 to clear PR6. */
    } /* End pending-check branch for PA6 HALL_IN. */
} /* End EXTI6 handler. */

void user_loop(void) { /* Repeated motor-driver observation loop using only GPIOA, ADC1, TIM2, EXTI, VMD_MD01, and HALL trainer symbols. */
    uint32_t current_raw = ADC1->DR_CH1 & 0x0FFFu; /* PA1 / ADC1_IN1 / CURRENT_SENSE raw value. */
    uint32_t fault_active = (GPIOA->IDR & (1u << 5)) != 0u; /* PA5 / FAULT_IN active-high digital input. */
    uint32_t duty = ((motor_phase & 3u) + 1u) * 20u; /* Trainer duty command for TIM2_CCR1. */
    motor_phase++; /* Advances the observable PA2 PWM_OUT and PA4 DRV_DIR pattern. */
    if (fault_active != 0u) { /* Motor-driver fault branch; FAULT_IN is PA5 digital input, not ADC; aligns with board-level active-high fault spec. */
        GPIOA->BRR = (1u << 3) | (1u << 4); /* Reset PA3 DRV_EN and PA4 DRV_DIR. */
        TIM2->CCR1 = 0u; /* Force PA2 PWM_OUT duty to 0 percent during fault. */
    } else { /* Normal motor-driver command branch with no PA5 FAULT_IN assertion. */
        GPIOA->BSRR = (1u << 3); /* Set PA3 DRV_EN. */
        GPIOA->ODR = (GPIOA->ODR & ~(1u << 4)) | ((motor_phase & 1u) << 4); /* Drive PA4 DRV_DIR. */
        TIM2->CCR1 = duty; /* Update PA2 PWM_OUT trainer route; DS5319 Table 5 p.29 says PA2 is TIM2_CH3, while trainer uses TIM2_CCR1 as compact duty. */
    } /* End fault-safe command selection. */
    watch_u32("current_raw", current_raw); /* Watch PA1 analog current feedback. */
    watch_u32("fault_hall_bits", GPIOA->IDR & ((1u << 5) | (1u << 6))); /* Watch PA5/PA6 digital feedback. */
} /* End user_loop. */
기대 시작값: RCC_APB2ENR = 0x00000205, RCC_APB1ENR = 0x00000001, GPIOA_CRL = 0x44422204, ADC1_CR = 0x00000002, TIM2_CCER = 0x00000001, EXTI_IMR = 0x00000040, EXTI_RTSR = 0x00000040.

2.1 코드가 하는 일과 데이터시트 근거

코드 줄실제로 하는 일데이터시트/RM에서 연결해서 볼 곳사이트에서 보이는 결과
RCC->APB2ENR = ... bit0/2/9 AFIO, GPIOA, ADC1의 APB2 clock gate를 연다. 실제 STM32F103도 peripheral register는 clock이 enable되어야 의미 있게 동작한다. RM0008 Section 7.3.7 RCC_APB2ENR. 사이트 그림 rcc-enable-register-map.jpgRM0008 p.144-149의 enable register 흐름을 모사한다. Register 탭에서 RCC_APB2ENR = 0x00000205. 이 값은 AFIOEN|IOPAEN|ADC1EN 조합이다.
RCC->APB1ENR = (1u << 0) TIM2EN을 set해서 TIM2 PWM register를 사용할 수 있게 한다. RM0008 Section 7.3.8 RCC_APB1ENR. TIM2는 APB1 peripheral이므로 APB2가 아니라 APB1 enable을 본다. Register 탭에서 RCC_APB1ENR = 0x00000001.
GPIOA->CRL GPIO pin mode를 4-bit 단위로 설정한다. 이 예제에서는 PA1을 analog 입력, PA2/PA3/PA4를 output, PA5/PA6를 digital input으로 맞춘다. RM0008 Figure 13/14 p.160의 GPIO port bit 구조와 Figure 15-18 p.163-p.166의 input/output/alternate/analog mode. 핀 기능은 DS5319 Table 5 p.29-p.30. Pin / Voltage Matrix에서 PA1 / CURRENT_SENSE, PA2 / PWM_OUT, PA3 / DRV_EN, PA4 / DRV_DIR, PA5 / FAULT_IN, PA6 / HALL_IN을 본다.
ADC1->CR = (1u << 1) 현재 trainer의 compact ADC control register에서 CH1_EN만 켜서 ADC1->DR_CH1 값이 갱신되게 한다. 공식 STM32F103은 ADC_CR1/ADC_CR2와 official result register ADC_DR를 사용한다. 구조는 RM0008 Figure 22 p.217, timing은 p.220, analog input 회로는 DS5319 Figure 38 p.77. Register 탭에서 ADC1_CR = 0x00000002ADC1_DR_CH1 raw 값, Graph 탭에서 PA1 / CURRENT_SENSE voltage trace.
TIM2->CCER = 0x01; TIM2->CCR1 = duty capture/compare channel output을 enable하고 compare 값을 바꿔 PWM duty를 움직인다. 공식 CCR1은 compare 기준값이고, duty 변화는 timer counter와 비교되며 PWM 출력으로 나타난다. RM0008 Figure 126/127 p.383의 capture/compare path와 Figure 130 p.388의 edge-aligned PWM. 단, 공식 pin truth에서 PA2 = TIM2_CH3DS5319 Table 5 p.29이고, trainer는 관찰용 PA2 / PWM_OUT trainer route로 단순화한다. Register 탭에서 TIM2_CCER, TIM2_CCR1; Pin/Graph에서 PA2 / PWM_OUT.
EXTI->IMR/RTSR/PR, EXTI6_IRQHandler PA6 / HALL_IN rising edge를 interrupt pending으로 받고, handler에서 count를 log한 뒤 pending flag를 clear한다. RM0008 Figure 20 p.207, Figure 21 p.210, EXTI_PR write-1-to-clear 설명. Trainer는 dedicated EXTI6_IRQHandler hook을 노출한다. Register 탭의 EXTI_IMR/EXTI_RTSR/EXTI_PR, Pin 탭의 PA6 / HALL_IN, Log 탭의 Hall count.
GPIOA->BSRR/BRR/ODR, TIM2->CCR1, watch_u32() loop마다 PA3 enable, PA4 direction, PA2 PWM duty를 조절하고, PA1 current raw와 PA5/PA6 digital feedback을 Watch에 남긴다. GPIO ODR/BSRR/BRR은 RM0008 GPIO output path, GPIO IDR은 input path, TIM2_CCR1은 PWM compare path, watch_u32()는 trainer-only 이름 붙은 관찰 도구다. PA3 / DRV_EN, PA4 / DRV_DIR, PA2 / PWM_OUT, PA5 / FAULT_IN, PA6 / HALL_IN, Watch/Access 값을 같이 캡처한다.

3 RCC 확인: 클럭 enable 비트와 Register View

코드공식 의미사이트 확인주의
RCC->APB2ENR bit0 AFIOEN. Alternate function / EXTI routing 쪽 선행 enable. Register 탭에서 RCC_APB2ENR = 0x00000205인지 확인한다. 현재 통합 코드는 EXTI route와 GPIOA/ADC1 확인을 위해 켠다.
bit2IOPAEN. GPIOA register block enable.PA1/PA2/PA3/PA4/PA5/PA6 관찰의 GPIO 쪽 전제.
bit9ADC1EN. ADC1 peripheral enable.ADC chapter에서는 official ADCCLK 경로도 따로 설명한다.

공식 STM32F103의 RCC base는 0x40021000이고 RCC_APB2ENR 주소는 0x40021018입니다. 현재 trainer C 포인터 RCC는 학생 실습용 compact view인 0x1800에서 시작합니다. PWM을 확인할 때는 TIM2가 APB1에 있으므로 RCC_APB1ENR.TIM2EN도 같이 확인합니다. 공식 anchor는 RM0008 Rev 21 Section 7.3.7RCC_APB2ENRSection 7.3.8RCC_APB1ENR입니다.

4 GPIO 확인: 설정 레지스터와 Pin / Graph View

4.1 Register에서 확인

  • GPIOA_CRL = 0x44422204: PA1 analog, PA2/PA3/PA4 output, PA5/PA6 input 흐름.
  • GPIOA_ODR: loop가 돌 때 PA3 DRV_EN, PA4 DRV_DIR 출력 latch가 바뀐다.
  • GPIOA_IDR: PA5 FAULT_IN, PA6 HALL_IN digital input 상태를 읽는다.
  • EXTI_PR: PA6 Hall rising edge가 pending으로 들어오고 handler가 write-1로 clear한다.

4.2 UI에서 확인

  • Pin 탭: PA3 / DRV_EN, PA4 / DRV_DIR, PA5 / FAULT_IN, PA6 / HALL_IN을 확인한다.
  • Graph 탭: PA2 / PWM_OUT, PA1 / CURRENT_SENSE, PA5 / FAULT_IN, PA6 / HALL_IN을 선택한다.
  • 보드의 Register WatchPin / Voltage Matrix에서도 같은 register/pin 상태를 확인할 수 있다.
  • Docs 탭: STM32 스타일 GPIOA 데이터시트에서 MODE/CNF 표와 pin summary를 확인한다.
공식 pin 기능과 trainer 별칭을 섞지 마세요. 예: 공식 문서에서는 PA2 = TIM2_CH3이고, 현재 실습에서는 같은 pad를 PA2 / PWM_OUT trainer route로 보여줍니다.

5 ADC1 확인: PA1 CURRENT_SENSE analog 입력과 raw 값

확인 대상공식 문서에서 읽을 내용코드사이트 UI
PA1 / ADC1_IN1 실제 ADC는 sample time, conversion sequence, data register 흐름이 있지만 trainer는 교육용 subset만 노출한다. GPIOA->CRL에서 PA1 nibble을 0x0으로 두고 ADC1->CR bit1을 켠다. Pin 탭의 PA1 / ADC1_IN1 / CURRENT_SENSE, Graph 탭의 PA1 / CURRENT_SENSE voltage trace. Raw 값은 Register 탭의 ADC1_DR_CH1.
Raw register 공식 STM32F103 ADC data path의 최종 결과는 ADC_DR에 놓인다. ADC1->DR_CH1, watch_u32("current_raw", ...). Register 탭의 ADC1_DR_CH1; Code 창 Watch와 Inspector Access 값.

공식 STM32F103의 ADC1 register block는 0x40012400에서 시작합니다. 현재 실습 subset은 ADC1_CRADC1_DR_CH1PA1 / ADC1_IN1 / CURRENT_SENSE 확인용 주소 0x40000010 계열로 사용합니다. 따라서 공식 ADC_DR와 trainer ADC1_DR_CH1을 같은 것으로 쓰지 말고, “공식 결과 register”와 “현재 실습용 channel-specific data register”로 구분해서 기록합니다.

6 TIM2 PWM 확인: 공식 pin truth와 trainer PA2 route

확인 대상공식 문서에서 읽을 내용현재 trainer에서 확인할 것
Pin truth DS5319 Table 5: PA2는 실제 STM32F103에서 TIM2_CH3이다. TIM2_CH1은 기본 PA0, remap 시 PA15 쪽이다. 사이트는 학습용으로 PA2 / PWM_OUT trainer route를 고정한다. 이것을 official TIM2_CH1이라고 쓰면 안 된다.
Clock TIM2는 APB1 peripheral이므로 RCC->APB1ENR.TIM2EN이 필요하다. Register 탭에서 RCC_APB1ENR = 0x00000001을 확인한다.
PWM gate / duty 공식 timer PWM은 PSC/ARR/CCMR/CCER/CCR/CR1 조합으로 동작한다. 현재 trainer는 TIM2_CCER.CC1E를 gate로, TIM2_CCR1을 0..100 duty command로 단순화한다.
UI 실제 reference manual은 waveform register sequence를 설명한다. Pin 탭의 PA2 / PWM_OUT average voltage와 Graph 탭의 PA2 / PWM_OUT trace를 확인한다.
PWM은 이 사이트에서 가장 헷갈리기 쉬운 부분입니다. 수강생 문서에는 항상 “공식 STM32F103 pin truth”와 “현재 trainer 관찰 route”를 분리해서 적어야 합니다.

7 EXTI6 확인: PA6 HALL_IN interrupt

  1. 통합 코드를 Build/Run한다.
  2. Register 탭에서 EXTI_IMR = 0x00000040, EXTI_RTSR = 0x00000040, EXTI_FTSR = 0x00000000를 확인한다.
  3. Pin 탭에서 PA6 / HALL_IN이 motor Hall pulse에 따라 HIGH/LOW로 바뀌는지 본다.
  4. Graph 탭에서 PA6 / HALL_IN 또는 Hall count 관련 trace를 확인한다.
  5. Register 탭에서 EXTI_PR.PR6 pending이 set되고, 코드의 EXTI->PR = (1u << 6) 실행 후 clear되는지 본다.
  6. Log 탭에서 interrupt event trace를 확인하고, Code 창 Watch에서 Hall/current 값을 비교한다.
공식 STM32F103에서는 EXTI line 6이 EXTI9_5_IRQHandler shared vector에 속합니다. 현재 trainer는 실습을 단순화해 PA6 -> EXTI6 -> HALL_IN route와 dedicated EXTI6_IRQHandler hook만 노출합니다.

8 모터 드라이버 사양과 포트별 출력 확인

사이트 pin역할코드/register데이터시트 연결사이트 확인
PA3 / DRV_EN Motor-driver enable 출력. HIGH일 때 driver input stage를 켠다. GPIOA_BSRR bit3, GPIOA_BRR bit3, GPIOA_ODR bit3. STM32 GPIO output path는 RM0008 Figure 16 p.164, output register는 p.171-p.173. Driver enable/input block은 VNH5019A-E Figure 1 p.5와 application circuits p.15-p.16의 control-input 개념을 참고한다. PinGraph에서 PA3 / DRV_EN HIGH/LOW.
PA4 / DRV_DIR Motor direction 출력. Trainer에서는 LOW=CW, HIGH=CCW로 해석한다. GPIOA_ODR bit4를 직접 갱신한다. GPIO output data path는 RM0008 p.164, GPIO_ODR는 p.172. H-bridge phase/direction input 개념은 VNH5019A-E p.15-p.16 application circuits와 비교한다. PA4 / DRV_DIR 값과 motor direction 표시가 함께 바뀌는지 본다.
PA2 / PWM_OUT Motor-driver PWM duty 출력. 평균 전압이 duty에 비례한다. TIM2_CCER gate, TIM2_CCR1 duty command. 공식 PWM compare path는 RM0008 Figure 126/127 p.383, PWM waveform은 Figure 130 p.388. Pin truth는 DS5319 Table 5 p.29: PA2는 공식적으로 TIM2_CH3이며, trainer가 TIM2_CCR1로 단순화한다. Pin/Graph에서 PA2 / PWM_OUT, Register에서 TIM2_CCR1.
PA5 / FAULT_IN Board-conditioned active-high fault 입력. ADC가 아니라 digital input이다. GPIOA_IDR bit5를 읽고, fault 시 GPIOA_BRR bit3/bit4TIM2_CCR1=0으로 stop한다. GPIO input path는 RM0008 Figure 15 p.163, GPIO_IDR는 p.172. Driver diagnostic/fault concept는 VNH5019A-E Figure 1 p.5와 p.15-p.16; 실제 low-true diagnostic은 trainer board에서 active-high FAULT_IN으로 변환해 보여준다. Pin/Register에서 digital level로 확인한다.
PA6 / HALL_IN Hall sensor digital pulse / trainer-fixed EXTI6 rising-edge interrupt 입력. EXTI_IMR bit6, EXTI_RTSR bit6, EXTI_PR bit6, HALL_COUNT. EXTI controller는 RM0008 Figure 20 p.207, GPIO-to-EXTI mapping은 Figure 21 p.210. PA6 pin truth는 DS5319 Table 5 p.29-p.30. PA6 / HALL_IN Graph trace, HALL_COUNT, EXTI_PR pending/clear.
PA1 / CURRENT_SENSE Current-sense amplifier output을 ADC로 읽는 analog input. GPIOA_CRL PA1 nibble = 0x0, ADC1_CR bit1, ADC1_DR_CH1. ADC block은 RM0008 Figure 22 p.217, conversion timing은 p.220, typical ADC input connection은 DS5319 Figure 38 p.77. Driver current-sense path는 VNH5019A-E application-current-sense 개념과 trainer의 shunt/amp path를 비교한다. GraphPA1 / CURRENT_SENSE voltage trace와 RegisterADC1_DR_CH1 raw 값.

9 수강생 제출 캡처 체크리스트

캡처반드시 보여야 할 것문서에서 근거 찾는 곳
Docs이 문서와 RCC/GPIOA/ADC1/TIM2 PWM/EXTI/IMS interface HTML 문서가 열리는 화면.각 문서의 source basis 또는 official reference basis 표.
RegisterRCC_APB2ENR = 0x00000205, RCC_APB1ENR = 0x00000001, GPIOA config, ADC1, TIM2, EXTI registers.RCC enable map, GPIO register map, ADC trainer subset, TIM2 trainer route, EXTI trainer route.
PinPA3 / DRV_EN, PA4 / DRV_DIR, PA2 / PWM_OUT, PA5 / FAULT_IN, PA6 / HALL_IN, PA1 / CURRENT_SENSE.GPIO official-versus-simulated table, ADC channel table, TIM2 PWM route table, EXTI route table.
GraphPA2 / PWM_OUT, PA1 / CURRENT_SENSE, PA5 / FAULT_IN, PA6 / HALL_IN 중 실습 대상 trace.이 문서의 GPIO/ADC/PWM/EXTI UI 확인 절.
Watch / Accesswatch_u32()로 찍힌 CURRENT_SENSE raw 값과 Hall/fault digital feedback 값, 그리고 register read/write.통합 코드와 ADC/GPIO/EXTI 확인 절.
Logtrace_u32()/trace_str() 이벤트 로그와 register 변경 로그.통합 코드와 EXTI6 확인 절.
MissionMission 통과 여부가 Register/Pin/Graph/Log 캡처와 모순되지 않는지 확인한다.사이트의 Mission tab, Board의 Mission 관련 상태 표시.
LAB-DS-SITE001 Rev 1.0Official source first, trainer subset second