Panduan Pengguna Catatan Aplikasi HOLTEK HT32 MCU UART
Catatan Aplikasi HOLTEK HT32 MCU UART

Perkenalan

Universal Asynchronous Receiver/Transmitter – UART adalah antarmuka transmisi serial yang banyak digunakan yang menyediakan transmisi data full-duplex asynchronous yang fleksibel. Kode aplikasi “Module_UART” yang disediakan dalam catatan aplikasi ini menggunakan interupsi TX/RX dengan ring buffer perangkat lunak untuk mengimplementasikan fungsi transmisi/penerimaan UART sederhana melalui API, yang fungsi terkaitnya dijelaskan di bawah ini. Ini akan menyederhanakan seluruh proses transmisi data dan memungkinkan pengguna untuk memahami dan mengimplementasikan aplikasi komunikasi UART dengan cepat.

  • Fungsi kirim/terima: baca byte, tulis byte, baca buffer, tulis buffer, dan lain-lain.
  • Fungsi status: memperoleh panjang buffer, status TX, dll.

Dokumen ini pertama-tama akan memperkenalkan protokol komunikasi UART, yang akan membantu pengguna untuk lebih memahami komunikasi UART dari prinsip hingga aplikasi. Ini diikuti dengan pengunduhan dan persiapan sumber daya yang diperlukan untuk kode aplikasi, termasuk pustaka firmware, pengunduhan kode aplikasi, file dan konfigurasi direktori serta pengenalan alat perangkat lunak terminal yang digunakan dalam catatan aplikasi. Dalam bab Deskripsi Fungsional, struktur direktori kode aplikasi, pengaturan parameter, dan deskripsi API akan diperkenalkan. Penggunaan API akan dijelaskan menggunakan kode aplikasi “Module_UART” dan konsumsi sumber daya Flash/RAM yang diperlukan untuk API juga akan dicantumkan. Bab Petunjuk Penggunaan akan memandu pengguna melalui langkah-langkah persiapan lingkungan, kompilasi, dan pengujian untuk memastikan bahwa kode aplikasi akan berfungsi dengan baik. Kemudian akan diberikan petunjuk yang menjelaskan cara mengintegrasikan API ke dalam proyek pengguna dan akhirnya memberikan referensi untuk modifikasi dan masalah umum yang mungkin ditemui.

Singkatan yang digunakan: 

  • UART: Penerima/Pemancar Asinkron Universal
  • API: Antarmuka Pemrograman Aplikasi
  • LSB: Sedikit Signifikan
  • MSB: Bit Paling Signifikan
  • komputer: Komputer Pribadi
  • SK: Kit Pemula, papan pengembangan HT32
  • IDE: Lingkungan Pengembangan Terpadu

Protokol Komunikasi UART

UART adalah jenis antarmuka komunikasi serial yang menerapkan konversi data paralel ke serial pada pemancarnya dan kemudian berkomunikasi secara serial dengan penerima yang serupa. Penerima kemudian melakukan konversi data serial ke paralel setelah penerimaan data. Gambar 1 menunjukkan diagram skema komunikasi serial yang menunjukkan bagaimana data ditransfer dalam urutan bitwise. Oleh karena itu untuk komunikasi dua arah antara pemancar dan penerima, hanya dua kabel, TX dan RX, yang diperlukan untuk mentransfer data secara serial antara satu sama lain. TX adalah pin tempat UART mentransmisikan data serial dan terhubung ke pin RX penerima. Oleh karena itu perangkat pemancar dan penerima perlu menghubungkan silang pin TX dan RX mereka untuk melakukan komunikasi dua arah UART, seperti yang ditunjukkan pada Angka 2.

Gambar 1. Diagram Komunikasi Serial
Diagram Komunikasi Serial

Gambar 2. Diagram Sirkuit UART
Diagram Sirkuit UART

Selama komunikasi serial UART, transmisi data bersifat asinkron. Ini berarti tidak ada jam atau sinyal sinkronisasi lainnya antara pemancar dan penerima. Di sini, baud rate digunakan, yang merupakan kecepatan transmisi/penerimaan data serial dan yang ditetapkan oleh kedua belah pihak sebelum transfer data. Selain itu, bit khusus seperti bit awal dan akhir ditambahkan ke awal dan akhir paket data untuk membentuk paket data UART yang lengkap. Gambar 3 menunjukkan struktur paket data UART sementara Gambar 4 menunjukkan paket data UART 8-bit tanpa bit paritas.
Gambar 3. Struktur Paket Data UART
Struktur Paket Data UART

Gambar 4. Format Paket Data UART 8-bit
Format Paket Data
Setiap bagian paket data UART diperkenalkan secara berurutan di bawah ini.

  • Bit Mulai: Ini menunjukkan dimulainya paket data. Pin UART TX biasanya tetap pada level logika tinggi sebelum transmisi dimulai. Jika transmisi data dimulai, pemancar UART akan menarik pin TX dari tinggi ke rendah, yaitu dari 1 ke 0, lalu menahannya di sana selama satu siklus clock. Penerima UART akan mulai membaca data saat transisi tinggi ke rendah telah terdeteksi pada pin RX.
  • Data: Ini adalah data aktual yang ditransfer, dengan panjang data 7, 8 atau 9 bit. Data biasanya ditransfer dengan LSB terlebih dahulu.
  • Bit Paritas: Jumlah logika “1” pada data digunakan untuk menentukan apakah ada data yang berubah selama transmisi. Untuk paritas genap, jumlah total logika “1” pada data harus berupa angka genap, sebaliknya, jumlah total logika “1” pada data harus berupa angka ganjil untuk paritas ganjil.
  • Berhenti Sedikit: Ini menandakan akhir dari paket data, di mana pemancar UART akan menarik pin TX dari rendah ke tinggi, yakni dari 0 ke 1, lalu menahannya di sana selama periode waktu 1 atau 2 bit.

