DA14531 – ADC

(Gowtham TS) párbeszéd

An A nalog to D igital C onverter átalakítja az analóg jelet digitális formává, amelyet bármely számítási elem használhat / működtethet. Az analóg jelből rendszeresen mintát vesznek, hogy digitálisan újrateremtsék.

A DA14531 10 bites ADC-vel rendelkezik, 4 bemenetű egyvégű csatornákkal (vagy 2 differenciálcsatornával). A 4 bemeneti csatorna 4 GPIO, hőmérséklet-érzékelő, VBAT_HIGH sín, VBAT_LOW sín és VDD közül választható. Konfigurálható csillapítóval rendelkezik, 4 opcióval: 1x, 2x, 3x és 4x. A 4x-es csillapítóval maximum -3,45 V és + 3,45 V feszültségtartományt vehet fel.

Projektbeállítás

Az oktatóanyag kódjával rendelkező projekt a Github címen érhető el a https oldalon. : //github.com/vicara-hq/da14531-tutorials

Töltse le és másolja le a projektet. A projektet a Dialog SDK6 mappába kell helyezni. Keresse meg a / projects / target_apps / template elemet, és illessze be ebbe a mappába. A projekt az empty_peripheral_template projekt módosított változata, amelyet a Dialog szolgáltat. De ahhoz, hogy ez az oktatósorozat minél nyitottabb forrásként maradjon, a következő lépések mindegyike a SmartSnippets Studiot használja.

Hardver áttekintés

DA145xx Pro alaplapot fogunk használni DA14531 Tiny modullal lánylap, néhány jumper és kenyérlap. Szüksége lesz 2 azonos értékű ellenállásra, vagy használhat potenciométert is (a kimenet ellenőrzéséhez multiméterre lesz szükség).

2 db 4,7 kOhm ellenállást és 3 V sínt használtam a DA14531 alaplapon VCC-ként.

Kód áttekintés

A bemutató célja egy feszültség mintavétele és az ADC alapvető használatának bemutatása a DA14531-ben.

Először a P0_7-et kell beállítanunk ADC-tűként. Ez a user_periph_setup.c fájlban történik.

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);
}

Az alábbi kódblokk konfigurálja az ADC-t.

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);

A konfigurációs struktúrában az üzemmódot egy végűre és a csillapítást 2x-re állítjuk, mivel a várható feszültség 1,5 V körül van. Az inicializálás előtt meghívják az ADC kalibrálására szolgáló funkciót.

A függvényt úgy hívjuk meg, hogy az egyedi app_on_init visszahívásban vegye fel a feszültséget. Az egyéni visszahívásról további részletekért tekintse meg a bemutatómat (GPIO-k, gombok és LED-ek).

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();
}

Tesztelés

A tesztelés legegyszerűbb módja, ha futtatja a hibakeresőt, és hozzáadja az adc_sample változót a Kifejezések figyelő ablakához. Változó hozzáadása a Expressions figyelő ablakhoz és annak ellenőrzéséhez:

  • Válassza ki a változót
  • Kattintson rá a jobb egérgombbal, és válassza az „Watch kifejezés hozzáadása” lehetőséget.
  • Kattintson a megnyíló ablakban az „OK” gombra.
  • Szüneteltesse a hibakeresőt néhány másodperc múlva, és ellenőrizze a változó értékét.

A kapott érték 0x3A0 volt. Az ADC referenciafeszültsége 0,9 V, és mivel ez egy 10 bites ADC, az érték a következőnek felel meg:

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

Az általam kapott érték valamivel magasabb, mint várt. Ez a hiba csökkenthető olyan technikák használatával, mint a túlmintavétel, de ez egy speciális témakör egy másik oktatóanyag számára.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük