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


I2C használata magas szintű alkalmazásokban

Az Azure Sphere master módban támogatja a Inter-Integrated Circuit (I2C) használatát. Az I2C egy soros busz, amely kisebb sebességű perifériákat csatlakoztat a mikrovezérlőkhöz. Az I2C egy több főkiszolgálós/több-alárendelt modellt használ, ahol a főeszköz az alárendelt eszközök egy csoportját vezérli. Az I2C-t gyakran használják perifériákkal, amelyek csak egyszerű, egyszerű kommunikációt igényelnek egy mikrovezérlővel, például beállításvezérlőkkel, kapcsolókkal és érzékelőkkel.

Az alkalmazások I2C-n keresztül férhetnek hozzá a perifériákhoz az Applibs I2C API-k meghívásával, hogy műveleteket hajtsanak végre egy I2C-főfelületen. Az LSM6DS3 I2C-minta leírja, hogyan konfigurálhatja az I2C hardverét egy MT3620-eszközön, és hogyan használhatja az I2C-t egy alkalmazásban.

I2C-követelmények

Az I2C-t használó alkalmazásoknak tartalmazniuk kell az I2C-hez megfelelő fejlécfájlokat, és I2C-beállításokat kell hozzáadniuk 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

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

Deklarálja az I2C_STRUCTS_VERSION előfeldolgozó definícióját, mielőtt belevenné a fejlécfájlt. Ez határozza meg az alkalmazás által használt struct verziót.

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 I2C API-k használatához hozzá kell adnia a I2cMaster képességet az alkalmazásjegyzékhez, majd minden egyes I2C-főfelületet hozzá kell adnia a képességhez. Ez lehetővé teszi, hogy az alkalmazás hozzáférjen a felülethez. Az Azure Sphere-alkalmazásjegyzék további részleteket tartalmaz az alkalmazásjegyzékről.

A kódban használja a hardverhez definiált állandókat az I2C-felületek 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 alkalmazásjegyzékből, amely egy MT3620 referencia-fejlesztői táblát (RDB) céloz meg, és két I2C-főillesztőt konfigurál:

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

Az alábbi részlet bemutatja, hogyan adhatja meg ugyanazokat az I2C-főillesztőket egy olyan alkalmazásban, amely az Avnet MT3620 Starter Kitet célozza:

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

I2C-főillesztő megnyitása

Mielőtt műveleteket hajt végre egy I2C-főillesztőn, meg kell nyitnia az I2CMaster_Open függvény meghívásával.

I2C-főfelület beállításainak frissítése

A fő felület megnyitása után módosíthatja a beállításokat:

Olvasási és írási műveletek végrehajtása az I2C-főfelületen

Az Azure Sphere számos lehetőséget támogat az I2C-vel végzett olvasási és írási műveletek végrehajtására. Ezek a lehetőségek mind blokkoló, szinkron műveletek.

Egyirányú írási vagy olvasási műveletek esetén meghívhatja I2CMaster_Write vagy I2CMaster_Read. Ez a legegyszerűbb módja a műveletek végrehajtásának egy I2C-főillesztőn, mivel csak egy műveletet határoz meg, és az alárendelt eszköz címét is tartalmazza a függvényhívásban.

Meghívhatja a I2CMaster_WriteThenRead , hogy egy kombinált írási és olvasási műveletet hajtson végre egyetlen busztranzakcióban, anélkül, hogy egy másik tranzakció megszakítását végezned.

Egyes POSIX-interfészekkel való együttműködés érdekében a POSIX read(2) és write(2) függvényeket hívhat meg egyirányú tranzakciók végrehajtásához. A read(2) vagy write(2) hívása előtt meg kell hívnia az I2CMaster_SetDefaultTargetAddress az alárendelt eszköz címének beállításához.

Ezeket a függvényeket meghívhatja 0 bájtos írási műveletek végrehajtásához, hogy ellenőrizze egy alárendelt eszköz jelenlétét. Ha egy olvasási vagy írási művelet meghiúsul, az alkalmazásnak kezelnie kell a kérelem újbóli kiadását.

Az I2C-felület bezárása

Az interfész bezárásához meg kell hívnia a standard POSIX függvényt close().

MT3620-támogatás

Ez a szakasz azokat az I2C-beállításokat ismerteti, amelyek csak akkor érvényesek, ha az Azure Sphere-t az MT3620-on futtatja.

Az MT3620 lapka I2C-specifikációi az MT3620 támogatási állapotában találhatók. Az MT3620 fejlesztői fal felhasználói útmutatója a kábelezés tűelrendezését és funkcióit ismerteti.

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.

  • Az MT3620 fejlesztői alaplap konfigurálásakor bármilyen ISU-portot használhat I2C-főfelületként. Ha ISU-portot használ I2C-főfelületként, nem használhatja ugyanazt a portot, mint az SPI vagy az UART-felület.
  • A 10 bites alárendelt eszközcímek nem támogatottak az MT3620-on; csak a 7 bites címek támogatottak.
  • Az MT3620 a 100 KHz-es, 400 KHz-es és 1 MHz-es buszsebességet támogatja, a 3,4 MHz-es sebességet azonban nem.
  • Az MT3620 nem támogatja a 0 bájtos I2C-olvasásokat.
  • Ha I2C-t használ egy magas szintű alkalmazásban, az I2C-perifériák csak az ISU-perifériablokkban lévő SCL- és SDA-tűket használják, a többi tűt pedig ugyanaz a magas szintű alkalmazás használhatja GPIO-ként. A GPIO-hoz újra felhasználható nem használt ISU-tűk listáját lásd: I/O-perifériák .