Share via


Üst düzey uygulamalarda I2C kullanma

Azure Sphere, ana modda Inter-Integrated Bağlantı Hattı'nın (I2C) desteklemektedir. I2C, düşük hızlı çevre birimlerini mikrodenetleyicilere bağlayan bir seri veri yoludur. I2C, bir ana cihazın bir dizi alt cihazı denetlediği çok ana/çok alt model kullanır. I2C genellikle ayar denetimleri, güç anahtarları ve algılayıcılar gibi bir mikrodenetleyici ile basit basit iletişim gerektiren çevre birimleriyle kullanılır.

Uygulamalar, I2C ana arabiriminde işlem gerçekleştirmek için Applibs I2C API'lerini çağırarak I2C aracılığıyla çevre birimlerine erişebilir. LSM6DS3 I2C örneği, BIR MT3620 cihazında I2C için donanımın nasıl yapılandırıldığı ve bir uygulamada I2C'nin nasıl kullanılacağı açıklanmaktadır.

I2C Gereksinimleri

I2C kullanan uygulamaların I2C için uygun üst bilgi dosyalarını içermesi ve uygulama bildirimine I2C ayarları eklemesi gerekir.

Tüm uygulamaların hedef donanımlarını ayarlaması ve karşılık gelen donanım tanımı üst bilgi dosyasını içermesi gerekir.

Üst Bilgi Dosyaları

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

I2C_STRUCTS_VERSION Üst bilgi dosyasını dahil etmeden önce önişlemci tanımını bildirin. Bu, uygulama tarafından kullanılan yapı sürümünü belirtir.

"path-to-your-target-hardware.h" yerine donanımınızın üst bilgi dosyasının yolunu yazın.

Uygulama bildirimi ayarları

I2C API'lerini kullanmak için, özelliği uygulama bildirimine eklemeniz I2cMaster ve ardından her I2C ana arabirimini özelliğe eklemeniz gerekir. Bu, uygulamanın arabirime erişmesini sağlar. Azure Sphere uygulama bildirimi, uygulama bildirimi hakkında daha fazla ayrıntıya sahiptir.

Kodunuzda, I2C arabirimlerini tanımlamak için donanımınız için tanımlanan sabitleri kullanın. Derleyici, uygulamayı oluştururken bu değerleri ham değerlere çevirir.

Örneğin, bir MT3620 başvuru geliştirme panosu (RDB) hedefleyen ve iki I2C ana arabirimini yapılandıran bir uygulama bildiriminden bir alıntı aşağıda verilmiştir:

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

Aşağıdaki alıntı, Avnet MT3620 Başlangıç Setini hedefleyen bir uygulamada aynı I2C ana arabirimlerinin nasıl belirtileceğini gösterir:

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

I2C ana arabirimini açma

I2C ana arabiriminde işlemler gerçekleştirmeden önce , I2CMaster_Open işlevini çağırarak açmanız gerekir.

I2C ana arabiriminin ayarlarını güncelleştirme

Ana arabirimi açtıktan sonra ayarları değiştirebilirsiniz:

I2C ana arabiriminde okuma ve yazma işlemleri gerçekleştirme

Azure Sphere, I2C ile okuma ve yazma işlemleri gerçekleştirmek için çeşitli seçenekleri destekler. Bu seçeneklerin tümü engelleyici, zaman uyumlu işlemlerdir.

Tek yönlü yazma veya okuma işlemleri için I2CMaster_Write veya I2CMaster_Read çağırabilirsiniz. Bu, bir I2C ana arabiriminde işlemleri gerçekleştirmenin en basit yoludur çünkü yalnızca bir işlem belirtir ve işlev çağrısında alt cihazın adresini içerir.

Başka bir işlemden kesintiye uğramadan tek bir veri yolu işleminde birleştirilmiş yazma ve okuma işlemi gerçekleştirmek için I2CMaster_WriteThenRead çağırabilirsiniz.

Bazı POSIX arabirimleriyle birlikte çalışabilirlik için tek yönlü işlemler gerçekleştirmek için POSIX read(2) ve write(2) işlevlerini çağırabilirsiniz. Okuma(2) veya yazma(2) çağrısı yapmadan önce alt cihazın adresini ayarlamak için I2CMaster_SetDefaultTargetAddress'yi çağırmalısınız.

Bir alt cihazın varlığını doğrulamak için 0 baytlık yazma işlemleri gerçekleştirmek için bu işlevleri çağırabilirsiniz. Okuma veya yazma işlemi başarısız olursa, uygulamanızın isteği yeniden gönderme işlemini işlemesi gerekir.

I2C arabirimini kapatma

Arabirimi kapatmak için standart POSIX işlevini close() çağırmanız gerekir.

MT3620 desteği

Bu bölümde, yalnızca MT3620 üzerinde Azure Sphere çalıştırılırken uygulanan I2C seçenekleri açıklanmaktadır.

MT3620 yongası için I2C belirtimleri MT3620 Destek Durumu'nda listelenmiştir. MT3620 geliştirme panosu kullanım kılavuzu, pin düzenini ve kablolama işlevlerini açıklar.

Microsoft Azure Sphere SDK yükleme dizinindeki HardwareDefinitions klasörü, yaygın Azure Sphere geliştirme panoları, modülleri ve yongaları için tanımlar içerir. DIĞER MT3620 donanımlarıyla birlikte MT3620, MT3620 RDB için ana arabirimleri tanımlayan üst bilgi ve JSON dosyalarını içerir. HardwareDefinitions klasörünün varsayılan konumu Windows ve /opt/azurespheresdk/HardwareDefinitions Linux'tadırC:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions.

GitHub'daki Azure Sphere Örnekleri deposu, DIĞER MT3620 donanımlarıyla birlikte MT3620 yongası ve MT3620 RDB için SPI ana arabirimlerini tanımlayan üst bilgi ve JSON dosyaları içerir.-->

  • MT3620 geliştirme panosu yapılandırırken, herhangi bir ISU bağlantı noktasını I2C ana arabirimi olarak kullanabilirsiniz. I2C ana arabirimi olarak BIR ISU bağlantı noktası kullandığınızda, SPI veya UART arabirimiyle aynı bağlantı noktasını kullanamazsınız.
  • MT3620'de 10 bit alt cihaz adresleri desteklenmez; yalnızca 7 bit adresler desteklenir.
  • MT3620 100 KHz, 400 KHz ve 1 MHz veri yolu hızlarını destekler, ancak 3,4 Mhz'yi desteklemez.
  • MT3620'de 0 baytlık I2C okumaları desteklenmez.
  • I2C'yi üst düzey bir uygulamada kullanırken, I2C çevre birimi tarafından yalnızca ISU çevre birimi bloğundaki SCL ve SDA pinleri kullanılır ve diğer pinler de aynı üst düzey uygulama tarafından GPO olarak kullanılabilir. GPIO için yeniden kullanılabilecek kullanılmayan ISU pinlerinin listesi için G /Ç çevre birimlerine bakın.