Seperti yang disebutkan sebelumnya, karena tidak ada sinyal clock di sirkuit UART, kecepatan transmisi/penerimaan data serial yang sama, yang dikenal sebagai baud rate, harus ditetapkan antara pemancar dan penerima untuk menerapkan transmisi bebas kesalahan. Baud rate ditetapkan oleh jumlah bit yang ditransfer per detik, dalam bps (bit per detik). Beberapa baud rate standar dan umum digunakan adalah 4800bps, 9600bps, 19200bps, 115200bps, dst. Waktu yang diperlukan untuk mentransfer satu bit data ditunjukkan di bawah ini.
Tabel 1. Kecepatan Baud vs. Waktu Transmisi 1-Bit 

Kecepatan Baud Transmisi 1-Bit Waktu
Kecepatan 4800bps 208.33µs
Kecepatan 9600bps 104.16µs
Kecepatan 19200bps 52.08µs
Kecepatan 115200bps 8.68µs

Unduhan dan Persiapan Sumber Daya

Bab ini akan memperkenalkan kode aplikasi dan alat perangkat lunak yang digunakan, serta cara mengkonfigurasi direktori dan file jalur.

Perpustakaan Firmware 

Pertama, pastikan pustaka firmware Holtek HT32 telah diunduh sebelum menggunakan kode aplikasi. Tautan unduhan ditampilkan di bawah ini. Di sini ada dua pilihan, HT32_M0p_Vyyyymmdd.zip untuk seri HT32F5xxxx dan HT32_M3_Vyyyymmdd.zip untuk seri HT32F1xxxx. Unduh dan ekstrak file yang diinginkan file.

Ritsleting file berisi beberapa folder yang dapat diklasifikasikan sebagai Dokumen, Perpustakaan Firmware, Alat dan item lainnya, jalur penempatannya ditunjukkan pada Gambar 5. Zip perpustakaan firmware HT32 file dengan file nama HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip terletak di bawah folder Firmware_Library.

Gambar 5. Isi HT32_M0p_Vyyyymmdd.zip
Isi

Kode Aplikasi
Unduh kode aplikasi dari tautan berikut. Kode aplikasi dikemas dalam zip file dengan file nama HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Lihat Gambar 6 untuk file konvensi nama.

Gambar 6. Kode Aplikasi File Nama Pendahuluan 

Tautan unduhan: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kode Aplikasi

File dan Konfigurasi Direktori
Karena kode aplikasi tidak berisi pustaka firmware HT32 files, kode aplikasi dan pustaka firmware di-unzip files harus ditempatkan di jalur yang benar sebelum memulai kompilasi. Kode aplikasi zip file biasanya berisi satu atau beberapa folder, seperti aplikasi dan perpustakaan, seperti yang ditunjukkan pada Gambar 7. Letakkan folder aplikasi di bawah direktori root perpustakaan firmware HT32 untuk menyelesaikan file konfigurasi jalur, seperti yang ditunjukkan pada Gambar 8. Atau, ekstrak kode aplikasi dan pustaka firmware HT32 secara bersamaan ke jalur yang sama untuk memperoleh hasil konfigurasi yang sama.

Gambar 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Isi
Isi

Gambar 8. Jalur Dekompresi
Jalur Dekompresi

Perangkat Lunak Terminal
Kode aplikasi dapat mentransfer pesan melalui port COM untuk menerapkan pemilihan fungsi atau tampilan status. Hal ini mengharuskan pihak host untuk menginstal perangkat lunak terminal terlebih dahulu. Pengguna dapat memilih perangkat lunak koneksi yang sesuai, atau menggunakan perangkat lunak berlisensi gratis seperti Tera Term. Dalam kode aplikasi, saluran UART dikonfigurasi dengan panjang kata 8-bit, tanpa paritas, 1 bit henti, dan laju baud 115200bps.

Deskripsi Fungsional

Bab ini akan memberikan deskripsi fungsional untuk kode aplikasi, termasuk informasi tentang struktur direktori, arsitektur API, deskripsi pengaturan, dll.

Struktur Direktori
Kode aplikasi file berisi folder aplikasi. Lapisan berikutnya adalah folder “Module_UART” yang berisi dua program aplikasi, “UART_Module_Example” dan “UART_Bridge”. Yang relevan filetercantum dan dijelaskan di bawah ini.
Tabel 2. Struktur Direktori Kode Aplikasi

map / File Nama Keterangan
\\aplikasi\Modul_UART\UART_Modul_Example*1
_BuatProyek.bat Skrip batch untuk membuat proyek files
_SumberProyek.ini Inisialisasi file untuk menambahkan kode sumber ke proyek
ht32_board_config.h Pengaturan file terkait dengan penugasan I/O periferal IC
ht32fxxxxx_01_id.c Program layanan interupsi file
utama.c Kode sumber program utama
\\aplikasi\Modul_UART\Jembatan_UART*2
_BuatProyek.bat Skrip batch untuk membuat proyek files
_SumberProyek.ini Inisialisasi file untuk menambahkan kode sumber ke proyek
ht32_board_config.h Pengaturan file terkait dengan penugasan I/O periferal IC
ht32fxxxxx_01_id.c Program layanan interupsi file
utama.c Kode sumber program utama
jembatan_uart.h jembatan_uart.c Header jembatan UART file dan kode sumber file
\\utilitas\perangkat lunak perantara
modul_uart.h*3 modul_uart.c*3 Judul API file dan kode sumber file
\\utilitas\umum
penyangga_cincin.h penyangga_cincin.c Header penyangga cincin perangkat lunak file dan kode sumber file

