Megosztás a következőn keresztül:


ADC-k használata magas szintű alkalmazásokban

Ez a témakör azt ismerteti, hogyan használhatók analóg-digitális konverterek (ADC-k) magas szintű alkalmazásokban. Az RTAppsben való ADC-használatról további információt a Periféria használata valós idejű alkalmazásokban című témakörben talál.

Az Azure Sphere támogatja az analóg és a digitális átalakítást. Az ADC az analóg bemenetet megfelelő digitális értékké alakítja. A bemeneti csatornák száma és a felbontás (ADC kimeneti bitek száma) eszközfüggő.

A ADC_HighLevelApp minta bemutatja, hogyan érheti el az ADC-ket egy MT3620-eszközön.

Az ADC-periféria kódrészletek két módszert mutatnak be az ADC-kkel való interakcióra egyszerűsített vagy speciális függvények használatával.

Az MT3620 egy 12 bites ADC-t tartalmaz 8 bemeneti csatornával. Az ADC összehasonlít egy bemeneti feszültséget egy referenciafeszültséggel, és kimeneteként 0 és 4095 közötti értéket állít elő. Az ADC bemeneti csatornák és a GPIO a GPIO41-es és GPIO48-ra való leképezését az MT3260-on lévő tűkre rögzíti. Ha azonban az alkalmazás az ADC-t használja, a rendszer mind a 8 tűt lefoglalja ADC-bemenetként való használatra. Ezek közül egyik sem használható GPIO-hoz.

Az ADC követelményei

Az ADC-kkel kommunikáló alkalmazásoknak tartalmazniuk kell az adc.h fejlécfájlt, és hozzá kell adniuk az ADC-beállításokat az alkalmazásjegyzékhez.

Minden alkalmazásnak be kell állítania a célhardverét , és tartalmaznia kell a megfelelő hardverdefiníció fejlécfájlját.

Fejlécfájlok

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

Cserélje le a "path-to-your-target-hardware.h" kifejezést a hardver fejlécfájljának elérési útjára.

Alkalmazásjegyzék beállításai

Az alkalmazásjegyzék ADC beállítása felsorolja az alkalmazás által elért ADC-vezérlőket. A beállítások konfigurálásához adja hozzá a Adc képességet az alkalmazásjegyzékhez, majd adja hozzá az összes ADC-vezérlőt a képességhez. Az Azure Sphere-alkalmazásjegyzék témakör további részleteket tartalmaz.

A kódban használja a hardverhez definiált állandókat az ADC-vezérlők azonosításához. A fordító ezeket az értékeket nyers értékekre fordítja le az alkalmazás létrehozásakor.

Íme például egy részlet egy MT3620 referenciafejlesztői táblát (RDB) megcélzó alkalmazás jegyzékfájljából.

   "Adc": [ "$MT3620_RDB_ADC_CONTROLLER0" ]

Az alábbi részlet bemutatja, hogyan adhatja meg ugyanazt az ADC-vezérlőt egy olyan alkalmazásban, amely az Avnet MT3620 Starter Kitet célozza:

   "Adc": [ "$AVNET_MT3620_SK_ADC_CONTROLLER0" ]

Implementáció áttekintése

Az ADC elérésére szolgáló alkalmazás implementálásához használja az alábbi két módszer egyikét:

Ez a témakör mindkét módszert ismerteti. Az egyes metódusok teljes mintakódját itt találja:

ADC-hozzáférés egyszerűsített függvényekkel

A magas szintű Azure Sphere-alkalmazások applibs ADC API-k meghívásával férhetnek hozzá az ADC-khez.

ADC-vezérlő megnyitása

Egy ADC-vezérlő megnyitásához hívja meg ADC_Open , és paraméterként adja át a vezérlő azonosítóját. Ha a hívás sikeres, a rendszer fájlleírót ad vissza. Ellenkező esetben a rendszer hibaértéket ad vissza.

int ADC_Open(ADC_ControllerId id);

Olvasás ADC-ből

Az ADC-ből való olvasáshoz hívja meg a ADC_Poll. A következő paramétereket adhatja át ADC_Poll: a ADC_Open által visszaadott fájlleíró, az ADC-csatorna, valamint egy mutató, amely az ADC érték tárolási helyére mutat.

A ADC_Poll függvény által visszaadott érvényes bitek (felbontás) számának lekéréséhez hívja meg a ADC_GetSampleBitCount.

Az ADC referenciafeszültség beállítása

Hívja meg ADC_SetReferenceVoltage az ADC referenciafeszültség beállításához.

Az MT3620 2,5 V-os referenciával rendelkezik. Másik lehetőségként egy 2,5 V-nál kisebb vagy azzal egyenlő külső feszültséghivatkozáshoz is csatlakoztatható.

ADC-hozzáférés speciális függvényekkel

A periféria használatához a magas szintű egyszerűsített függvények alternatívájaként az ioctl kódtárat is használhatja a funkciók megnyitásához. Ez a szakasz azt ismerteti, hogyan teheti ezt meg, és miben különbözik az ioctls használata az általános Linux-függvényektől.

Az ADC Advanced Functions-kódrészlet bemutatja, hogyan olvasható az ADC az Azure Sphere speciális függvényeivel.

