HOLTEK HT32 MCU UART Application Note User Manual
HOLTEK HT32 MCU UART Aplikasi Wigati

Pambuka

Universal Asynchronous Receiver / Transmitter - UART minangka antarmuka transmisi serial sing akeh digunakake sing nyedhiyakake transmisi data full-duplex bedo fleksibel. Kode aplikasi "Module_UART" kasedhiya ing cathetan aplikasi iki nggunakake TX / RX interrupts karo buffer ring software kanggo ngleksanakake UART prasaja ngirim / fungsi nampa liwat API, kang fungsi related diterangake ing ngisor iki. Iki bakal nyederhanakake kabeh proses transmisi data lan ngidini pangguna ngerti lan ngetrapake aplikasi komunikasi UART kanthi cepet.

  • Fungsi ngirim / nampa: byte diwaca, byte nulis, buffer diwaca, buffer nulis, etc.
  • Fungsi status: entuk dawa buffer, status TX, etc.

Dokumen iki pisanan bakal ngenalake protokol komunikasi UART, sing bakal mbantu pangguna supaya luwih ngerti komunikasi UART saka prinsip menyang aplikasi. Iki diterusake kanthi ngundhuh lan nyiapake sumber daya sing dibutuhake kanggo kode aplikasi, kalebu perpustakaan perangkat kukuh, download kode aplikasi, file lan konfigurasi direktori uga introduksi kanggo piranti lunak terminal sing digunakake ing cathetan aplikasi. Ing bab Katrangan Fungsional, struktur direktori kode aplikasi, setelan parameter lan deskripsi API bakal dienal. Panggunaan API bakal diterangake nggunakake kode aplikasi "Module_UART" lan konsumsi sumber daya Flash/RAM sing dibutuhake kanggo API uga bakal kadhaptar. Bab Pandhuan kanggo Gunakake bakal nuntun pangguna liwat langkah-langkah persiapan lingkungan, kompilasi lan tes kanggo konfirmasi manawa kode aplikasi bakal mlaku kanthi bener. Banjur bakal menehi instruksi sing nerangake carane nggabungake API menyang proyek pangguna lan pungkasane menehi referensi kanggo modifikasi lan masalah umum sing bisa ditemoni.

Singkatan sing digunakake: 

  • UART: Universal Asynchronous Receiver/Transmitter
  • API: Antarmuka Pemrograman Aplikasi
  • LSB: Bit Paling Penting
  • MSB: Bit paling Apik
  • PC: Komputer pribadi
  • SK: Starter Kit, papan pangembangan HT32
  • IDE: Lingkungan Pembangunan Terpadu

Protokol Komunikasi UART

UART minangka jinis antarmuka komunikasi serial sing ngleksanakake konversi data paralel menyang serial ing pemancar lan banjur komunikasi serial karo panrima sing padha. Panrima banjur nindakake konversi data serial-kanggo-paralel sawise nampa data. Figure 1 nuduhake diagram skematis komunikasi serial nuduhake carane data ditransfer ing urutan bitwise. Mulane kanggo komunikasi bidirectional antarane pemancar lan panrima, mung loro kabel, TX lan RX, dibutuhake kanggo nransfer data serially antarane saben liyane. TX minangka pin ing ngendi UART ngirim data serial lan disambungake menyang pin RX panrima. Mulane piranti pemancar lan panrima kudu nyambungake pin TX lan RX kanggo nindakake komunikasi rong arah UART, kaya sing dituduhake ing Gambar 2.

Gambar 1. Diagram Komunikasi Serial
Diagram Komunikasi Serial

Gambar 2. Diagram Sirkuit UART
Diagram Sirkuit UART

Sajrone komunikasi serial UART, transmisi data ora sinkron. Iki tegese ora ana jam utawa sinyal sinkronisasi liyane antarane pemancar lan panrima. Ing kene baud rate digunakake, yaiku data serial ngirim / nampa kacepetan lan disetel dening loro-lorone sadurunge transfer data. Kajaba iku, bit khusus kayata bit wiwitan lan mandeg ditambahake ing wiwitan lan pungkasan paket data kanggo mbentuk paket data UART lengkap. Gambar 3 nuduhake struktur paket data UART nalika Gambar 4 nuduhake 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
Saben bagéyan saka paket data UART dikenalaké ing urutan ngisor.

  • Bit wiwitan: Iki nuduhake wiwitan paket data. Pin UART TX biasane tetep ing tingkat logika dhuwur sadurunge transmisi diwiwiti. Yen transmisi data diwiwiti, pemancar UART bakal narik pin TX saka dhuwur nganti kurang, yaiku, saka 1 nganti 0, banjur terus ana ing siji siklus jam. Panrima UART bakal miwiti maca data nalika transisi dhuwur menyang kurang wis dideteksi ing pin RX.
  • data: Iki minangka data nyata sing ditransfer, kanthi dawa data 7, 8 utawa 9 bit. Data biasane ditransfer karo LSB dhisik.
  • Paritas Bit: Nomer logika "1" ing data digunakake kanggo nemtokake manawa ana data sing wis diganti sajrone transmisi. Kanggo kesetaraan genap, jumlah total logika "1" ing data kudu dadi angka genap, kosok balene, jumlah total logika "1" ing data kudu dadi nomer ganjil kanggo paritas ganjil.
  • Stop Bit: Iki nuduhake mburi paket data, endi pemancar UART bakal narik pin TX saka kurang kanggo dhuwur, IE, saka 0 kanggo 1, lan banjur terus ana kanggo wektu 1 utawa 2-dicokot.