Catatan: 

  1. Dalam “UART_Module_Examp“kode aplikasi”, operasi baca dan tulis API dilakukan secara loopback, lihat “Contoh Penggunaan API”ampbagian “les” untuk rincian lebih lanjut.
  2.  Dalam kode aplikasi “UART_Bridge”, dua saluran UART, UART CH0 dan UART CH1, diaktifkan, dan protokol komunikasi khusus melalui struktur COMMAND diimplementasikan antara dua perangkat UART. Untuk informasi lebih lanjut, lihat “Contoh Penggunaan API”ampbagian les”.
  3. Kode aplikasi perlu menggunakan uart_module.c/h fileyang memiliki persyaratan versi pustaka firmware. Persyaratan dapat berubah sewaktu-waktu sesuai dengan pembaruan. Untuk mengonfirmasi persyaratan versi pustaka firmware terkini, rujuk konten pemeriksaan dependensi dengan mencari kata kunci “Pemeriksaan dependensi” di main.c fileJika versi pustaka firmware tidak memenuhi persyaratan, unduh versi terbaru dari tautan yang disediakan di bagian “Perpustakaan Firmware”.

Arsitektur API
Setiap API memiliki parameter penting CH, yaitu Saluran UART. Parameter ini menentukan saluran UART mana yang akan dikontrol. Saat ini, hingga empat saluran UART didukung dan oleh karena itu empat simbol konstan didefinisikan sebagai berikut. Simbol-simbol ini digunakan sebagai parameter CH yang menyediakan API sebagai dasar untuk kontrol.

  • UARTM_CH0: parameter input – mengontrol atau mengonfigurasi UART CH0
  • UARTM_CH1: parameter input – mengontrol atau mengonfigurasi UART CH1
  • UARTM_CH2: parameter input – mengontrol atau mengonfigurasi UART CH2
  • UARTM_CH3: parameter input – mengontrol atau mengonfigurasi UART CH3

Ruang memori tidak akan terbuang jika hanya satu saluran UART yang digunakan. Hal ini karena jumlah saluran UART yang didukung dapat diatur dan kode saluran UART yang tidak digunakan akan dihapus oleh preprosesor untuk menambah ruang memori yang tersedia. Arsitektur API ditunjukkan pada Gambar 9.

Gambar 9. Diagram Blok Arsitektur API
Diagram Blok Arsitektur

Setiap API terdiri dari empat kelompok pengaturan atau kontrol terkait saluran UART sehingga pengguna hanya perlu memasukkan parameter CH yang diinginkan. Untuk mengonfigurasi API yang relevan, hanya diperlukan tabel parameter konfigurasi dasar UART tambahan dengan bentuk struktur, USART_InitTypeDef. API akan menerapkan konfigurasi dasar UART sesuai dengan konten parameter dalam tabel. Lihat bagian “Deskripsi API” untuk tabel struktur konfigurasi dasar UART.

Modul uart_.c/.h files hanya berisi interupsi (CHx_IRQ) ​​dan tabel status (CHx Status) dari setiap saluran UART sementara semua pengaturan yang diperlukan untuk komunikasi UART disediakan oleh ht32_board_config.h. Parameter yang relevan dengan perangkat keras dalam ht32_board_config.h file ditampilkan dalam tabel di bawah. Rincian lebih lanjut tersedia di bagian “Deskripsi Pengaturan”.

Parameter perangkat keras yang relevan dalam ht32_board_config.h mencakup pengaturan I/O dan pengaturan port UART fisik, sebagai berikut.

Tabel 3. Simbol Definisi di ht32_board_config.h

Simbol Keterangan
HTCFG_UARTM_CH0 Nama port UART fisik; Mis.ampfile: UART0, UART1…
HTCFG_UARTM0_TX_PORT_GPIO Menentukan nama port TX untuk CH0; Mis.ampcontoh: A, B, C…
Kode PIN GPIO HTCFG_UARTM0_TX Menentukan nomor pin TX untuk CH0; Mis.ampnilai: 0~15
Port GPIO HTCFG_UARTM0_RX Menentukan nama port RX untuk CH0; Mis.ampcontoh: A, B, C…
Kode PIN GPIO HTCFG_UARTM0_RX Menentukan nomor pin TX untuk CH0; Mis.ampnilai: 0~15
HTCFG_UARTM0_UKURAN_BUFFER_TX Menentukan ukuran buffer TX untuk CH0; Mis.ampl: 128
HTCFG_UARTM0_UKURAN_BUFFER_RX Menentukan ukuran buffer RX untuk CH0; Mis.ampl: 128

Untuk mengubah konfigurasi UART channel AFIO, rujuk lembar data perangkat yang relevan. Saat ini hanya definisi I/O untuk UART CH0 yang berlaku karena hanya UART CH0 yang telah dikonfigurasi di ht32_board_config.h. Untuk menambahkan UART CH1~3, definisi I/O mereka perlu dilengkapi dengan merujuk ke definisi UART CH0 atau merujuk ke bagian “Modifikasi Pengaturan dan Tanya Jawab Umum”.

Ada tiga fitur utama arsitektur API: 

  1. Hingga empat saluran UART didukung. Parameter inputnya adalah UARTM_CH0, UARTM_CH1, UARTM_CH2, dan UARTM_CH3.
  2.  Jumlah saluran UART dapat diatur dan saluran yang tidak digunakan tidak akan mengurangi ruang memori yang tersedia.
  3. Semua pengaturan UART dan definisi I/O sepenuhnya terpisah dari API. Hal ini meningkatkan kemudahan manajemen dalam pengaturan nilai dan mengurangi kemungkinan pengaturan yang salah atau hilang.

