Üst düzey uygulamalarda SPI kullanma
Azure Sphere, ana modda Seri Çevre Birimi Arabirimini (SPI) destekler. SPI, çevre birimleri ve tümleşik devreler arasındaki iletişim için kullanılan bir seri arabirimdir. SPI, ana cihazın bir alt cihaz kümesini denetlediği bir ana/alt model kullanır. I2C'nin aksine, SPI daha karmaşık daha yüksek hızlı çevre birimleriyle kullanılabilir.
Uygulamalar, BIR SPI ana arabiriminde işlem gerçekleştirmek için Applibs SPI API'lerini çağırarak SPI aracılığıyla çevre birimlerine erişebilir. LSM6DS3 SPI örneği, MT3620 cihazında SPI donanımının nasıl yapılandırıldığını ve bir uygulamada SPI'nin nasıl kullanılacağını açıklar.
Yonga seçimi
Chip select, BIR SPI ana arabirimi ile bir dizi alt cihaz arasındaki bağlantıyı yönetir; ve ana arabirimin her bir alt cihaza bağımsız olarak veri gönderip almasını sağlar. Azure Sphere, varsayılan ayar olarak etkin-düşük olan yonga seçimi için etkin-düşük ve etkin-yüksek ayarlarını destekler. Her SPI ana arabirimi tek bir uygulama tarafından özel olarak kullanılabilir. Uygulamanın SPI ana arabirimini açması ve arabirimde okuma ve yazma işlemleri gerçekleştirmeden önce bağlı her bir alt cihazı tanımlaması gerekir. Azure Sphere'daki SPI okuma ve yazma işlemleri engelleyici API'leri kullanır.
SPI gereksinimleri
SPI kullanan uygulamalar, SPI için uygun üst bilgi dosyalarını içermeli ve uygulama bildirimine SPI ayarları eklemelidir.
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 SPI_STRUCTS_VERSION 1
#include <applibs/spi.h>
#include "path-to-your-target-hardware.h"
SPI_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ı
SPI API'lerini kullanmak için, özelliği uygulama bildirimine eklemeniz SpiMaster
ve ardından her BIR SPI ana denetleyicisini bu özelliğe eklemeniz gerekir. Bu, uygulamanın denetleyiciye erişmesini sağlar.
Azure Sphere uygulama bildirimi, uygulama bildirimi hakkında daha fazla ayrıntıya sahiptir.
Kodunuzda, SPI ana 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 SPI ana arabirimini yapılandıran bir uygulama bildiriminden bir alıntı aşağıda verilmiştir:
"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],
Aşağıdaki alıntı, Avnet MT3620 Starter Kit'i hedefleyen bir uygulamada aynı SPI ana arabirimlerinin nasıl belirtileceğini gösterir:
"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]
Yonga seçmeyi yapılandırma ve SPI ana arabirimini açma
BIR SPI ana arabiriminde işlem yapmadan önce yonga seçmeyi yapılandırmanız ve arabirimi açmanız gerekir. Yonga seçmeyi yapılandırmak için SPIMaster_InitConfig işlevini çağırarak SPIMaster_Config Yapısı'nı başlatın. SPIMaster_Config başlatıldıktan sonra alanı csPolarity
SPI_ChipSelectPolarity_ActiveLow.. /reference/applibs/ity_Activ.. /reference/applibs/rence/applibs/applibs-spi/enum-spi-chipselectpolarity.md).
BIR SPI ana arabirimini açmak için SPIMaster_Openfunction çağırın. Bu, arabirime varsayılan ayarları uygular ve yonga seçme ayarlarınızı uygular:
-
SPI_Mode_0
SPI bit sırası için -
SPI_BitOrder_MsbFirst
iletişim modu için
SPI ana arabiriminin ayarlarını güncelleştirme
Başlatmadan sonra arabirimin ayarlarını değiştirebilirsiniz:
- Bit sırasını değiştirmek için SPIMaster_SetBitOrder
- SPI veri yolu hızını değiştirmek için SPIMaster_SetBusSpeed
- İletişim modunu değiştirmek için SPIMaster_SetMode
SPI ana arabiriminde okuma ve yazma işlemleri gerçekleştirme
Azure Sphere, SPI ile okuma ve yazma işlemleri gerçekleştirmek için çeşitli seçenekleri destekler. Tek yönlü okuma veya yazma işlemleri için ve bazı POSIX API'leriyle birlikte çalışabilirliği korumak için POSIX read(2) ve write(2) işlevlerini çağırabilirsiniz.
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 SPIMaster_WriteThenRead işlevini çağırabilirsiniz.
Okuma veya yazma işlemleri arasındaki zamanlama üzerinde daha hassas denetime ihtiyacınız olduğunda SPIMaster_TransferSequential işlevini çağırın. Bu, bir çift CS etkinleştirme ve devre dışı bırakma durumu arasında birden çok okuma ve yazma işlemi gerçekleştirmenizi sağlar.
SPI arabirimini kapatma
Arabirimi kapatmak için standart POSIX işlevini close() çağırın.
MT3620 desteği
Bu bölümde, yalnızca MT3620 geliştirme panosunda Azure Sphere çalıştırılırken uygulanan SPI seçenekleri açıklanmaktadır.
MT3620 için SPI belirtimleri MT3620 Destek Durumu'nda listelenir. 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
.
- MT3620 geliştirme panosu yapılandırırken, herhangi bir ISU bağlantı noktasını SPI ana arabirimi olarak kullanabilirsiniz. Her ISU'ya en fazla iki alt cihaz bağlayabilirsiniz. ISU bağlantı noktasını SPI ana arabirimi olarak kullandığınızda, I2C veya UART arabirimiyle aynı bağlantı noktasını kullanamazsınız.
- MT3620, 40 MHz'e kadar olan SPI işlemlerini destekler.
- MT3620, tek bir veri yolu işlemi içinde eşzamanlı çift yönlü okuma ve yazma (tam çift yönlü) SPI işlemlerini desteklemez.