Sdílet prostřednictvím


Použití adcs v aplikacích vysoké úrovně

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Toto téma popisuje, jak používat analogové a digitální převaděče (ADC) v aplikaci vysoké úrovně. Informace o používání ADC v aplikacích RTApps najdete v tématu Použití periferních zařízení v reálném čase .

Azure Sphere podporuje analogové digitální převody. ADC převede analogový vstup na odpovídající digitální hodnotu. Počet vstupních kanálů a rozlišení (jako počet výstupních bitů ADC) jsou závislé na zařízení.

Ukázka ADC_HighLevelApp ukazuje, jak získat přístup k adcs na zařízení MT3620.

Fragmenty kódu periferního zařízení ADC ukazují dva způsoby interakce se službami ADCS pomocí zjednodušených nebo pokročilých funkcí.

MT3620 obsahuje 12bitovou ADC s 8 vstupními kanály. ADC porovná vstupní napětí s referenčním napětím a jako výstup vytvoří hodnotu mezi 0 a 4095. Vstupní kanály ADC a GPIO špendlíky GPIO41 až GPIO48 mapují na stejné kolíky na MT3260. Pokud ale vaše aplikace používá ADC, přidělují se všechny 8 kolíky pro použití jako vstupy ADC. Pro GPIO se nedá použít žádná z nich.

Požadavky služby ADC

Aplikace, které komunikují se službami ADCS, musí obsahovat soubor hlaviček adc.h a přidat nastavení služby ADC do manifestu aplikace.

Všechny aplikace musí nastavit cílový hardware a zahrnout odpovídající soubor hlavičky definice hardwaru.

Soubory hlaviček

 #include <applibs/adc.h>
 #include "path-to-your-target-hardware.h"

Nahraďte "path-to-your-target-hardware.h" cestou k souboru hlaviček vašeho hardwaru.

Nastavení manifestu aplikace

Nastavení ADC v manifestu aplikace obsahuje seznam kontrolerů ADC, ke kterým aplikace přistupuje. Pokud chcete tato nastavení nakonfigurovat, přidejte Adc do manifestu aplikace funkci a pak do této funkce přidejte každý kontroler ADC. Téma manifestu aplikace Azure Sphere obsahuje další podrobnosti.

V kódu použijte konstanty definované pro váš hardware k identifikaci kontrolerů ADC. Kompilátor tyto hodnoty při sestavování aplikace přeloží na nezpracované hodnoty.

Tady je například výňatek z manifestu aplikace pro aplikaci, která cílí na referenční vývojovou desku MT3620 (RDB).

   "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ]

Následující výňatek ukazuje, jak určit stejný kontroler ADC v aplikaci, která cílí na Úvodní sadu Avnet MT3620:

   "Adc": [ "$AVNET_MT3620_SK_ADC_CONTROLLER0" ]

Přehled implementace

Pokud chcete implementovat aplikaci pro přístup k ADC, použijte jeden ze dvou přístupů:

Toto téma popisuje obě metody. Kompletní vzorový kód pro každou metodu najdete tady:

Přístup ke službě ADC se zjednodušenými funkcemi

Aplikace azure Sphere na vysoké úrovni mají přístup ke službě ADCS voláním rozhraní API ADC služby Applibs.

Otevření kontroleru ADC

Pokud chcete otevřít kontroler ADC pro přístup, zavolejte ADC_Open a předejte ID kontroleru jako parametr. Pokud je volání úspěšné, vrátí se popisovač souboru. V opačném případě se vrátí chybová hodnota.

int ADC_Open(ADC_ControllerId id);

Čtení z ADC

Pokud chcete číst z ADC, zavolejte ADC_Poll. Do ADC_Poll předáte následující parametry: popisovač souboru vrácený ADC_Open, kanál ADC a ukazatel na místo uložení hodnoty ADC.

Pokud chcete získat počet platných bitů (rozlišení) vrácených funkcí ADC_Poll, zavolejte ADC_GetSampleBitCount.

Nastavení referenčního napětí ADC

Voláním ADC_SetReferenceVoltage nastavíte referenční napětí ADC.

MT3620 má referenční 2,5 V. Alternativně může být připojen k externímu napětí, který je menší nebo roven 2,5 V.

Přístup ke službě ADC s pokročilými funkcemi

Jako alternativu ke zjednodušeným funkcím vysoké úrovně pro interakci s periferním zařízením můžete využít knihovnu ioctl k otevření funkcí. Tato část vysvětluje, jak to udělat a jak se použití ioctls liší od použití obecných linuxových funkcí.

Fragment kódu rozšířených funkcí ADC ukazuje, jak číst ADC pomocí pokročilých funkcí Azure Sphere.

Jako příklad můžete vidět souběžné porovnání čtení ADC se zjednodušenými, pokročilými a linuxovými implementacemi sysfs:

Otevření kanálu ADC

Pokud chcete otevřít kontroler ADC pro přístup, použijte volání Linuxu open předávající cestu k adresáři, který začne tím /dev/adc<number> , kde "číslo" je ID kontroleru. Pokud bylo volání úspěšné, vrátí se popisovač souboru. V opačném případě se vrátí chybová hodnota.