Deskripsi Pengaturan 

Bagian ini akan memperkenalkan pengaturan parameter di ht32_board_config.h dan uart_module.h files.

  1. ht32_board_config.h: Ini file digunakan untuk definisi pin dan pengaturan yang relevan dengan papan pengembangan, yang mencakup saluran IP UART (UART0, UART1, USART0…) yang digunakan oleh Starter Kit (SK), lokasi pin TX/RX yang sesuai, dan ukuran buffer TX/RX. Gambar 10 menunjukkan konten pengaturan Starter Kit HT32F52352. Bergantung pada integrasi fungsional pengembangan, pengguna dapat merujuk ke bagian “Penetapan Pin” dari lembar data perangkat yang digunakan untuk mengimplementasikan definisi pin. Rincian lebih lanjut tentang modifikasi pengaturan akan dijelaskan di bagian “Modifikasi pengaturan dan Tanya Jawab Umum”.
    Gambar 10. Pengaturan ht32_board_config.h (HT32F52352)
    Pengaturan
  2. modul uart.h: Ini adalah header API file digunakan oleh kode aplikasi, yang mencakup pengaturan default yang relevan, definisi fungsi, dll. Seperti yang ditunjukkan pada Gambar 11, konten pengaturan default dapat ditimpa oleh konfigurasi eksternal, seperti pengaturan di ht32_board_config.h file.
    Gambar 11. Pengaturan Default di uart_module.h
    Pengaturan Default
Deskripsi API
  1. Deskripsi tipe data kode aplikasi.
    • USART_InitTypeDef
      Ini adalah struktur konfigurasi dasar UART yang terdiri dari konfigurasi BaudRate, WordLength, StopBits, Parity dan Mode, seperti yang ditunjukkan di bawah ini.
      Variabel Nama Jenis Keterangan
      USART_Tingkat Baud kamu32 Kecepatan baud komunikasi UART
      USART_PanjangKata kamu16 Panjang kata komunikasi UART: 7, 8 atau 9 bit
      USART_BitBerhenti kamu16 Panjang bit henti komunikasi UART: 1 atau 2 bit
      USART_Paritas kamu16 Paritas komunikasi UART: genap, ganjil, tanda, spasi atau tidak ada paritas
      Mode_USART kamu16 Mode komunikasi UART; API hanya mendukung mode normal
  2. Sebelum menggunakan fungsi API, selesaikan konfigurasi dasar UART dalam program utama. Konfigurasi dasar UART untuk kode aplikasi ini ditunjukkan pada Gambar 12. Di sini, laju baud adalah 115200bps, panjang word adalah 8-bit, panjang stop bit adalah 1-bit, dan tidak ada paritas.
    Gambar 12. Konfigurasi Dasar UART
    Konfigurasi Dasar
  3. Gambar 13 menunjukkan fungsi API yang dideklarasikan di uart_module.h fileTabel berikut menjelaskan fungsi, parameter input, dan penggunaan fungsi API.
    Gambar 13. Deklarasi Fungsi API di uart_module.h 
    Deklarasi Fungsi API
Nama batal UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Fungsi Inisialisasi modul UART
  Masukan CH saluran UART
pUART_Inisialisasi Penunjuk struktur konfigurasi dasar UART
 NilaiWaktuHabis uRx Nilai batas waktu UART RX FIFO. Saat RX FIFO menerima data baru, penghitung akan direset dan dimulai ulang. Setelah penghitung mencapai nilai batas waktu yang telah ditetapkan dan interupsi batas waktu yang sesuai telah diaktifkan, interupsi batas waktu akan dibuat.
 Penggunaan UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Jalankan konfigurasi dasar UART//Lihat Gambar 12 untuk konfigurasi USART_InitStructure
Nama u32 UARTM_WriteByte(u32 CH, u8 Data)
Fungsi Operasi penulisan byte modul UART (TX)
Masukan CH saluran UART
data terbaru Data yang akan ditulis
Keluaran KESUKSESAN Berhasil
KESALAHAN Gagal
Penggunaan UARTM_WriteByte(UARTM_CH0, 'A'); //UART menulis 1 byte – 'A'
Nama u32 UARTM_Tulis(u32 CH, u8 *pBuffer, u32 panjang)
Fungsi Operasi penulisan modul UART (TX)
 Masukan CH saluran UART
pBuffer Penunjuk penyangga
uPanjang Panjang data yang akan ditulis
Keluaran KESUKSESAN Berhasil
KESALAHAN Gagal
 Penggunaan u8 Test[] = “Ini adalah tes!\r\n”; UARTM_Write(UARTM_CH0, Uji, sizeof(Uji) -1); //UART menulis data pBuffer
Nama u32 UARTM_ReadByte(u32 CH, u8 *pData)
Fungsi Operasi baca byte modul UART (RX)
Masukan CH saluran UART
pData Alamat untuk menempatkan data yang dibaca
Keluaran KESUKSESAN Berhasil
KESALAHAN Gagal (tidak ada data)
   Penggunaan u8 Data Suhu; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Jika UARTM_ReadByte() mengembalikan SUCCESS maka UART menulis byte data ini
Nama u32 UARTM_Baca(u32 CH, u8 *pBuffer, u32 uLength)
Fungsi Operasi pembacaan modul UART (RX)
 Masukan CH saluran UART
pBuffer Penunjuk penyangga
uPanjang Panjang data yang akan dibaca
Keluaran Baca hitungan Panjang data telah dibaca
     Penggunaan u8 Tes2[10]; u32 Panjang; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() membaca 5 byte data dan menyimpan data ke Test2, dan menetapkan jumlah byte yang dibaca ke Len//Tulis data yang bersumber dari Test2
