Použití objektů zásad skupiny 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.
Azure Sphere podporuje objekty zásad skupiny (vstup/výstup pro obecné účely). GPIO je typ programovatelného digitálního pinu na integrovaném obvodu. Objekty zásad skupiny nemají předdefinované funkce a jejich chování je možné přizpůsobit aplikací. Mezi běžné způsoby použití objektů zásad skupiny patří změna stavu hardwarových zařízení, ovládání LED a čtení stavu přepínačů.
Poznámka:
Toto téma popisuje, jak používat objekty zásad skupiny v aplikaci vysoké úrovně. Informace o použití GPIO v RTApps najdete v tématu Použití periferních zařízení v aplikaci podporující v reálném čase.
Aplikace vysoké úrovně Azure Sphere můžou komunikovat s objekty ZÁSAD skupiny voláním rozhraní GPIO API applibs. Ukázka GPIO_HighLevelApp ukazuje, jak komunikovat s objekty zásad skupiny na zařízení MT3620.
Pro GPIO jsou podporovány následující operace:
- Čtení vstupu
- Nastavení výstupu na vysoký nebo nízký
- Dotazování / přerušení softwaru
Požadavky GPIO
Aplikace, které komunikují s objekty zásad skupiny, musí obsahovat příslušné soubory hlaviček pro GPIO a přidat nastavení GPIO 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/gpio.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í GPIO v manifestu aplikace obsahuje seznam objektů zásad skupiny, ke kterým aplikace přistupuje. GpIO může současně používat pouze jedna aplikace. Pokud chcete tato nastavení nakonfigurovat, přidejte Gpio
do manifestu aplikace funkci a pak do této funkce přidejte jednotlivé objekty GPIO. Manifest aplikace Azure Sphere obsahuje další podrobnosti.
V kódu použijte konstanty definované pro váš hardware k identifikaci objektů zásad skupiny. 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) a získá tři z jejích objektů zásad skupiny (1, 8 a 12):
"Gpio": [ "$MT3620_RDB_HEADER1_PIN6_GPIO", "$MT3620_RDB_LED1_RED", "$MT3620_RDB_BUTTON_A" ]
Následující výňatek ukazuje, jak v aplikaci určit stejné objekty zásad skupiny, které cílí na úvodní sadu Avnet MT3620:
"Gpio": [ "$AVNET_MT3620_SK_GPIO1", "$AVNET_MT3620_SK_USER_LED_RED", "$AVNET_MT3620_SK_USER_BUTTON_A" ]
Otevření objektu GPIO jako vstupu
Pokud potřebujete číst z GPIO, ale ne zapisovat do něj, můžete ho otevřít jako vstup. Voláním GPIO_OpenAsInput otevřete gpIO a nastavte ho na vstup. Tím se načte popisovač souboru pro operace v GPIO. Funkci GPIO můžete číst, když je nastavená na vstup, ale nemůžete do ní zapisovat. Pokud je objekt GPIO nastavený na vstup, musíte ho před nastavením na výstup zavřít .
Otevření objektu GPIO jako výstupu
Pokud potřebujete napsat do GPIO, musíte ho otevřít jako výstup. Voláním GPIO_OpenAsOutput otevřete GPIO a nastavte ho na výstup. Tím se načte popisovač souboru pro operace v GPIO, nastaví výstupní režim a počáteční hodnota. Když je objekt GPIO nastavený na výstup, můžete do něj zapisovat a číst z něj. Pokud je objekt GPIO nastavený na výstup, musíte ho před nastavením na vstup zavřít .
Dotazování GPIO
Když je gpIO otevřený, můžete ho monitorovat u událostí, jako je například stisknutí tlačítka. Pokud to chcete udělat, musíte nastavit časovač pro dotazování GPIO. Přerušení hardwaru pro objekty zásad skupiny se v Azure Sphere nepodporují, takže potřebujete použít dotazování. Ukázka GPIO ukazuje, jak dotazovat GPIO.
Čtení z GPIO
Pokud chcete číst z gpIO, zavolejte GPIO_GetValue.
Zápis do GPIO
Chcete-li napsat do objektu GPIO, zavolejte GPIO_SetValue.
Nastavení síly pohonu GPIO
Síla pohonu kolíku GPIO odkazuje na množství proudu použitého k jeho pohonu. Obvykle je toto množství aktuální hodnoty nastaveno na výchozí hodnotu. Některé scénáře, jako jsou světlejší LED diody nebo vyšší výkon senzorů, však vyžadují vyladění síly pohonu na určité kolíky GPIO.
Pokud chcete nastavit sílu jednotky, nejprve pomocí struktury gpiopin_request určete konfiguraci síly jednotky pro jeden nebo více kolíků GPIO. V dalším kroku předejte gpiopin_request
a GPIO_SET_PIN_CONFIG_IOCTL ve volání IOCTL.
Následující fragment kódu ukazuje, jak nastavit sílu jednotky dvou kolíků GPIO, které jsou zadány v lineoffsets
poli gpiopin_request
struktury.
//get chip file descriptor
int chipfd = __z_azsp_open("/dev/gpiochip0", O_CLOEXEC);
//set drive strength for the requested pins
struct gpiopin_request pinreq;
memset(&pinreq, 0, sizeof(pinreq));
pinreq.linecount = 2;
pinreq.lineoffsets[0] = SAMPLE_RGBLED_BLUE;
pinreq.lineoffsets[1] = SAMPLE_RGBLED_RED;
pinreq.config_type = PIN_CONFIG_DRIVE_STRENGTH;
pinreq.config_arg = 16;
result = ioctl(chipfd, GPIO_SET_PIN_CONFIG_IOCTL, &pinreq);
if (result < 0) {
close(chipfd);
return -1;
}
//do other work like setting pins as output
struct gpiohandle_request request;
memset(&request, 0, sizeof(request));
request.flags = GPIOHANDLE_REQUEST_OUTPUT;
request.lines = 2;
request.lineoffsets[0] = SAMPLE_RGBLED_BLUE;
request.lineoffsets[1] = SAMPLE_RGBLED_RED;
request.default_values[0] = 1;
request.default_values[1] = 1;
result = ioctl(chipfd, GPIO_GET_LINEHANDLE_IOCTL, &request);
if (result < 0) {
close(chipfd);
return -1;
}
Zavření GPIO
Pokud chcete gpIO zavřít, zavolejte funkci POSIX close().
Podpora pro MT3620
Podporované funkce GPIO pro čip MT3620 jsou uvedeny ve stavu podpory MT3620. Uživatelská příručka vývojové desky MT3620 popisuje funkce rozložení a připínáčku v RDB MT3620.
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.-->