대화 DA14531 — ADC

(Gowtham TS)

An A nalog to D igital C onverter는 아날로그 신호를 모든 컴퓨팅 요소에서 사용 / 작동 할 수있는 디지털 형식으로 변환합니다. 아날로그 신호는 주기적으로 샘플링되어 디지털 방식으로 재생성됩니다.

DA14531에는 4 개의 입력 단일 종단 채널 (또는 2 개의 차동 채널)이있는 10 비트 ADC가 있습니다. 4 개의 입력 채널은 4 개의 GPIO, 온도 센서, VBAT_HIGH 레일, VBAT_LOW 레일 및 VDD에서 선택할 수 있습니다. 또한 1x, 2x, 3x 및 4x의 4 가지 옵션이있는 구성 가능한 감쇠기가 있습니다. 감쇠기를 4x로 사용하면 -3.45V ~ + 3.45V의 최대 전압 범위를 샘플링 할 수 있습니다.

프로젝트 설정

이 자습서의 코드가 포함 된 프로젝트는 https의 Github에서 사용할 수 있습니다. : //github.com/vicara-hq/da14531-tutorials

프로젝트를 다운로드하고 복사합니다. 프로젝트는 Dialog SDK6 폴더 안에 있어야합니다. / projects / target_apps / template 으로 이동하여이 폴더에 붙여 넣습니다. 프로젝트는 Dialog에서 제공하는 empty_peripheral_template 프로젝트의 수정 된 버전입니다. 하지만이 튜토리얼 시리즈를 가능한 한 오픈 소스로 유지하기 위해 다음 단계는 모두 SmartSnippets Studio를 사용합니다.

하드웨어 개요

우리는 DA14531 Tiny 모듈과 함께 DA145xx Pro 마더 보드를 사용합니다. 도터 보드, 몇 개의 점퍼 및 브레드 보드. 또한 동일한 값의 저항 2 개가 필요하거나 전위차계를 사용할 수도 있습니다 (출력을 확인하려면 멀티 미터가 필요합니다).

VCC로 DA14531 마더 보드에 4.7kOhm 저항 2 개와 3V 레일을 사용했습니다.

코드 개요

이 튜토리얼의 목적은 전압을 샘플링하고 DA14531에서 ADC의 기본 사용법을 보여주는 것입니다.

먼저 P0_7을 ADC 핀으로 구성해야합니다. 이는 user_periph_setup.c 파일에서 수행됩니다.

void GPIO_reservations(void) {
RESERVE_GPIO(BUTTON, GPIO_PORT_0, GPIO_PIN_7, PID_ADC);
}void set_pad_functions(void) {
GPIO_ConfigurePin(GPIO_PORT_0, GPIO_PIN_7, INPUT, PID_ADC, false);
}

아래 코드 블록은 ADC를 구성합니다.

adc_config_t adc_cfg = {
.input_mode = ADC_INPUT_MODE_SINGLE_ENDED,
.input = ADC_INPUT_SE_P0_7,
.smpl_time_mult = 2,
.continuous = false,
.interval_mult = 0,
.input_attenuator = ADC_INPUT_ATTN_2X,
.chopping = false,
.oversampling = 0
};adc_offset_calibrate(ADC_INPUT_MODE_SINGLE_ENDED);adc_init( &adc_cfg);

구성 구조에서 예상 전압이 약 1.5V이므로 모드를 단일 종단으로 설정하고 감쇠를 2x로 설정했습니다. ADC를 교정하는 함수도 초기화하기 전에 호출됩니다.

사용자 정의 app_on_init 콜백에서 전압을 샘플링하는 함수를 호출합니다. 사용자 지정 콜백에 대한 자세한 내용은 GPIO, 버튼 및 LED에 대한 자습서를 참조하십시오.

uint16_t adc_sample;void user_app_on_init(void) {
adc_sample = adc_get_sample();
adc_sample = adc_correct_sample(adc_sample); default_app_on_init();
}

테스트

이를 테스트하는 가장 쉬운 방법은 디버거를 실행하고 adc_sample 변수를 Expressions 조사 창에 추가하는 것입니다. 표현식 조사 식 창에 변수를 추가하고 값을 확인하려면 :

  • 변수 선택
  • 변수를 마우스 오른쪽 버튼으로 클릭하고 “감시 식 추가”를 선택합니다.
  • 열리는 창에서 “확인”을 클릭합니다.
  • 몇 초 후에 디버거를 일시 중지하고 변수 값을 확인합니다.

내가 얻은 값은 0x3A0입니다. ADC의 기준 전압은 0.9V이고 10 비트 ADC이므로 값은 다음과 같습니다.

0x3A0 = 928 (in decimal)2 * 928 * (0.9/1024) = 1.63V 

내가 얻은 값은 예상됩니다. 이 오류는 오버 샘플링과 같은 기술을 사용하여 줄일 수 있지만 다른 자습서의 고급 주제입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다