Nama kamu32 UARTM_DapatkanBacaBufferLength(u32 CH)
Fungsi Dapatkan panjang buffer baca (RX)
Masukan CH saluran UART
Keluaran uPanjang Baca panjang buffer
  Penggunaan UARTM_Init(UARTM_CH0, &USART_InitStruktur, 40); // inisialisasi modul UART sementara (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Tunggu hingga UARTM_ReadBuffer menerima 5 byte data
Nama kamu32 UARTM_DapatkanPanjangBufferTulis(u32 CH)
Fungsi Dapatkan panjang buffer tulis (TX)
Masukan CH saluran UART
Keluaran uPanjang Tulis panjang buffer
Nama u8 UARTM_IsTxSelesai(u32 CH)
Fungsi Dapatkan status TX
Masukan CH saluran UART
Keluaran BENAR Status TX: selesai
PALSU Status TX: belum selesai
      Penggunaan UARTM_WriteByte(UARTM_CH0, 'O'); #jika 1 // “uart_module.c” SVN >= 525 diperlukan sementara (UARTM_IsTxFinished (UARTM_CH0) == FALSE) #elsewhile (1) #endif //API ini dapat digunakan untuk memeriksa status TX, seperti yang ditunjukkan di atas; tunggu hingga API UARTM_WriteByte() selesai, yaitu, status TX adalah BENAR, lalu lanjutkan tindakan berikutnya.//Pembatasan ditambahkan karena fungsi ini belum ditambahkan hingga nomor versi SVN di uart_module.c adalah 525.
Nama ruang kosong UARTM_BuangBacaBuffer(u32 CH)
Fungsi Buang data dalam buffer baca
Masukan CH saluran UART

Penggunaan API Exampsedikit 

Bagian ini akan mendemonstrasikan penulisan dan pembacaan APIampfile kode aplikasi “Module_UART” menggunakan proses inisialisasi dan “UART_Module_Exampproses kode aplikasi “le”. Sebelum menggunakan API, pengguna perlu menyertakan header API file ke dalam kode sumber program utama file (#termasuk “middleware/uart_module.h”).

Seperti yang ditunjukkan pada Gambar 14, saat memasuki proses inisialisasi, pertama-tama tentukan struktur konfigurasi dasar UART. Kemudian konfigurasikan anggota struktur konfigurasi dasar UART termasuk BaudRate, WordLength, StopBits, Parity, dan Mode. Terakhir, panggil fungsi inisialisasi API, yang penyelesaiannya menunjukkan akhir dari proses inisialisasi. Setelah ini, pengguna dapat melanjutkan operasi tulis dan baca berdasarkan konfigurasi dasar UART yang telah ditetapkan sebelumnya.

Gambar 14. Diagram Alir Inisialisasi
Diagram Alir Inisialisasi

Modul UART ExampKode aplikasi “le” menunjukkan operasi baca dan tulis API secara berulang. Diagram alir untuk ini ditunjukkan pada Gambar 15. Fungsi API yang digunakan meliputi UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read(), dan UARTM_GetReadBufferLength(). Deskripsi fungsi-fungsi tersebut disediakan di bagian “Deskripsi API”.

Gambar 15. Diagram Alir Tulis dan Baca Exampsedikit
Diagram Alir Tulis dan Baca Exampsedikit

Ada kode aplikasi “UART_Bridge” lain di bawah folder “Module_UART” yang terkait file deskripsi diperkenalkan di bagian “Struktur Direktori”. Kode aplikasi “UART_Bridge” mengaktifkan dua saluran UART, UART CH0 dan UART CH1, lalu menyesuaikan protokol komunikasi antara dua perangkat UART melalui struktur PERINTAH, gCMD1 dan gCMD2. Struktur ini didefinisikan di uart_bridge.c, seperti yang ditunjukkan di bawah ini. UARTBridge_CMD1TypeDef gCMD1:

Variabel Nama Jenis Keterangan
Judul u u8 Judul
UCmd u8 Memerintah
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Variabel Nama Jenis Keterangan
Judul u u8 Judul
uCmdA u8 Perintah A
uCmdB u8 Perintah B
uData[3] u8 Data

Dalam kode aplikasi “UART_Bridge”, gunakan gCMD1 untuk menerima data sebagai paket perintah dan kemudian menganalisisnya. Kemudian sesuai dengan protokol komunikasi yang disesuaikan, tetapkan gCMD2 sebagai paket respons dan kirimkan. Berikut ini adalah contohampfile paket perintah gCMD1) dan paket respons (gCMD2). Paket Perintah (UARTBridge_CMD1TypeDef gCMD1):

byte 0 byte 1 Bit 2 ~ Bit 4
Judul u UCmd Data u [3]
"A" “1” “x, y, z”

Paket Respons (UARTBridge_CMD2TypeDef gCMD2):

byte 0 byte 1 byte 2 Bit 3 ~ Bit 5
Judul u uCmdA uCmdB Data u [3]
"B" "A" “1” “x, y, z”

Pekerjaan Sumber Daya
Mengambil HT32F52352 sebagai contohample, sumber daya yang ditempati oleh modul UART ditunjukkan di bawah ini.

HT32F52352
Ukuran ROM 946 Byte
Ukuran RAM 40*1 + 256*2 Byte adalah satu-satunya kata yang digunakan dalam bahasa Inggris.

Catatan:

  1. Variabel global termasuk bendera dan status untuk satu saluran menempati 40 byte RAM.
  2.  Ini berlaku untuk kondisi saat satu saluran digunakan dan ukuran buffer TX/RX adalah 128/128 byte. Ukuran buffer dapat diatur sesuai dengan persyaratan aplikasi.

