Bagikan melalui


Menggunakan SPI dalam aplikasi tingkat tinggi

Azure Sphere mendukung Antarmuka Periferal Seri (SPI, Serial Peripheral Interface) dalam mode master. SPI adalah antarmuka seri yang digunakan untuk komunikasi antara periferal dan sirkuit terintegrasi. SPI menggunakan model master/subordinat di mana perangkat master mengontrol sekumpulan perangkat subordinat. Berbeda dengan I2C, SPI dapat digunakan dengan periferal kecepatan yang lebih tinggi yang lebih kompleks.

Aplikasi dapat mengakses periferal melalui SPI dengan menghubungi API SPI Applibs untuk melakukan operasi pada antarmuka master SPI. Sampel LSM6DS3 SPI menjelaskan cara mengonfigurasi perangkat keras untuk SPI pada perangkat MT3620 dan menggunakan SPI dalam aplikasi.

Pilihan chip

Pilihan chip mengelola koneksi antara antarmuka master SPI dan sekumpulan perangkat subordinat; dan memungkinkan antarmuka master untuk mengirim dan menerima data ke setiap perangkat subordinat secara independen. Azure Sphere mendukung pengaturan aktif-rendah dan aktif-tinggi untuk pilihan chip, dengan active-low sebagai pengaturan default. Setiap antarmuka master SPI dapat digunakan secara eksklusif oleh satu aplikasi. Aplikasi harus membuka antarmuka master SPI dan mengidentifikasi setiap perangkat subordinat yang terhubung sebelum melakukan operasi baca dan tulis pada antarmuka. Operasi membaca dan menulis SPI di Azure Sphere menggunakan API pemblokiran.

Persyaratan SPI

Aplikasi yang menggunakan SPI harus menyertakan file header yang sesuai untuk SPI, dan menambahkan pengaturan SPI ke manifes aplikasi.

Semua aplikasi harus mengatur perangkat keras target mereka dan menyertakan file header definisi perangkat keras yang terkait.

File header

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

Deklarasi SPI_STRUCTS_VERSION definisi preprocessor sebelum menyertakan file header. Ini menentukan versi struct yang digunakan oleh aplikasi.

Ganti "path-to-your-target-hardware.h" dengan jalur ke file header untuk perangkat keras Anda.

Pengaturan manifes aplikasi

Untuk menggunakan API SPI, Anda harus menambahkan SpiMaster kapabilitas ke manifes aplikasi, lalu menambahkan setiap pengontrol master SPI ke kapabilitas tersebut. Ini memungkinkan aplikasi mengakses pengontrol. Manifes aplikasi Azure Sphere memiliki detail selengkapnya tentang manifes aplikasi.

Dalam kode Anda, gunakan konstanta yang ditentukan untuk perangkat keras Anda untuk mengidentifikasi antarmuka master SPI. Kompiler akan menerjemahkan nilai ini ke nilai mentah saat Anda menyusun aplikasi.

Misalnya, berikut kutipan dari manifes aplikasi yang menargetkan papan pengembangan referensi MT3620 (RDB) dan mengonfigurasi dua antarmuka master SPI:

"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],

Kutipan berikut ini memperlihatkan cara menentukan antarmuka master SPI yang sama dalam aplikasi yang menargetkan Avnet MT3620 Starter Kit:

"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]

Mengonfigurasi chip pilih dan buka antarmuka master SPI

Sebelum Anda melakukan operasi pada antarmuka master SPI, Anda harus mengonfigurasi pilihan chip dan membuka antarmuka. Untuk mengonfigurasi pilihan chip, hubungi fungsi SPIMaster_InitConfig untuk menginisialisasi SPIMaster_Config struct Struct . Setelah Anda menginisialisasi SPIMaster_Config, perbarui csPolarity bidang dengan SPI_ChipSelectPolarity_ActiveLow.. /reference/applibs/ity_Activ.. /reference/applibs/rence/applibs/applibs-spi/enum-spi-chipselectpolarity.md).

Untuk membuka antarmuka master SPI, hubungi SPIMaster_Openfunction. Ini akan menerapkan pengaturan default ke antarmuka dan menerapkan pengaturan pemilihan chip Anda:

  • SPI_Mode_0 untuk urutan bit SPI
  • SPI_BitOrder_MsbFirst untuk mode komunikasi

Memperbarui pengaturan untuk antarmuka master SPI

Setelah inisialisasi, Anda dapat mengubah pengaturan antarmuka:

Melakukan operasi baca dan tulis pada antarmuka master SPI

Azure Sphere mendukung beberapa opsi untuk melakukan operasi baca dan tulis dengan SPI. Untuk operasi baca atau tulis satu arah dan untuk mempertahankan interoperabilitas dengan beberapa API POSIX, Anda dapat memanggil fungsi baca(2) dan tulis(2) POSIX.

Anda dapat memanggil fungsi SPIMaster_WriteThenRead untuk melakukan gabungan penulisan lalu membaca operasi dalam satu transaksi bus tanpa gangguan dari transaksi lain.

Hubungi fungsi SPIMaster_TransferSequential saat Anda membutuhkan kontrol yang lebih tepat atas pengaturan waktu antara operasi baca atau tulis. Ini memungkinkan Anda melakukan beberapa operasi baca dan tulis antara sepasang status aktifkan dan nonaktifkan CS.

Menutup antarmuka SPI

Untuk menutup antarmuka, panggil fungsi POSIX standar tutup().

Dukungan MT3620

Bagian ini menjelaskan opsi SPI yang hanya berlaku saat menjalankan Azure Sphere di papan pengembangan MT3620.

Spesifikasi SPI untuk MT3620 tercantum dalam Status Dukungan MT3620. Panduan pengguna papan pengembangan MT3620 menjelaskan tata letak dan fungsi pin untuk kabel.

Folder HardwareDefinitions di direktori penginstalan SDK Microsoft Azure Sphere berisi definisi untuk papan pengembangan, modul, dan chip Azure Sphere yang umum. Ini berisi file header dan JSON yang menentukan antarmuka master untuk MT3620, MT3620 RDB, bersama dengan perangkat keras MT3620 lainnya. Lokasi default untuk folder HardwareDefinitions ada C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions di Windows dan /opt/azurespheresdk/HardwareDefinitions Linux.

  • Ketika mengonfigurasi papan dev MT3620, Anda dapat menggunakan port ISU apa pun sebagai antarmuka master SPI. Anda dapat menyambungkan hingga dua perangkat subordinat ke setiap ISU. Saat Anda menggunakan port ISU sebagai antarmuka master SPI, Anda tidak bisa menggunakan port yang sama seperti antarmuka I2C atau UART.
  • MT3620 mendukung transaksi SPI hingga 40 MHz.
  • MT3620 tidak mendukung operasi SPI baca dan tulis dua arah (full-duplex) bersamaan dalam satu transaksi bus.