Kaya kasebut sadurunge, amarga ora ana sinyal jam ing sirkuit UART, data serial padha ngirim / nampa kacepetan, kang dikenal minangka baud rate, kudu ditetepake antarane pemancar lan panrima kanggo ngleksanakake transmisi kesalahan-free. Baud rate ditemtokake dening jumlah bit sing ditransfer per detik, ing bps (bit per detik). Sawetara tingkat baud standar lan umum digunakake yaiku 4800bps, 9600bps, 19200bps, 115200bps, lsp. Wektu sing cocog sing dibutuhake kanggo nransfer bit data siji ditampilake ing ngisor iki.
Tabel 1. Baud Rate vs Wektu Transmisi 1-Bit 

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

Ngundhuh lan Persiapan Sumber

Bab iki bakal introduce kode aplikasi lan piranti lunak digunakake, uga carane ngatur direktori lan file dalan.

Pustaka Firmware 

Pisanan, priksa manawa perpustakaan perangkat kukuh Holtek HT32 wis diundhuh sadurunge nggunakake kode aplikasi. Link download kapacak ing ngisor iki. Kene ana rong pilihan, HT32_M0p_Vyyyymmdd.zip kanggo seri HT32F5xxxx lan HT32_M3_Vyyyymmdd.zip kanggo seri HT32F1xxxx. Ngundhuh lan unzip sing dikarepake file.

zip kasebut file ngemot sawetara folder sing bisa diklasifikasikaké minangka Document, Firmware Library, Tools lan item liyane, path panggonan seko kang ditampilake ing Figure 5. Zip perpustakaan firmware HT32 file karo a file jeneng HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip dumunung ing folder Firmware_Library.

Gambar 5. Isi HT32_M0p_Vyyyymmdd.zip
Isine

Kode Aplikasi
Download kode aplikasi saka link ing ngisor iki. Kode aplikasi dikemas menyang zip file karo a file jeneng HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Delengen Gambar 6 kanggo file konvènsi jeneng.

Gambar 6. Kode Aplikasi File Jeneng Pambuka 

Link download: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kode Aplikasi

File lan Konfigurasi Direktori
Minangka kode aplikasi ora ngemot perpustakaan perangkat kukuh HT32 files, kode aplikasi lan perpustakaan perangkat kukuh unzipped files kudu diselehake ing dalan sing bener sadurunge miwiti kompilasi. Kode aplikasi zip file biasane ngemot siji utawa luwih folder, kayata aplikasi lan perpustakaan, kaya sing ditampilake ing Gambar 7. Selehake folder aplikasi ing direktori root perpustakaan perangkat kukuh HT32 kanggo ngrampungake file konfigurasi path, minangka ditampilake ing Figure 8. Utawa, unzip kode aplikasi lan perpustakaan perangkat kukuh HT32 bebarengan menyang dalan padha kanggo entuk asil konfigurasi padha.

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

Gambar 8. Path Decompression
Path Dekompresi

Piranti Lunak Terminal
Kode aplikasi bisa ngirim pesen liwat port COM kanggo ngleksanakake pilihan fungsi utawa tampilan status. Iki mbutuhake sisih host supaya piranti lunak terminal diinstal luwih dhisik. Pangguna bisa milih piranti lunak sambungan sing cocog, utawa nggunakake piranti lunak sing dilisensi gratis kayata Tera Term. Ing kode aplikasi, saluran UART dikonfigurasi kanthi dawa tembung 8-bit, ora ana paritas, 1 mandeg lan baud rate 115200bps.

Deskripsi Fungsional

Bab iki bakal menehi katrangan fungsional kanggo kode aplikasi, kalebu informasi babagan struktur direktori, arsitektur API, deskripsi setelan, lsp

Struktur Direktori
Kode aplikasi file ngemot folder aplikasi. Lapisan sabanjure yaiku folder "Module_UART" sing ngemot rong program aplikasi, "UART_Module_Ex.ample" lan "UART_Bridge". Sing relevan files kadhaptar lan diterangake ing ngisor iki.
Tabel 2. Struktur Direktori Kode Aplikasi

Folder / File jeneng Katrangan
\\aplikasi\Module_UART\UART_Module_Example*1
_CreateProject.bat Skrip kumpulan kanggo nggawe proyek files
_ProjectSource.ini Inisialisasi file kanggo nambah kode sumber kanggo proyek
ht32_board_config.h Setup file related kanggo IC peripheral I / O assignment
ht32fxxxxx_01_it.c Program layanan interrupt file
utama.c Kode sumber program utama
\\aplikasi\Module_UART\UART_Bridge*2
_CreateProject.bat Skrip kumpulan kanggo nggawe proyek files
_ProjectSource.ini Inisialisasi file kanggo nambah kode sumber kanggo proyek
ht32_board_config.h Setup file related kanggo IC peripheral I / O assignment
ht32fxxxxx_01_it.c Program layanan interrupt file
utama.c Kode sumber program utama
uart_bridge.h uart_bridge.c UART bridge header file lan kode sumber file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API header file lan kode sumber file
\\utilities\umum
ringbuffer.h ring_buffer.c Header ring buffer piranti lunak file lan kode sumber file