Tabel 4. Kode Aplikasi Sumber Daya Pekerjaan 

  • Lingkungan kompilasi: MDK-Arm V5.36, ARMCC V5.06 pembaruan 7 (versi 960)
  • Optimalkan opsi: Tingkat 2 (-O2)

Petunjuk Penggunaan

Bab ini akan memperkenalkan persiapan lingkungan untuk kode aplikasi “Module_UART”, serta langkah-langkah kompilasi dan pengujian.

Persiapan Lingkungan
Perangkat keras dan perangkat lunak yang diperlukan untuk kode aplikasi “Module_UART” tercantum di bawah ini.
Tabel 5. Persiapan Lingkungan Perangkat Keras/Perangkat Lunak 

Perangkat Keras/Perangkat Lunak Menghitung Catatan
Paket Pemula 1 Catatan aplikasi ini menggunakan HT32F52352 Starter Kit sebagai contohample
Kabel USB 1 Micro USB, terhubung ke PC
Kode Aplikasi Jalur unduhan, file dan konfigurasi direktori diperkenalkan di bagian “Unduhan dan Persiapan Sumber Daya”.Jalur: “\\application\Module_UART\UART_Module_Exampsaya”
Istilah Tera Lihat bagian “Perangkat Lunak Terminal”
IDE Keil Keil uVision V5.xx

Pertama, gunakan Starter Kit HT32F52352 yang dikombinasikan dengan fungsi Virtual COM Port (VCP) dari e-Link32 Lite untuk pengenalan aplikasi UART. Hal ini memerlukan persiapan lingkungan berikut untuk diterapkan:

  1. Terdapat dua antarmuka USB pada papan. Gunakan kabel USB untuk menghubungkan PC dan antarmuka eLink32 Lite pada papan seperti yang ditunjukkan pada Gambar 16-(a).
  2. Karena kode aplikasi perlu menggunakan fungsi Virtual COM Port (VCP) e-Link32 Lite, pastikan bahwa PAx*2 dan DAP_Tx dari UART Jumper-J2*1 telah dihubung singkat menggunakan jumper. Lokasi J2 ditunjukkan pada Gambar 16-(b).

Catatan

  1. J2 pada Starter Kit memiliki dua opsi, PAx dan DAP_Tx shorted atau PAx dan RS232_Tx shorted. Lihat buku petunjuk pengguna Starter Kit untuk fungsi pengaturan terperinci.
  2. Lokasi pin RX UART MCU pada Starter Kit yang berbeda berbeda. Contoh iniample menggunakan PAx untuk menunjukkan pin RX.

Gambar 16. Diagram Blok Starter Kit HT32
Diagram Blok Kit

Sekarang gunakan papan target pengguna yang dikombinasikan dengan fungsi Virtual COM Port (VCP) dari e-Link32 Pro untuk pengenalan aplikasi UART. Ini memerlukan persiapan lingkungan berikut untuk diterapkan:

  1. Satu sisi e-Link32 Pro dihubungkan ke PC menggunakan kabel Mini USB dan sisi lainnya dihubungkan ke papan target pengguna melalui kabel abu-abu 10-bit. Koneksi antara antarmuka SWD kabel dan papan target diimplementasikan menggunakan jalur Dupont, seperti yang ditunjukkan pada Gambar 17-(a).
  2. Pin komunikasi serial e-Link32 Pro adalah Pin#7 VCOM_RXD dan Pin#8- VCOM_TXD. Pin ini harus dihubungkan ke pin TX dan RX pada papan target pengguna, seperti yang ditunjukkan pada Gambar 17-(b).
    Gambar 17. Diagram Blok Papan Target Pengguna e-Link32 Pro +
    Papan Target Pengguna

Kompilasi dan Pengujian
Bagian ini akan mengambil “application\Module_UART\UART_Module_Example” sebagai mantanample untuk memperkenalkan proses kompilasi dan pengujian. Sebelum ini, pastikan bahwa semua persiapan yang dijelaskan di bagian sebelumnya telah dilaksanakan dan perangkat lunak terminal Tera Term telah diunduh.

Langkah-langkah operasi terperinci dirangkum di bawah ini.
Langkah 1. Uji daya

Siapkan lingkungan perangkat keras seperti yang dijelaskan di bagian sebelumnya. Setelah dinyalakan, LED daya D9 di kiri bawah Starter Kit akan menyala. LED USB D1 pada e-Link32 Lite di kanan atas akan menyala setelah enumerasi USB selesai. Jika D1 tidak menyala setelah jangka waktu yang lama, konfirmasikan apakah kabel USB dapat berkomunikasi. Jika tidak, lepaskan dan masukkan kembali.

Langkah 2. Buat proyek
Buka aplikasi\Modul_UART\UART_Module_Exampfolder, klik pada _CreateProject.bat file untuk membuat proyek, seperti yang ditunjukkan pada Gambar 18. Karena catatan aplikasi ini menggunakan HT32F52352 Starter Kit, buka proyek Keil IDE “Project_52352.uvprojx” yang terletak di bawah folder MDK_ARMv5.

Gambar 18. Jalankan _CreateProject.bat untuk Membuat Proyek
Hasilkan Proyek

Langkah 3. Kompilasi dan program
Setelah proyek dibuka, pertama-tama klik “Build” (atau gunakan pintasan “F7”), lalu klik “Download” (atau gunakan pintasan “F8”). Setelah ini, hasil build dan download akan ditampilkan di jendela Build Output. Lihat Gambar 19.

Gambar 19. Hasil Build dan Download
Membangun dan Mengunduh Hasil