Példaként láthatja az ADC olvasásának párhuzamos összehasonlítását az egyszerűsített, speciális és linuxos sysfs-implementációkkal:

Az ADC csatorna megnyitása

Egy ADC-vezérlő megnyitásához használja a könyvtár elérési útjában található Linux-hívást open , amely azzal kezdődik /dev/adc<number> , hogy a "szám" a vezérlő azonosítója. Ha a hívás sikeres volt, a rendszer fájlleírót ad vissza. Ellenkező esetben a rendszer hibaértéket ad vissza.

A paramétereket, engedélyeket és hibaellenőrzést lásd: Példaimplementáció .

A csatorna specifikációjának lekérése

A speciális függvények használata során ioctl-hívásokkal lekérheti a csatorna specifikációját a lekérdezés, a referenciafeszültség beállítása vagy a mintabitszám lekérése előtt. Ez a lépés kihagyható a kapott értékek egy részének kódolásával, de nem ajánlott. Vegye figyelembe, hogy ezt a lépést az egyszerű függvényekben megadott kód kezeli.


// 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

A referenciafeszültség beállítása

Egy csatorna referenciafeszültségének beállítása a speciális API használatával:

  1. Állítsa be a Csatorna lekérése specifikációban lekért struktúrában iio_ioctl_chan_spec_buffer kitöltött ADC-információkat.

  2. Kérje le a csatornához beállítandó tulajdonság tulajdonságindexét.

  3. Írja meg a referenciafeszültséget a tulajdonságindex és a csatorna specifikációs információi alapján.

A referenciafeszültség-tulajdonság indexének lekérése:

  1. iio_ioctl_chan_spec_buffer A Csatorna lekérése specifikációban lekért struktúrában használja a mező értékétchannel, a mezőből channel pedig a mező értékétext_info. A ext_info mező egy iio_ioctl_chan_spec_ext_info struktúra, amely a csatorna tulajdonságleíróinak csatolt listájának vezetője.

  2. 0-tól kezdve haladja át a csomópontokat megszámláló listát, amíg a name mező nem egyezik a sztringgel reference_voltage .

    • A lista minden csomópontja rendelkezik egy "következő" mezővel, amely a lista következő csomópontjára mutat. Az utolsó csomópont a NULL értékre mutat.
    • Az eredményül kapott számláló a tulajdonság indexe.
  3. A referenciafeszültség beállításához használja az IIO_WRITE_CHANNEL_EXT_INFO_IOCTL ioctl iio_ioctl_write_chan_ext_infotípust, amely tartalmazza a vonatkozó adatokat (ebben az esetben a feszültséget), a beállítandó csatornát és az adott csatornához beállított tulajdonságot (referenciafeszültséget).

A mintabitek számának lekérése

A referenciafeszültség beállítása a speciális API-k használatával:

  1. Győződjön meg arról, hogy a megfelelő ADC-csatorna adatait kapja meg. Ezek az információk a iio_ioctl_chan_spec_buffer Csatorna specifikációjának lekérése szakaszban lekért struktúrában lesznek kitöltve.

  2. Kérje le a csatornához beolvasni kívánt tulajdonság tulajdonságindexét, amely ebben az esetben a mintabitek száma.

  3. A linuxos ioctls használatával kérje le a mintabitek számát a tulajdonságindex és a csatorna specifikációjának használatával.

A mintabitek számának tulajdonságindexének lekéréséhez használjon a Referenciafeszültség beállítása művelettel megegyező folyamatot. A típusú iio_ioctl_chan_spec_ext_infocsatolt lista ext_info iterálása során azonban egyezzen a sztringgelcurrent_bits.

Hívja meg az ioctl IIO_READ_CHANNEL_EXT_INFO_IOCTL parancsot, hogy kitöltse a típus iio_ioctl_read_chan_ext_info struktúráját a buffermezőben található szükséges adatokkal.

Az ADC csatorna olvasása

Az ADC-csatorna olvasásához az ioctl hívással IIO_READ_RAW_CHANNEL_INFO_IOCTLkérdezzen le, és adja át a struktúrát iio_ioctl_raw_channel_info , amely az ADC-csatornából származó adatokkal lesz feltöltve.

Példa implementálásra

Ha az ADC-t az Azure Sphere speciális implementációjának használatával szeretné olvasni, tekintse meg az ADC Speciális alkalmazásmintában található kódrészletet.

Az Azure Sphere kódolása és az általános Linux-rendszerek kódolása során a periféria közötti szemantikabeli különbségek összehasonlításához lásd: LinuxSysfsNodes.

MT3620-támogatás

Az MT3620 támogatott ADC-funkciói az MT3620 támogatási állapotában találhatók. Az MT3620 fejlesztői fal felhasználói útmutatója ismerteti a pin-kód elrendezését és a rögzítési függvényeket.

A Microsoft Azure Sphere SDK telepítési könyvtárában található HardwareDefinitions mappa definíciókat tartalmaz a gyakori Azure Sphere fejlesztői táblákhoz, modulokhoz és chipekhez. Fejléc- és JSON-fájlokat tartalmaz, amelyek meghatározzák az MT3620, az MT3620 RDB és más MT3620 hardverek fő felületeit. A HardwareDefinitions mappa C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions alapértelmezett helye Windows és /opt/azurespheresdk/HardwareDefinitions Linux rendszeren.