Cathetan: 

  1. Ing "UART_Module_Example" kode aplikasi, operasi maca lan nulis API ditindakake kanthi cara loopback, deleng "API Usage Examples" bagean kanggo rincian liyane.
  2.  Ing kode aplikasi "UART_Bridge", rong saluran UART, UART CH0 lan UART CH1, diaktifake, lan protokol komunikasi khusus liwat struktur COMMAND dileksanakake ing antarane rong piranti UART. Kanggo informasi luwih lengkap, waca "API Usage Examples" bagean.
  3. Kode aplikasi kudu nggunakake uart_module.c/h files kang duwe syarat versi perpustakaan perangkat kukuh. Keperluan bisa diganti wektu kanggo wektu miturut nganyari. Kanggo konfirmasi syarat versi perpustakaan perangkat kukuh saiki, deleng isi mriksa dependensi kanthi nggoleki tembung kunci "Priksa dependensi" ing main.c file. Yen versi perpustakaan perangkat kukuh ora nyukupi syarat, download versi paling anyar saka link sing kasedhiya ing bagean "Perpustakaan Firmware".

Arsitektur API
Saben API nduweni parameter CH sing penting, yaiku Saluran UART. Iki nemtokake saluran UART sing kudu dikontrol. Saiki nganti papat saluran UART didhukung lan mulane papat simbol konstan ditetepake kaya ing ngisor iki. Iki digunakake minangka parameter CH nyedhiyakake API basis kanggo kontrol.

  • UARTM_CH0: parameter input - ngontrol utawa ngatur UART CH0
  • UARTM_CH1: parameter input - ngontrol utawa ngatur UART CH1
  • UARTM_CH2: parameter input - ngontrol utawa ngatur UART CH2
  • UARTM_CH3: parameter input - ngontrol utawa ngatur UART CH3

Ruang memori ora bakal boroske yen mung siji saluran UART digunakake. Iki amarga jumlah saluran UART sing didhukung bisa disetel lan kode saluran UART sing ora digunakake bakal dibusak dening preprocessor kanggo nambah ruang memori sing kasedhiya. Arsitektur API ditampilake ing Gambar 9.

Gambar 9. Diagram Blok Arsitektur API
Diagram Blok Arsitektur

Saben API dumadi saka patang klompok setelan utawa kontrol sing gegandhengan karo saluran UART supaya pangguna mung kudu ngetik parameter CH sing dikarepake. Kanggo ngatur API cocog, iku mung kudu duwe tambahan tabel parameter konfigurasi dhasar UART karo wangun struktur, USART_InitTypeDef. API bakal ngleksanakake konfigurasi dhasar UART miturut isi parameter ing tabel. Deleng bagean "API Description" kanggo tabel struktur konfigurasi dhasar UART.

Ing uart_module.c/.h files mung ngemot interrupt (CHx_IRQ) ​​lan tabel status (CHx Status) saben saluran UART nalika kabeh setelan sing dibutuhake kanggo komunikasi UART diwenehake dening ht32_board_config.h. Paramèter cocog hardware ing ht32_board_config.h file kapacak ing tabel ing ngisor iki. Rincian liyane kasedhiya ing bagean "Setelan Description".

Paramèter cocog hardware ing ht32_board_config.h kalebu setelan I / O lan setelan port UART fisik, minangka nderek.

Tabel 3. Definisi Simbol ing ht32_board_config.h

Simbol Katrangan
HTCFG_UARTM_CH0 Jeneng port UART fisik; Example: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Nemtokake jeneng port TX kanggo CH0; Example: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Nemtokake nomer pin TX kanggo CH0; Exampiki: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Nemtokake jeneng port RX kanggo CH0; Example: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Nemtokake nomer pin TX kanggo CH0; Exampiki: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Nemtokake ukuran buffer TX kanggo CH0; Examplwih: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Nemtokake ukuran buffer RX kanggo CH0; Examplwih: 128

Kanggo ngowahi konfigurasi AFIO saluran UART, waca lembar data piranti sing cocog. Saiki mung definisi I / O kanggo UART CH0 sing ditrapake amarga mung UART CH0 sing wis dikonfigurasi ing ht32_board_config.h. Kanggo nambah UART CH1~3, definisi I/O kudu dirampungake kanthi ngrujuk marang definisi UART CH0 utawa ngrujuk menyang bagean "Setelan Modifikasi lan FAQ".

Ana telung fitur utama arsitektur API: 

  1. Nganti papat saluran UART didhukung. Parameter input kasebut yaiku UARTM_CH0, UARTM_CH1, UARTM_CH2 lan UARTM_CH3.
  2.  Jumlah saluran UART bisa disetel lan saluran sing ora digunakake ora bakal nyuda ruang memori sing kasedhiya.
  3. Kabeh setelan UART lan definisi I / O rampung dipisahake saka API. Iki nambah penak manajemen nyetel nilai lan nyuda kemungkinan setelan sing salah utawa ilang.

Deskripsi Setelan 