Langkah 4Buka perangkat lunak Tera Term dan konfigurasikan port serial
Buka perangkat lunak Tera Term dan port COM. Perhatikan apakah nomor port COM yang dihasilkan oleh Starter Kit sudah benar atau belum. Kemudian klik “Setup >> Serial Port” untuk masuk ke antarmuka konfigurasi. Konfigurasi antarmuka UART dari kode aplikasi “Module_UART” dijelaskan di bagian “Terminal Software”. Hasil pengaturan ditunjukkan pada Gambar 20.

Gambar 20. Hasil Setup Port Serial Tera Term
Hasil Pengaturan
Langkah 5. Atur ulang sistem dan uji
Tekan tombol reset SK – B1 Reset. Setelah ini, pesan “ABCThis is test!” akan muncul.
dikirim melalui API dan akan ditampilkan di jendela Tera Term, seperti yang ditunjukkan pada Gambar 21. Mengenai fungsi penerimaan, saat memasukkan data ke jendela Tera Term, API yang relevan akan digunakan untuk menentukan panjang buffer penerimaan. Saat data yang diterima oleh PC mencapai 5 byte, 5 byte data yang diterima akan dikirim secara berurutan. Seperti yang ditunjukkan pada Gambar 22, data yang dimasukkan secara berurutan adalah “1, 2, 3, 4, 5”, yang diterima dan ditentukan melalui API. Setelah ini, data “1, 2, 3, 4, 5” akan dicetak setelah lima input.

Gambar 21. Uji Fungsional Kode Aplikasi “Module_UART” – Mengirim
Uji Fungsional Kode Aplikasi

Gambar 22. Uji Fungsional Kode Aplikasi “Module_UART” – Menerima
Uji Fungsional Kode Aplikasi

Petunjuk Transplantasi
Bagian ini akan memperkenalkan cara mengintegrasikan API ke dalam proyek pengguna.
Langkah 1. Tambahkan uart_module.c file ke dalam proyek. Klik kanan pada folder Pengguna. Pilih “Tambahkan Pengguna yang Ada” Files ke Grup 'Pengguna'…”, lalu pilih uart_module.c file dan klik “Add”, seperti yang ditunjukkan pada Gambar 23. Lihat bagian “Struktur Direktori” untuk file deskripsi jalur.

Gambar 23. Tambahkan uart_module.c File ke Proyek
File ke Proyek

Langkah 2Tambahkan ring_buffer.c file ke dalam proyek. Klik kanan pada folder Pengguna. Pilih “Tambahkan Pengguna yang Ada” Files ke Grup 'Pengguna'…”, lalu pilih ring_buffer.c file dan klik “Tambah”, seperti yang ditunjukkan pada Gambar 24.\ Lihat bagian “Struktur Direktori” untuk file deskripsi jalur.
Gambar 24. Tambahkan ring_buffer.c File ke Proyek 
File ke Proyek

