
추가 내용
- 보정값(CAL) 런타임 적용
- 보정값 Flash 영속 저장/복구
- 검증용 CLI(cal show, cal dump, cal save, 재부팅 확인)
목적
- 배경
- STM32F103의 VREFINT는 칩 내부 기준 전압(이상적으로 약 1.2V)
- 개체별 편차로 있어서 단순 이론식으로 계산하면 VDDA가 틀어짐
VDDA = (VREFINT_TYP * ADC_MAX) / vref_raw
- 문제
- VREFINT_TYP(1200mV)는 typical 값
- 개체 편자 + 보드 전원/노이즈 환경 때문에 실측과 차이 발생
- 해결 전략
- 실측 멀티미터 값(e.g : 3140mV)으로 개체 보정값 vrefint_mv_cal을 계산해서 사용
- vrefint_mv_cal을 Flash에 저장, 재부팅 후에도 유지
VDDA = (vrefint_mv_cal * ADC_MAX) / vref_raw
런타임 보정값 변수 추가 (main.c)
static uint32_t vrefint_mv_cal = 1095u;
static uint8_t vrefint_cal_valid = 1;
- 역할
- vrefint_mv_cal
- VDDA 계산에 실제로 사용하는 보정 기준 전압 값(mV)
- vrefint_cal_valid
- 검증 포인트
- cal show에서 이 값이 출력
- adc read 결과가 이 값 기반으로 계산
- 재부팅 후 CAL loaded from flash 출력 + 값 유지 확인 가능