HOLTEK HT32 MCU UART Application Note User Manual
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
Gambar 2. 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
Gambar 4. Format Paket Data UART 8-bit
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
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/
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
Gambar 8. Path Decompression
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:
- Ing "UART_Module_Example" kode aplikasi, operasi maca lan nulis API ditindakake kanthi cara loopback, deleng "API Usage Examples" bagean kanggo rincian liyane.
- 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.
- 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
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:
- Nganti papat saluran UART didhukung. Parameter input kasebut yaiku UARTM_CH0, UARTM_CH1, UARTM_CH2 lan UARTM_CH3.
- Jumlah saluran UART bisa disetel lan saluran sing ora digunakake ora bakal nyuda ruang memori sing kasedhiya.
- 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.
- 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)
- 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
Katrangan API
- 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
- USART_InitTypeDef
- 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
- 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
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
"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
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:
- Variabel global kalebu gendera lan status kanggo saluran siji manggoni 40 bait RAM.
- 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:
- Ana rong antarmuka USB ing Papan. Gunakake kabel USB kanggo nyambungake PC lan antarmuka eLink32 Lite ing Papan minangka ditampilake ing Figure 16- (a).
- 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
- 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.
- 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
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:
- 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).
- 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
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
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
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
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
Gambar 22. "Module_UART" Kode Aplikasi Test Fungsional - Nampa
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
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
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
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
- 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
- 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
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
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
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
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 |