Langkah 3. Sertakan header API file ke awal main.c, seperti yang ditunjukkan pada Gambar 25. (Ext: #include “middleware/uart_module.h”)
Gambar 25. Sertakan Header API File ke main.c
Sertakan Header API File

Langkah 4. Terapkan pengaturan yang diperlukan untuk komunikasi UART menggunakan ht32_board_config.h fileHal ini dijelaskan secara rinci di bagian “Deskripsi Pengaturan” dan “Modifikasi Pengaturan dan Tanya Jawab Umum”.

Pengaturan Modifikasi dan FAQ 

Bagian ini akan memperkenalkan cara mengubah pengaturan UART dan menjelaskan beberapa pertanyaan umum yang ditemui selama penggunaan.

Ubah Penetapan Pin UART 

  1. Dengan merujuk pada bab “Penetapan Pin” pada Lembar Data HT32F52352, lihat tabel Pemetaan Fungsi Alternatif yang mencantumkan fungsi AFIO dari jenis perangkat. Untuk pin yang relevan dengan UART, rujuk pada kolom “AF6 USART/UART”, seperti yang ditunjukkan pada Gambar 26.
    Gambar 26. Tabel Pemetaan Fungsi Alternatif HT32F52352
    Tabel Pemetaan Fungsi Alternatif
  2. Langkah ini akan memandu pengguna untuk menemukan pin UART yang sesuai menggunakan tabel di atas. HT32F52352 example menggunakan USART1 sebagai saluran default. Di sini, pin TX dan RX adalah USR1_TX dan USR1_RX dan masing-masing terletak pada PA4 dan PA5. Gambar 27 menunjukkan korespondensi pin serta definisi pin dalam “ht32_board_config.h”. Kolom kosong “Package” dalam tabel penugasan pin berarti tidak ada GPIO yang relevan dalam paket ini. Untuk mengubah pin UART, temukan lokasi pin target dan definisikan ulang pin menggunakan “ht32_board_config.h” file.
    Gambar 27. Korespondensi Pin dan Modifikasi Pengaturan
    Pengaturan Modifikasi

Tambahkan Saluran UART
Mengambil HT32F52352 HTCFG_UARTM_CH1 sebagai contohample, di sini dijelaskan cara menambahkan saluran UART baru.

Ubah ht32_board_config.h file
Dengan merujuk pada bab “Penetapan Pin” Lembar Data HT32F52352, cari tabel Pemetaan Fungsi Alternatif yang mencantumkan fungsi AFIO dari jenis perangkat. Karena USART1 telah digunakan sebagai HTCFG_UARTM_CH0, HTCFG_UARTM_CH1 yang baru ditambahkan dapat memilih USART0. Di sini, pin TX dan RX masing-masing terletak pada PA2 dan PA3, seperti yang ditunjukkan pada bagian atas Gambar 28. Modifikasi yang sesuai diimplementasikan menggunakan baris kode 120~126 di ht32_board_config.h, seperti yang ditunjukkan oleh kotak putus-putus merah pada Gambar 28.

Gambar 28. Menambahkan Saluran UART
Saluran UART

Tanya Jawab Umum
Q: Pada langkah ke-5 dari bagian Kompilasi dan Pengujian, pengujian fungsional pengiriman berjalan normal. Di sini, pesan “ABCThis is test!” telah berhasil ditampilkan, namun untuk fungsi penerimaan, mengapa lima nilai masukan tidak dikembalikan dan ditampilkan?
A: Periksa apakah pin MCU UART RX dan DAP_Tx dari UART Jumper-J2 telah dihubung singkat menggunakan jumper. Karena kode aplikasi “Module_UART” perlu menggunakan Virtual COM Port (VCP) dari e-Link32 Lite, pengaturan hubungan singkat harus diterapkan ke dua pin kiri UART Jumper-J2, seperti yang ditunjukkan pada Gambar 29.

Gambar 29. Pengaturan UART Jumper-J2
Pelompat UART

T:Setelah saat menjalankan “Build” (atau pintasan “F7”), muncul pesan kesalahan yang menunjukkan bahwa versi pustaka firmware lebih lama dari yang diperlukan? Lihat Gambar 30.
A: Implementasi kode aplikasi “Module_UART” perlu menyertakan uart_module.c/h files yang memiliki persyaratan untuk versi pustaka firmware tertentu. Jika pesan kesalahan tersebut muncul, berarti pustaka firmware yang digunakan saat ini adalah versi lama. Oleh karena itu, perlu mengunduh versi terbaru melalui tautan yang disediakan di bagian “Perpustakaan Firmware”.

Gambar 30. Pesan Kesalahan Versi Perpustakaan Firmware
Pesan Kesalahan Versi

Kesimpulan

Dokumen ini telah memberikan pengenalan dasar untuk membantu pengguna dengan pemahaman yang lebih baik tentang kode aplikasi “Module_UART” dan protokol komunikasi UART. Ini diikuti oleh pengunduhan dan persiapan sumber daya. Bab Deskripsi Fungsional memperkenalkan file struktur direktori, arsitektur API, deskripsi API dan penggunaan APIampBab Petunjuk Penggunaan menunjukkan persiapan lingkungan, kompilasi, dan pengujian kode aplikasi “Module_UART”. Bab ini juga menyediakan petunjuk untuk transplantasi kode dan pengaturan modifikasi serta menjelaskan beberapa masalah umum yang mungkin ditemui. Semua ini digabungkan akan memungkinkan pengguna untuk memahami dengan cepat cara menggunakan API dan selanjutnya mengurangi jumlah waktu untuk memulai.

Bahan Referensi

Untuk informasi lebih lanjut, lihat Holtek websitus: www.holtek.com

Versi dan Informasi Modifikasi

Tanggal Pengarang Melepaskan Informasi Modifikasi
2022.04.30 Chi-Yu Tsai (蔡期育) Bahasa Indonesia: V1.00 Versi pertama

Penafian

Semua informasi, merek dagang, logo, grafik, video, klip audio, tautan, dan item lainnya muncul di ini websitus ('Informasi') hanya untuk referensi dan dapat berubah sewaktu-waktu tanpa pemberitahuan sebelumnya dan atas kebijaksanaan Holtek Semiconductor Inc. dan perusahaan terkaitnya (selanjutnya disebut 'Holtek', 'perusahaan', 'kami', ' kami' atau 'kami'). Sementara Holtek berusaha untuk memastikan keakuratan Informasi tentang ini websitus, tidak ada jaminan tersurat maupun tersirat yang diberikan oleh Holtek atas keakuratan Informasi. Holtek tidak bertanggung jawab atas kesalahan atau kebocoran apa pun.
Holtek tidak bertanggung jawab atas segala kerusakan (termasuk namun tidak terbatas pada virus komputer, masalah sistem, atau kehilangan data) apa pun yang timbul dalam penggunaan atau sehubungan dengan penggunaan ini websitus oleh pihak manapun. Mungkin ada tautan di area ini, yang memungkinkan Anda mengunjungi websitus perusahaan lain.
Ini websitus tidak dikendalikan oleh Holtek. Holtek tidak bertanggung jawab dan tidak menjamin apapun Informasi yang ditampilkan di situs tersebut. Hyperlink ke yang lain websitus adalah risiko Anda sendiri.

Batasan Tanggung Jawab

Dalam keadaan apa pun Holtek Limited tidak bertanggung jawab kepada pihak lain mana pun atas kehilangan atau kerusakan apa pun atau apa pun yang disebabkan secara langsung atau tidak langsung sehubungan dengan akses Anda atau penggunaan ini. websitus, konten di dalamnya atau barang, materi, atau layanan apa pun.

Hukum yang Mengatur
Penafian yang terkandung dalam websitus akan diatur oleh dan ditafsirkan sesuai dengan hukum Republik Tiongkok. Pengguna akan tunduk pada yurisdiksi non-eksklusif pengadilan Republik Tiongkok.

Pembaruan Penafian
Holtek berhak memperbarui Penafian setiap saat dengan atau tanpa pemberitahuan sebelumnya, semua perubahan berlaku segera setelah diposting ke weblokasi.

Dokumen / Sumber Daya

Catatan Aplikasi HOLTEK HT32 MCU UART [Bahasa Indonesia:] Panduan Pengguna
Catatan Aplikasi HT32 MCU, UART, Catatan Aplikasi HT32 MCU UART, Catatan Aplikasi, HT32, Catatan Aplikasi MCU UART, Catatan Aplikasi HT32 MCU UART

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *