Sdílet prostřednictvím


Použití I2C 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 Inter-Integrated Circuit (I2C) v hlavním režimu. I2C je sériová sběrnice, která spojuje periferní zařízení s nižší rychlostí s mikrořadičemi. I2C používá multi-master/multi-podřízený model, kde hlavní zařízení řídí sadu podřízených zařízení. I2C se často používá s periferními zařízeními, které vyžadují jednoduchou jednoduchou komunikaci s mikrořadičem, jako jsou nastavení ovládacích prvků, přepínače napájení a senzory.

Aplikace můžou přistupovat k periferním zařízením prostřednictvím I2C voláním rozhraní API applibs I2C k provádění operací s hlavním rozhraním I2C. Ukázka LSM6DS3 I2C popisuje, jak nakonfigurovat hardware pro I2C na zařízení MT3620 a používat I2C v aplikaci.

Požadavky na I2C

Aplikace, které používají I2C, musí obsahovat příslušné soubory hlaviček pro I2C a přidat nastavení I2C do manifestu aplikace.

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

Soubory hlaviček

 #define I2C_STRUCTS_VERSION 1
 #include <applibs/i2c.h>
 #include "path-to-your-target-hardware.h"

Před zahrnutím souboru hlavičky deklarujte definici I2C_STRUCTS_VERSION preprocesoru. Určuje verzi struktury, kterou aplikace používá.

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

Nastavení manifestu aplikace

Pokud chcete použít rozhraní API I2C, musíte do manifestu aplikace přidat funkci a pak do této funkce přidat I2cMaster každé hlavní rozhraní I2C. To aplikaci umožní přístup k rozhraní. Manifest aplikace Azure Sphere obsahuje další podrobnosti o manifestu aplikace.

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

Tady je například výňatek z manifestu aplikace, který cílí na referenční vývojovou desku MT3620 (RDB) a konfiguruje dvě hlavní rozhraní I2C:

"I2cMaster": [ "$MT3620_RDB_HEADER2_ISU0_I2C", "$MT3620_RDB_HEADER4_ISU1_I2C" ],

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

"I2cMaster": [ "$AVNET_MT3620_SK_ISU0_I2C", "$AVNET_MT3620_SK_ISU1_I2C" ]

Otevření hlavního rozhraní I2C

Než provedete operace s hlavním rozhraním I2C, musíte ho otevřít zavoláním funkce I2CMaster_Open .

Aktualizace nastavení pro hlavní rozhraní I2C

Po otevření hlavního rozhraní můžete změnit nastavení:

Provádění operací čtení a zápisu v hlavním rozhraní I2C

Azure Sphere podporuje několik možností pro provádění operací čtení a zápisu pomocí I2C. Všechny tyto možnosti blokují synchronní operace.

U jednosměrných operací zápisu nebo čtení můžete volat I2CMaster_Write nebo I2CMaster_Read. Toto je nejjednodušší způsob, jak provádět operace s hlavním rozhraním I2C, protože určuje pouze jednu operaci a zahrnuje adresu podřízeného zařízení ve volání funkce.

Můžete volat I2CMaster_WriteThenRead provést kombinované zápis a pak operace čtení v jedné sběrnici transakce bez přerušení z jiné transakce.

Pro interoperabilitu s některými rozhraními POSIX můžete volat funkce POSIX pro čtení (2) a zápis (2) pro provádění jednosměrných transakcí. Před voláním metody read(2) nebo zápisu(2) musíte zavolat I2CMaster_SetDefaultTargetAddress nastavit adresu podřízeného zařízení.

Tyto funkce můžete volat k provádění 0bajtů operací zápisu, abyste ověřili přítomnost podřízeného zařízení. Pokud operace čtení nebo zápisu selže, musí vaše aplikace zpracovat opakované použití požadavku.

Zavřete rozhraní I2C.

Pokud chcete rozhraní zavřít, musíte zavolat standardní funkci POSIX close().

Podpora pro MT3620

Tato část popisuje možnosti I2C, které platí jenom při spouštění Azure Sphere v MT3620.

Specifikace I2C pro čip MT3620 jsou uvedeny ve stavu podpory MT3620. Uživatelská příručka vývojové desky MT3620 popisuje rozložení a funkce kolíků pro zapojení.

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

  • Při konfiguraci vývojové desky MT3620 můžete jako hlavní rozhraní I2C použít libovolný port ISU . Pokud jako hlavní rozhraní I2C používáte port ISU, nemůžete použít stejný port jako rozhraní SPI nebo UART.
  • 10bitové podřízené adresy zařízení nejsou podporovány v MT3620; Podporují se pouze 7bitové adresy.
  • MT3620 podporuje 100 KHz, 400 KHz a 1 MHz rychlosti sběrnice, ale ne 3,4 MHz.
  • Čtení 0 bajtů I2C není podporováno v MT3620.
  • Při použití I2C v aplikaci vysoké úrovně se používají pouze kolíky SCL a SDA v periferním bloku ISU a ostatní kolíky lze použít jako objekty zásad skupiny stejnou aplikací vysoké úrovně. Seznam nepoužívaných špendlíků ISU, které je možné znovu použít pro GPIO, najdete v části V/V periferní zařízení.