Sdílet prostřednictvím


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

Azure Sphere podporuje Inter-Integrated Circuit (I2C) v hlavním režimu. I2C je sériová sběrnice, která připojuje méně rychlá periferní zařízení k mikrořadičům. I2C používá model s více hlavními nebo více podřízenými, 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í pouze jednoduchou komunikaci s mikrořadičem, jako jsou ovládací prvky nastavení, vypínače a senzory.

Aplikace můžou přistupovat k periferním prostředkům prostřednictvím I2C tak, že volají rozhraní APPlibs I2C API, aby prováděly operace s hlavním rozhraním I2C. Ukázka LSM6DS3 I2C popisuje konfiguraci hardwaru pro I2C na zařízení MT3620 a použití I2C v aplikaci.

Požadavky 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 svůj 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"

Deklarujte definici I2C_STRUCTS_VERSION preprocesoru před zahrnutím souboru hlaviček. Určuje verzi struktury, kterou aplikace používá.

Nahraďte path-to-your-target-hardware.h cestou k souboru hlaviček pro váš hardware.

Nastavení manifestu aplikace

Pokud chcete používat rozhraní API I2C, musíte tuto funkci přidat I2cMaster do manifestu aplikace a pak do funkce přidat každé hlavní rozhraní I2C. To aplikaci umožňuje 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 při sestavování aplikace přeloží tyto hodnoty na nezpracované hodnoty.

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

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

Následující úryvek 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

Před provedením operací na hlavním rozhraní I2C je nutné ho otevřít voláním funkce I2CMaster_Open .

Aktualizace nastavení hlavního 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 s I2C. Všechny tyto možnosti představují blokující synchronní operace.

Pro jednosměrné operace zápisu nebo čtení můžete volat I2CMaster_Write nebo I2CMaster_Read. Jedná se o nejjednodušší způsob provádění operací na hlavním rozhraní I2C, protože určuje pouze jednu operaci a do volání funkce zahrnuje adresu podřízeného zařízení.

Můžete volat I2CMaster_WriteThenRead k provedení kombinované operace zápisu a č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 read(2) a write(2) POSIX a provádět jednosměrné transakce. Před voláním příkazu read(2) nebo write(2) musíte volat I2CMaster_SetDefaultTargetAddress, abyste nastavili adresu podřízeného zařízení.

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

Zavření rozhraní I2C

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

Podpora pro MT3620

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

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

Složka HardwareDefinitions v instalačním adresáři sady Microsoft Azure Sphere SDK obsahuje definice pro běžné vývojové panely, 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.

  • Při konfiguraci vývojové desky MT3620 můžete jako hlavní rozhraní I2C použít libovolný port ISU . Pokud jako hlavní rozhraní I2C použijete port ISU, nemůžete použít stejný port jako rozhraní SPI nebo UART.
  • 10bitové adresy podřízených zařízení nejsou podporovány v MT3620; Podporují se pouze 7bitové adresy.
  • MT3620 podporuje rychlosti sběrnice 100 kHz, 400 KHz a 1 MHz, ale ne 3,4 MHz.
  • 0-bajtová čtení I2C nejsou podporována v MT3620.
  • Při použití I2C v aplikaci vysoké úrovně se periferní zařízení I2C používají pouze kolíky SCL a SDA v periferním bloku ISU a ostatní kolíky mohou být použity jako objekty GPO ve stejné aplikaci vysoké úrovně. Seznam nepoužívaných pinů ISU, které je možné znovu použít pro GPIO, najdete v tématu V/V periferie .