Bagean iki bakal introduce setelan parameter ing ht32_board_config.h lan uart_module.h files.

  1. ht32_board_config.h: Iki file digunakake kanggo definisi pin lan setelan Papan pembangunan cocog, kang kalebu saluran UART IP (UART0, UART1, USART0…) digunakake dening Starter Kit (SK), cocog TX / RX lokasi pin lan TX / RX ukuran buffer. Gambar 10 nuduhake isi setelan saka HT32F52352 Starter Kit. Gumantung ing integrasi fungsional pangembangan, pangguna bisa ngrujuk menyang bagean "Pin Assignment" saka lembar data piranti sing digunakake kanggo ngetrapake definisi pin. Rincian liyane babagan modifikasi setelan bakal diterangake ing bagean "Setelan modifikasi lan FAQ".
    Gambar 10. ht32_board_config.h Setelan (HT32F52352)
    Setelan
  2. uart_module.h: Iki minangka header API file digunakake dening kode aplikasi, kang kalebu setelan gawan cocog, definisi fungsi, etc.. Minangka ditampilake ing Figure 11, isi setelan gawan bisa ditindhes dening konfigurasi external, kayata setelan ing ht32_board_config.h. file.
    Figure 11. Setelan Default ing uart_module.h
    Setelan Default
Katrangan API
  1. Katrangan jinis data kode aplikasi.
    • USART_InitTypeDef
      Iki minangka struktur konfigurasi dhasar UART sing kasusun saka konfigurasi BaudRate, WordLength, StopBits, Parity lan Mode, kaya ing ngisor iki.
      Variabel jeneng Jinis Katrangan
      USART_BaudRate u32 baud rate komunikasi UART
      USART_WordLength u16 Dawane tembung komunikasi UART: 7, 8 utawa 9 bit
      USART_StopBits u16 Komunikasi UART dawa mandeg bit: 1 utawa 2 bit
      USART_Parity u16 Paritas komunikasi UART: genap, ganjil, tandha, spasi utawa ora ana paritas
      USART_Mode u16 mode komunikasi UART; API mung ndhukung mode normal
  2. Sadurunge nggunakake fungsi API, ngrampungake konfigurasi dhasar UART ing program utama. Konfigurasi dhasar UART kanggo kode aplikasi iki ditampilake ing Figure 12. Kene baud rate 115200bps, tembung dawa 8-dicokot, mandeg dicokot dawa 1-dicokot, lan ora ana paritas.
    Gambar 12. Konfigurasi Dasar UART
    Konfigurasi dhasar
  3. Figure 13 nuduhake fungsi API ngumumaké ing uart_module.h file. Tabel ing ngisor iki nerangake fungsi, paramèter input lan panggunaan fungsi API.
    Gambar 13. Pranyatan Fungsi API ing uart_module.h 
    Deklarasi Fungsi API
jeneng void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Fungsi Inisialisasi modul UART
  Input CH saluran UART
pUART_Init penunjuk struktur konfigurasi dhasar UART
 uRxTimeOutValue Nilai wektu entek UART RX FIFO. Nalika RX FIFO nampa data anyar counter bakal ngreset lan miwiti maneh. Sawise counter tekan nilai wektu entek prasetel lan interupsi wektu entek sing cocog wis diaktifake, interupsi wektu entek bakal digawe.
 Panganggone UARTM_Init(UARTM_CH0, & USART_InitStructure, 40); // Jalanake konfigurasi dhasar UART // Deleng Gambar 12 kanggo konfigurasi USART_InitStructure
jeneng u32 UARTM_WriteByte(u32 CH, u8 uData)
Fungsi Operasi byte nulis modul UART (TX)
Input CH saluran UART
uData Data sing arep ditulis
Output SUKSES kasil
ERROR Gagal
Panganggone UARTM_WriteByte(UARTM_CH0, 'A'); //UART nulis 1 byte - 'A'
jeneng u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Fungsi Operasi nulis modul UART (TX)
 Input CH saluran UART
pBuffer Penunjuk buffer
uLength Dawane data sing bakal ditulis
Output SUKSES kasil
ERROR Gagal
 Panganggone u8 Test[] = "Iki tes!\r\n"; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); // UART nulis data pBuffer
jeneng u32 UARTM_ReadByte(u32 CH, u8 *pData)
Fungsi UART modul read byte operation (RX)
Input CH saluran UART
pData Alamat kanggo nyelehake data sing diwaca
Output SUKSES kasil
ERROR Gagal (ora ana data)
   Panganggone u8 TempData; yen (UARTM_ReadByte (UARTM_CH0, & TempData) == SUKSES) {UARTM_WriteByte (UARTM_CH0, TempData);}//Yen UARTM_ReadByte () ngasilake SUCCESS banjur UART nulis byte data iki
jeneng u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Fungsi Operasi maca modul UART (RX)
 Input CH saluran UART
