Menggunakan UART dalam aplikasi tingkat tinggi
Azure Sphere mendukung universal asynchronous receiver-transmitters (UART) untuk komunikasi serial. UART adalah tipe sirkuit terintegrasi yang digunakan untuk mengirim dan menerima data melalui port seri di komputer atau perangkat periferal. UART banyak digunakan dan dikenal karena kesederhanaannya. Namun, tidak seperti SPI dan I2C, UART tidak mendukung beberapa perangkat subordinat.
Catatan
Topik ini menjelaskan cara menggunakan UART dalam aplikasi tingkat tinggi. Lihat Menggunakan periferal dalam aplikasi berkemampuan real-time untuk informasi tentang penggunaan UART di RTApps.
Aplikasi tingkat tinggi Azure Sphere dapat berkomunikasi dengan UART dengan menghubungi API UART Applibs. Sampel UART_HighLevelApp menunjukkan cara berkomunikasi dengan UART di perangkat MT3620.
Persyaratan UART
Aplikasi yang berkomunikasi dengan UART harus menyertakan file header yang sesuai, dan menambahkan pengaturan UART ke manifes aplikasi.
Semua aplikasi harus mengatur perangkat keras target mereka dan menyertakan file header definisi perangkat keras yang terkait.
File Header
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
Deklarasi UART_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
Pengaturan UART dalam manifes aplikasi mencantumkan UART yang diakses oleh aplikasi. Hanya satu aplikasi yang bisa menggunakan UART dalam satu waktu. Untuk mengonfigurasi pengaturan ini, tambahkan Uart
kapabilitas ke manifes aplikasi, lalu tambahkan setiap UART ke kapabilitas.
Manifes aplikasi Azure Sphere memiliki detail selengkapnya tentang manifes aplikasi.
Dalam kode Anda, gunakan konstanta yang ditentukan untuk perangkat keras Anda untuk mengidentifikasi UART. 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 UART pada MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
Kutipan berikut ini memperlihatkan cara menentukan UART yang sama dalam aplikasi yang menargetkan Avnet MT3620 Starter Kit:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Mengonfigurasi dan membuka UART
Sebelum Anda melakukan operasi pada UART, Anda harus mengonfigurasi pengaturan dan membuka UART. Saat Anda membuka UART, deskriptor file dikembalikan yang bisa Anda berikan ke fungsi yang menjalankan operasi di UART.
Untuk mengonfigurasi pengaturan, hubungi fungsi Fungsi UART_InitConfig untuk menginisialisasi UART_Config struct Struct . Setelah anda menginisialisasi UART_Config struct, Anda bisa mengubah pengaturan UART di struct.
Untuk membuka UART dan menerapkan pengaturan, hubungi fungsi UART_Open dan lewati UART_Config struct.
Melakukan operasi baca dan tulis di UART
Anda bisa menggunakan fungsi POSIX untuk melakukan operasi baca dan tulis di UART. Untuk melakukan operasi baca pada UART, panggil fungsi read(). Untuk melakukan operasi penulisan pada UART, hubungi fungsi write().
Menutup UART
Untuk menutup UART, hubungi fungsi POSIX close().
Dukungan MT3620
Bagian ini menjelaskan opsi UART yang hanya berlaku saat menjalankan Azure Sphere di MT3620.
Spesifikasi UART 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.
Pengaturan UART berikut ini didukung. 8N1 (8 bit data, 1 stop bit, dan tanpa paritas) adalah pengaturan default:
- Saat Anda mengonfigurasi papan dev MT3620, Anda bisa menggunakan port ISU apa pun sebagai antarmuka UART. Saat Anda menggunakan port ISU sebagai antarmuka UART, Anda tidak bisa menggunakan port yang sama seperti antarmuka I2C atau SPI.
- tingkat baud : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000, dan 2000000.
- Bit data: 5, 6, 7, dan 8.
- Berhenti sedikit: 1 dan 2.
- Paritas: ganjil, genap, dan tidak ada.
- Mode kontrol alur: RTS/CTS, XON/XOFF, dan tanpa kontrol aliran.
- Perangkat keras menerima buffer: 32-byte.
Saat menggunakan UART dalam aplikasi tingkat tinggi, hanya 4 dari 5 pin blok periferal ISU yang tersedia yang digunakan. Pin yang tidak digunakan dapat digunakan sebagai pin GPIO oleh aplikasi tingkat tinggi yang sama. Lihat periferal I/O untuk daftar pin ISU tak terpakai yang dapat digunakan kembali untuk GPIO.