Viz Příklad implementace parametrů, oprávnění a kontroly chyb.

Získání specifikace kanálu

Při použití pokročilých funkcí získejte specifikaci kanálu pomocí volání ioctl před dotazováním, nastavením referenčního napětí nebo získáním vzorkového bitového počtu. Tento krok lze přeskočit pevným kódováním některých získaných hodnot, ale nedoporučuje se. Všimněte si, že tento krok zpracovává kód zadaný v jednoduchých funkcích.


// Used to get the size of the buffer to allocate for the channel specification

IIO_GET_CHANNEL_SPEC_BUFFER_TOTAL_SIZE_IOCTL
// Used to get the channel specification and set the ‘iio_ioctl_chan_spec_buffer’ struct properly

IIO_GET_CHANNEL_SPEC_BUFFER_IOCTL

Nastavení referenčního napětí

Nastavení referenčního napětí kanálu pomocí pokročilého rozhraní API:

  1. Nastavte informace ADC vyplněné ve iio_ioctl_chan_spec_buffer struktuře, která byla načtena ve specifikaci Get Channel.

  2. Získejte index vlastností vlastnosti, která se má nastavit pro kanál.

  3. Napište referenční napětí pomocí informací o indexu vlastnosti a specifikaci kanálu.

Získání indexu referenční vlastnosti napětí:

  1. iio_ioctl_chan_spec_buffer Ze struktury načtené ve specifikaci Get Channel použijte hodnotu z channel pole a z channel pole použijte hodnotu z ext_info pole. Pole ext_info je iio_ioctl_chan_spec_ext_info struktura, která je hlavou propojeného seznamu popisovačů vlastností pro kanál.

  2. Počínaje hodnotou 0 projdete seznamem, který počítá uzly, dokud name pole neodpovídá řetězci reference_voltage .

    • Každý uzel v seznamu má pole "další", které odkazuje na další uzel v seznamu. Poslední uzel odkazuje na hodnotu NULL.
    • Výsledný čítač je index vlastnosti.
  3. Chcete-li nastavit referenční napětí, použijte IIO_WRITE_CHANNEL_EXT_INFO_IOCTL ioctl, který přebírá strukturu typu iio_ioctl_write_chan_ext_info, která obsahuje relevantní data (v tomto případě napětí), kanál k nastavení a konkrétní vlastnost (referenční napětí), která je nastavena pro daný kanál.

Získání ukázkového počtu bitů

Nastavení referenčního napětí pomocí pokročilých rozhraní API:

  1. Ujistěte se, že dostáváte informace o správném kanálu ADC. Tyto informace se vyplní ve iio_ioctl_chan_spec_buffer struktuře, která byla načtena v části Získat specifikaci kanálu.

  2. Získejte index vlastností vlastnosti, kterou chcete pro kanál přečíst, což je v tomto případě ukázkový počet bitů.

  3. Pomocí linuxových ioctls získáte ukázkový počet bitů pomocí indexu vlastností a specifikace kanálu.

Pokud chcete získat index vlastností ukázkového počtu bitů, použijte proces shodný s nastavením referenčního napětí. Při iterování přes propojený seznam s názvem ext_info typu iio_ioctl_chan_spec_ext_infovšak odpovídá řetězci current_bits.

Voláním metody ioctl IIO_READ_CHANNEL_EXT_INFO_IOCTL naplníte strukturu typu iio_ioctl_read_chan_ext_info potřebnými daty v bufferpoli.

Čtení kanálu ADC

Pokud chcete číst kanál ADC, dotazování pomocí volání IIO_READ_RAW_CHANNEL_INFO_IOCTLioctl , předávání struktury iio_ioctl_raw_channel_info , která bude naplněna daty z kanálu ADC.

Příklad implementace

Pokud chcete číst ADC pomocí pokročilé implementace Azure Sphere, podívejte se na fragment kódu v ukázce rozšířené aplikace ADC.

Pokud chcete porovnat rozdíly v sémantice mezi interakcí s periferním zařízením při psaní kódu pro Azure Sphere a kódování pro obecný linuxový systém, přečtěte si téma LinuxSysfsNodes.

Podpora pro MT3620

Podporované funkce ADC pro MT3620 jsou uvedené ve stavu podpory MT3620. Uživatelská příručka vývojové desky MT3620 popisuje funkce připnutí a připnutí.

Složka HardwareDefinitions v instalačním adresáři sady Microsoft Azure Sphere SDK obsahuje definice pro běžné vývojové desky, moduly a čipy Azure Sphere. Obsahuje hlavičky a soubory JSON, které definují hlavní rozhraní pro MT3620, MT3620 RDB a další hardware MT3620. Výchozí umístění složky HardwareDefinitions je C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions ve Windows a /opt/azurespheresdk/HardwareDefinitions v Linuxu.

Úložiště Ukázek Azure Sphere na GitHubu obsahuje hlavičky a soubory JSON, které definují hlavní rozhraní SPI pro čip MT3620 a MT3620 RDB a další hardware MT3620.-->