pBuffer Penunjuk buffer
uLength Dawane data sing bakal diwaca
Output maca count Dawane data wis diwaca
     Panganggone u8 Tes2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);yen (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() maca 5 byte data lan nyimpen data menyang Test2, lan nemtokake count byte diwaca kanggo Len // Nulis data saka Test2
jeneng u32 UARTM_GetReadBufferLength(u32 CH)
Fungsi Entuk dawa buffer diwaca (RX)
Input CH saluran UART
Output uLength Maca dawa buffer
  Panganggone UARTM_Init (UARTM_CH0, & USART_InitStructure, 40); //Inisialisasi modul UART nalika (UARTM_GetReadBufferLength(UARTM_CH0) < 5); // Enteni nganti UARTM_ReadBuffer wis nampa 5 bita data
jeneng u32 UARTM_GetWriteBufferLength(u32 CH)
Fungsi Entuk dawa buffer nulis (TX)
Input CH saluran UART
Output uLength Tulis dawa buffer
jeneng u8 UARTM_IsTxFinished(u32 CH)
Fungsi Entuk status TX
Input CH saluran UART
Output BENER status TX: rampung
PALSU status TX: ora rampung
      Panganggone UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif // API iki bisa digunakake kanggo mriksa status TX, minangka kapacak ing ndhuwur; ngenteni nganti UARTM_WriteByte () API wis rampung, IE, status TX TRUE, lan banjur nerusake tumindak sakteruse.// Watesan ditambahake amarga fungsi iki durung ditambahake nganti nomer versi SVN ing uart_module.c punika 525.
jeneng kekosongan UARTM_DiscardReadBuffer(u32 CH)
Fungsi Buang data ing buffer diwaca
Input CH saluran UART

Panggunaan API Examples 

Bagian iki bakal nduduhake API nulis lan maca exampkode aplikasi "Module_UART" nggunakake proses inisialisasi lan "UART_Module_Example" proses kode aplikasi. Sadurunge nggunakake API, pangguna kudu nyakup header API file menyang kode sumber program utama file (#include “middleware/uart_module.h”).

Minangka ditampilake ing Figure 14, nalika ngetik proses initialization, pisanan nemtokake struktur konfigurasi dhasar UART. Banjur konfigurasi anggota struktur konfigurasi dhasar UART kalebu BaudRate, WordLength, StopBits, Parity lan Mode. Pungkasan, nelpon fungsi initialization API, completion saka kang nuduhake mburi proses initialization. Sawise iki pangguna bisa nerusake operasi nulis lan maca adhedhasar konfigurasi dhasar UART sing wis disetel.

Gambar 14. Bagan Alur Inisialisasi
Bagan Alur Inisialisasi

"UART_Module_Example" kode aplikasi nduduhake API maca lan nulis operasi ing proses loopback. Flowchart kanggo iki ditampilake ing Figure 15. Fungsi API digunakake kalebu UARTM_WriteByte (), UARTM_Write (), UARTM_ReadByte (), UARTM_Read () lan UARTM_GetReadBufferLength (). Katrangan kasebut diwenehake ing bagean "Deskripsi API".

Gambar 15. Bagan Alur Nulis lan Wacan Examples
Bagan Alur Nulis lan Waca Examples

Ana kode aplikasi "UART_Bridge" liyane ing folder "Module_UART" sing ana gandhengane file deskripsi dikenalake ing bagean "Struktur Direktori". Kode aplikasi "UART_Bridge" ngaktifake rong saluran UART, UART CH0 lan UART CH1, banjur ngatur protokol komunikasi antarane rong piranti UART liwat struktur COMMAND, gCMD1 lan gCMD2. Iki ditetepake ing uart_bridge.c, minangka kapacak ing ngisor iki. UARTBridge_CMD1TypeDef gCMD1:

Variabel jeneng Jinis Katrangan
uHeader u8 Header
uCmd u8 dhawuh
uData[3] u8 data

UARTBridge_CMD2TypeDef gCMD2:

Variabel jeneng Jinis Katrangan
uHeader u8 Header
uCmdA u8 Komando A
uCmdB u8 Dhawuh B
uData[3] u8 data

Ing kode aplikasi "UART_Bridge", gunakake gCMD1 kanggo nampa data minangka paket printah banjur analisa. Banjur miturut protokol komunikasi sing disesuaikan, atur gCMD2 minangka paket respon lan ngirimake. Ing ngisor iki minangka mantanample saka paket printah gCMD1) lan paket respon (gCMD2). Paket Perintah (UARTBridge_CMD1TypeDef gCMD1):

Byte 0 Byte 1 Byte 2 ~ Byte 4
uHeader uCmd uData [3]
“A” “1” "x,y,z"

Paket Respons (UARTBridge_CMD2TypeDef gCMD2):

Byte 0 Byte 1 Byte 2 Byte 3 ~ Byte 5
uHeader uCmdA uCmdB uData [3]
“B” “a” “1” "x,y,z"

Pekerjaan Sumber Daya
Njupuk HT32F52352 minangka mantanample, sumber daya dikuwasani dening modul UART kapacak ing ngisor iki.

HT32F52352
Ukuran ROM 946 bita
Ukuran RAM 40*1 + 256*2 Byte

Cathetan:

  1. Variabel global kalebu gendera lan status kanggo saluran siji manggoni 40 bait RAM.
  2.  Iki kanggo kondisi ngendi saluran siji digunakake lan TX / RX ukuran buffer 128/128 bait. Ukuran buffer bisa disetel miturut syarat aplikasi.

Tabel 4. Kode Aplikasi Sumber Daya Pekerjaan 

  • Lingkungan kompilasi: MDK-Arm V5.36, ARMCC V5.06 nganyari 7 (mbangun 960)
  • Pilihan Optimize: Level 2 (-O2)

Pandhuan kanggo Gunakake

Bab iki bakal ngenalake persiapan lingkungan kanggo kode aplikasi "Module_UART", uga langkah-langkah kompilasi lan tes.

Persiapan Lingkungan
Hardware lan piranti lunak sing dibutuhake kanggo kode aplikasi "Module_UART" kapacak ing ngisor iki.
Tabel 5. Hardware/Software Persiapan Lingkungan 

Hardware/Software Count Cathetan
Kit wiwitan 1 Cathetan aplikasi iki nggunakake Kit Starter HT32F52352 minangka mantanample
Kabel USB 1 Micro USB, disambungake menyang PC
Kode Aplikasi Jalur download, file lan konfigurasi direktori dikenalaké ing bagean "Resource Download lan Preparation". Path: "\\application\Module_UART\UART_Module_Example”
Tera Term Deleng bagean "Perangkat Lunak Terminal".
Keil IDE Keil uVision V5.xx

Pisanan, gunakake HT32F52352 Starter Kit sing digabungake karo fungsi Virtual COM Port (VCP) saka e-Link32 Lite kanggo introduksi aplikasi UART. Iki mbutuhake persiapan lingkungan ing ngisor iki supaya bisa ditindakake:

  1. Ana rong antarmuka USB ing Papan. Gunakake kabel USB kanggo nyambungake PC lan antarmuka eLink32 Lite ing Papan minangka ditampilake ing Figure 16- (a).
  2. Minangka kode aplikasi kudu nggunakake fungsi e-Link32 Lite Virtual COM Port (VCP), mesthekake yen PAx * 2 lan DAP_Tx saka UART Jumper-J2 * 1 wis shorted nggunakake jumper. Lokasi J2 dituduhake dening Gambar 16-(b).

Cathetan

  1. J2 ing Starter Kit wis rong pilihan, PAx lan DAP_Tx shorted utawa PAx lan RS232_Tx shorted. Deleng manual pangguna Starter Kit kanggo fungsi setelan sing rinci.
  2. Lokasi pin MCU UART RX ing Kit Starter beda beda. Mantan ikiample nggunakake PAx kanggo nunjukaké pin RX.

Gambar 16. Diagram Blok Starter Kit HT32
Kit Blok Diagram

Saiki gunakake papan target pangguna sing digabungake karo fungsi Virtual COM Port (VCP) saka e-Link32 Pro kanggo introduksi aplikasi UART. Iki mbutuhake persiapan lingkungan ing ngisor iki supaya bisa ditindakake:

  1. Siji sisih e-Link32 Pro disambungake menyang PC nggunakake kabel Mini USB lan sisih liyane disambungake menyang papan target pangguna liwat kabel abu-abu 10-dicokot. Sambungan antarane antarmuka SWD kabel lan Papan target dipun ginakaken nggunakake garis Dupont, minangka ditampilake ing Figure 17- (a).
  2. Pin komunikasi serial saka e-Link32 Pro yaiku Pin#7 VCOM_RXD lan Pin#8- VCOM_TXD. Iki kudu disambungake menyang pin TX lan RX saka Papan target pangguna, minangka ditampilake ing Figure 17- (b).
    Gambar 17. Diagram Blok e-Link32 Pro + Papan Target pangguna
    Papan Target pangguna

Kompilasi lan Test
Bagian iki bakal njupuk "aplikasi\Module_UART\UART_Module_Example" minangka mantanample kanggo introduce pangolahan kompilasi lan test. Sadurunge iki, priksa manawa kabeh persiapan sing diterangake ing bagean sadurunge wis ditindakake lan piranti lunak terminal Tera Term wis didownload.

Langkah-langkah operasi rinci diringkes ing ngisor iki.
Langkah 1. Power-on test

Setel lingkungan hardware kaya sing diterangake ing bagean sadurunge. Sawise power-on, LED daya D9 ing sisih kiwa ngisor Starter Kit bakal murup. LED USB D1 ing e-Link32 Lite ing sisih tengen ndhuwur bakal dipadhangi sawise enumerasi USB wis rampung. Yen D1 ora murup sawise wektu sing suwe, konfirmasi manawa kabel USB bisa komunikasi. Yen ora, copot lan lebokake maneh.

Langkah 2. Nggawe proyek
Buka aplikasi\Module_UART\UART_Module_Example folder, klik ing _CreateProject.bat file kanggo generate project, minangka ditampilake ing Figure 18. Wiwit cathetan aplikasi iki nggunakake HT32F52352 Starter Kit, mbukak proyek Keil IDE "Project_52352.uvprojx" dumunung ing folder MDK_ARMv5.

Figure 18. Execute _CreateProject.bat kanggo Generate Project
Nggawe Proyek

Langkah 3. Compile lan program
Sawise proyek dibukak, klik dhisik "Mbangun" (utawa gunakake trabasan "F7"), banjur klik "Download" (utawa gunakake trabasan "F8"). Sawise iki, asil mbangun lan download bakal ditampilake ing jendhela Build Output. Waca Gambar 19.

Gambar 19. Mbangun lan Ngundhuh Asil
Mbangun lan Ngundhuh Asil

Langkah 4. Bukak piranti lunak Tera Term lan konfigurasi port serial
Bukak piranti lunak Tera Term lan port COM. Pay manungsa waé kanggo apa nomer port COM kui dening Starter Kit bener utawa ora. Banjur klik "Setup >> Port Serial" kanggo ngetik antarmuka konfigurasi. Konfigurasi antarmuka UART saka kode aplikasi "Module_UART" diterangake ing bagean "Perangkat Lunak Terminal". Asil persiyapan ditampilake ing Gambar 20.

Gambar 20. Tera Term Serial Port Setup Hasil
Hasil Setup
Langkah 5. Reset sistem lan test
Pencet tombol reset SK - Reset B1. Sawise iki, "ABCThis is test!" pesen bakal
ditularaké liwat API lan bakal ditampilake ing jendhela Tera Term, minangka ditampilake ing Figure 21. Babagan fungsi nampa, nalika ngetik data menyang jendhela Tera Term, API cocog bakal digunakake kanggo nemtokake dawa buffer nampa. Nalika data sing ditampa dening PC tekan 5 bita, 5 bita data sing ditampa bakal dikirim kanthi urutan. Minangka ditampilake ing Figure 22, data sequentially ngetik "1, 2, 3, 4, 5", kang ditampa lan ditemtokake liwat API. Sawise iki, data "1, 2, 3, 4, 5" bakal dicithak sawise limang input.

Gambar 21. Tes Fungsional Kode Aplikasi "Module_UART" - Kirim
Kode Aplikasi Tes Fungsional

Gambar 22. "Module_UART" Kode Aplikasi Test Fungsional - Nampa
Kode Aplikasi Tes Fungsional

Instruksi Transplantasi
Bagean iki bakal ngenalake carane nggabungake API menyang proyek pangguna.
Langkah 1. Tambah uart_module.c file menyang proyek. Klik-tengen ing folder Panganggo. Pilih “Add Existing Files menyang Grup 'Panganggo'…”, banjur pilih uart_module.c file lan klik ing "Tambah", minangka ditampilake ing Figure 23. Waca bagean "Struktur Direktori" kanggo file katrangan path.

Gambar 23. Tambah uart_module.c File kanggo Project
File kanggo Project

Langkah 2. Tambah ring_buffer.c file menyang proyek. Klik-tengen ing folder Panganggo. Pilih “Add Existing Files menyang Grup 'Panganggo'…”, banjur pilih ring_buffer.c file lan klik "Tambah", minangka ditampilake ing Figure 24.\ Waca bagean "Struktur Direktori" kanggo file katrangan path.
Gambar 24. Tambah ring_buffer.c File kanggo Project 
File kanggo Project

Langkah 3. Kalebu header API file menyang awal main.c, minangka ditampilake ing Figure 25. (Ext: #include “middleware/uart_module.h”)
Gambar 25. Kalebu Header API File kanggo utama.c
Kalebu Header API File

Langkah 4. Ngleksanakake setelan sing dibutuhake kanggo komunikasi UART nggunakake ht32_board_config.h file. Iki dikenalake kanthi rinci ing bagean "Setelan Deskripsi" lan "Setelan Modifikasi lan FAQ".

Setelan Modifikasi lan FAQs 

Bagean iki bakal ngenalake carane ngowahi setelan UART lan nerangake sawetara pitakonan umum sing ditemoni nalika digunakake.

Ngganti UART Pin Assignment 

  1. Rujuk bab "Pin Assignment" Lembar Data HT32F52352, goleki tabel Pemetaan Fungsi Alternatif sing nampilake fungsi AFIO saka jinis piranti. Kanggo pin sing cocog karo UART, deleng kolom "AF6 USART/UART", kaya sing ditampilake ing Gambar 26.
    Gambar 26. Tabel Pemetaan Fungsi Alternatif HT32F52352
    Tabel Pemetaan Fungsi Alternate
  2. Langkah iki bakal nuntun pangguna kanggo nemokake pin UART sing cocog nggunakake tabel ing ndhuwur. HT32F52352 example nggunakake USART1 minangka saluran standar. Ing kene, pin TX lan RX yaiku USR1_TX lan USR1_RX lan dumunung ing PA4 lan PA5. Figure 27 nuduhake korespondensi pin uga definisi pin ing "ht32_board_config.h". Kothak kosong "Paket" ing meja tugas pin tegese ora ana GPIO sing cocog ing paket iki. Kanggo ngowahi pin UART, golek lokasi pin target lan nemtokake maneh pin nggunakake "ht32_board_config.h" file.
    Gambar 27. Korespondensi Pin lan Modifikasi Setelan
    Setelan Modifikasi

Tambah Saluran UART
Njupuk HT32F52352 HTCFG_UARTM_CH1 minangka mantanample, kene diterangake carane nambah saluran UART anyar.

Ngowahi ht32_board_config.h file
Rujuk bab "Pin Assignment" Lembar Data HT32F52352, goleki tabel Pemetaan Fungsi Alternatif sing nampilake fungsi AFIO saka jinis piranti. Amarga USART1 wis digunakake minangka HTCFG_UARTM_CH0, sing mentas ditambahake HTCFG_UARTM_CH1 bisa milih USART0. Kene, TX lan RX pins dumunung ing PA2 lan PA3 mungguh, minangka ditampilake ing setengah ndhuwur Figure 28. Modifikasi sing cocog dileksanakake nggunakake baris kode 120 ~ 126 ing ht32_board_config.h, minangka ditampilake ing kothak abang burik ing Figure 28.

Gambar 28. Tambah Saluran UART
Saluran UART

Pitakonan
Q: Ing langkah 5 saka bagean Kompilasi lan Tes, tes fungsi ngirim normal. Ing kene, "ABCThis is test!" pesen wis ditampilake kasil, Nanging kanggo fungsi nampa, kok limang nilai input ora bali lan ditampilake?
A: Priksa manawa pin MCU UART RX lan DAP_Tx saka UART Jumper-J2 wis disingkat nggunakake jumper. Amarga kode aplikasi "Module_UART" kudu nggunakake Virtual COM Port (VCP) saka e-Link32 Lite, setelan short-circuit kudu diterapake ing loro pin kiwa UART Jumper-J2, kaya sing ditampilake ing Gambar 29.

Gambar 29. Setelan UART Jumper-J2
UART Jumper

P: Sawise nglakokake "Mbangun" (utawa trabasan "F7"), pesen kesalahan katon nuduhake yen versi perpustakaan perangkat kukuh luwih lawas tinimbang sing dibutuhake? Waca Gambar 30.
A: Implementasine "Module_UART" kode aplikasi kudu kalebu uart_module.c/h files kang nduweni syarat kanggo versi perpustakaan perangkat kukuh tartamtu. Nalika pesen kesalahan kasebut katon, tegese perpustakaan perangkat kukuh sing saiki digunakake minangka versi lawas. Mulane perlu kanggo ndownload versi paling anyar liwat link sing kasedhiya ing bagean "Firmware Library".

Gambar 30. Firmware Library Version Error Message
Pesen kesalahan versi

Kesimpulan

Dokumen iki wis nyedhiyakake introduksi dhasar kanggo mbantu pangguna kanthi luwih ngerti babagan kode aplikasi "Module_UART" lan protokol komunikasi UART. Iki diterusake kanthi ngundhuh sumber daya lan persiapan. Bab Deskripsi Fungsional ngenalaken file struktur direktori, arsitektur API, deskripsi API lan panggunaan API examples. Bab Pandhuan kanggo Gunakake nuduhake persiapan lingkungan, kompilasi lan tes kode aplikasi "Module_UART". Uga nyedhiyakake instruksi kanggo transplan kode lan setelan modifikasi uga nerangake sawetara masalah umum sing bisa ditemoni. Gabungan kabeh iki bakal ngidini pangguna cepet ngerti carane nggunakake API lan banjur nyuda wektu kanggo miwiti.

Materi Referensi

Kanggo informasi luwih lengkap, waca ing Holtek websitus web: www.holtek.com

Versi lan Informasi Modifikasi

Tanggal Pengarang Ngeculake Informasi Modifikasi
2022.04.30 蔡期育(Chi-Yu Tsai) V1.00 Versi Pertama

Penafian

Kabeh informasi, merek dagang, logo, grafis, video, klip audio, pranala lan item liyane katon ing iki websitus ('Informasi') mung kanggo referensi lan bisa diganti sawayah-wayah tanpa kabar sadurunge lan ing discretion saka Holtek Semiconductor Inc. lan perusahaan sing gegandhengan (sabanjuré 'Holtek', 'perusahaan', 'kita', ' kita' utawa 'kita'). Nalika Holtek ngupayakake akurasi Informasi babagan iki websitus, ora babar pisan Express utawa diwenehake dening Holtek kanggo akurasi Informasi. Holtek ora tanggung jawab kanggo kesalahan utawa bocor.
Holtek ora bakal tanggung jawab kanggo karusakan apa wae (kalebu nanging ora winates ing virus komputer, masalah sistem utawa mundhut data) apa wae sing kedadeyan nalika nggunakake utawa gegayutan karo panggunaan iki. websitus dening pihak sembarang. Bisa uga ana pranala ing wilayah iki, sing ngidini sampeyan ngunjungi websitus perusahaan liyane.
Iki websitus ora kontrol dening Holtek. Holtek ora tanggung jawab lan ora njamin apa wae Informasi sing ditampilake ing situs kasebut. Hyperlinks menyang liyane websitus ing resiko dhewe.

Watesan Tanggung Jawab

Ing acara apa wae Holtek Limited ora tanggung jawab marang pihak liya kanggo kerugian utawa karusakan apa wae utawa apa wae sing disebabake langsung utawa ora langsung sing ana hubungane karo akses utawa panggunaan iki. websitus, isi ing kono utawa barang, materi utawa layanan.

Hukum Panguwasa
Penafian sing ana ing websitus bakal diatur lan diinterpretasikake miturut hukum Republik China. Pangguna bakal ngirim menyang yurisdiksi non-eksklusif saka pengadilan Republik China.

Nganyari saka Penafian
Holtek nduweni hak kanggo nganyari Penafian sawayah-wayah kanthi utawa tanpa kabar sadurunge, kabeh owah-owahan efektif langsung sawise dikirim menyang websitus.

Dokumen / Sumber Daya

HOLTEK HT32 MCU UART Aplikasi Wigati [pdf] Manual pangguna
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Referensi

Ninggalake komentar

Alamat email sampeyan ora bakal diterbitake. Kolom sing dibutuhake ditandhani *