HOLTEK HT32 MCU UART Aplikasi Catetan Manual Pamaké
Bubuka
Universal Asynchronous Receiver / Transmitter - UART mangrupikeun antarbeungeut transmisi serial anu seueur dianggo anu nyayogikeun pangiriman data duplex full-duplex Asynchronous anu fleksibel. Kode aplikasi "Module_UART" disadiakeun dina catetan aplikasi ieu migunakeun TX / RX interrupts kalawan panyangga ring software pikeun nerapkeun UART basajan ngirimkeun / narima fungsi ngaliwatan API, anu fungsi patali digambarkeun di handap. Ieu bakal simplify sakabéh prosés pangiriman data sarta ngidinan pamaké pikeun gancang ngartos tur nerapkeun aplikasi komunikasi UART.
- Fungsi ngirimkeun / nampi: maca bait, nyerat bait, maca panyangga, nyerat panyangga, jsb.
- fungsi status: ménta panjang panyangga, status TX, jsb.
Dokumén ieu bakal mimiti ngenalkeun protokol komunikasi UART, anu bakal ngabantosan pangguna pikeun langkung ngartos komunikasi UART tina prinsip ka aplikasi. Ieu dituturkeun ku undeuran sareng persiapan sumber daya anu diperyogikeun pikeun kode aplikasi, kalebet perpustakaan firmware, unduhan kode aplikasi, file jeung konfigurasi diréktori ogé bubuka ka alat software terminal dipaké dina catetan aplikasi. Dina Bab Pedaran Fungsional, struktur diréktori kode aplikasi, setélan parameter sareng pedaran API bakal diwanohkeun. Pamakéan API bakal dijelaskeun nganggo kode aplikasi "Module_UART" sareng pamakean sumber daya Flash / RAM anu diperyogikeun pikeun API ogé bakal didaptarkeun. Bab Parentah pikeun Pamakéan bakal ngabimbing pangguna ngalangkungan léngkah-léngkah persiapan lingkungan, kompilasi sareng uji pikeun mastikeun yén kode aplikasi bakal jalanna leres. Ieu lajeng bakal nyadiakeun parentah nu ngajelaskeun kumaha carana ngahijikeun API kana proyék pamaké sarta tungtungna nyadiakeun rujukan pikeun modifikasi jeung masalah umum anu bisa encountered.
Singgetan anu dianggo:
- UART: Universal Asynchronous panarima / pamancar
- API: Antarbeungeut Programming Aplikasi
- LSB: Pangsaeutikna Signifikan Bit
- MSB: Bit paling signifikan
- PC: Komputer Pribadi
- SK: Starter Kit, dewan ngembangkeun HT32
- IDE: Lingkungan Pangwangunan Terpadu
Protokol Komunikasi UART
UART mangrupakeun tipe komunikasi serial tina panganteur nu implements paralel-to-serial konversi data dina pamancar na lajeng communicates serially kalawan panarima sarupa. Panarima lajeng ngalakukeun konversi data serial-to-paralel sanggeus panarimaan data. angka 1 nembongkeun diagram schematic komunikasi serial némbongkeun kumaha data ditransferkeun dina urutan bitwise. Ku alatan éta pikeun komunikasi dua arah antara pamancar jeung panarima, ngan dua kawat, TX jeung RX, diperlukeun pikeun mindahkeun data serially antara unggal lianna. TX teh pin on nu UART transmits data serial sarta disambungkeun ka pin RX tina panarima. Ku alatan éta, alat pemancar sareng panarima kedah nyambungkeun silang pin TX sareng RX pikeun ngalakukeun komunikasi dua arah UART, sapertos anu dipidangkeun dina Angka 2.
Gambar 1. Diagram Komunikasi Serial
Gambar 2. Diagram Sirkuit UART
Salila komunikasi serial UART, pangiriman data henteu sinkron. Ieu ngandung harti yén teu aya jam atanapi sinyal sinkronisasi anu sanés antara pamancar sareng panarima. Di dieu laju baud dipaké, nu mangrupa data serial ngirimkeun / narima speed na nu diatur ku dua sisi sateuacanna tina mindahkeun data. Sajaba ti éta, bit husus kayaning mimiti jeung eureun bit ditambahkeun kana awal jeung tungtung pakét data pikeun ngabentuk pakét data UART lengkep. angka 3 nembongkeun struktur pakét data UART bari Gambar 4 nembongkeun pakét data UART 8-bit tanpa bit parity.
Gambar 3. Struktur Pakét Data UART
angka 4. UART 8-bit Data Packet Format
Unggal bagian tina pakét data UART diwanohkeun dina urutan handap.
- Mimitian Bit: Ieu nunjukkeun mimiti pakét data. Pin UART TX biasana tetep dina tingkat logika anu luhur sateuacan pangiriman dimimitian. Upami pangiriman data dimimitian, pamancar UART bakal narik pin TX ti luhur ka handap, nyaéta, tina 1 ka 0, teras tahan dina hiji siklus jam. Panarima UART bakal ngamimitian maca data nalika transisi luhur ka handap dideteksi dina pin RX.
- Data: Ieu mangrupikeun data anu leres anu ditransfer, kalayan panjang data 7, 8 atanapi 9 bit. Data biasana ditransfer sareng LSB heula.
- Paritas Bit: Jumlah logika "1" dina data dipaké pikeun nangtukeun naha aya data geus robah salila pangiriman. Pikeun parity genap, jumlah total logika "1" dina data kudu angka genap, sabalikna, jumlah total logika "1" dina data kudu angka ganjil pikeun parity ganjil.
- Stop Bit: Ieu nunjukkeun tungtung pakét data, dimana pamancar UART bakal narik pin TX ti low ka luhur, ie, ti 0 ka 1, lajeng tahan eta aya pikeun 1 atawa 2-bit periode waktu.
Sakumaha didadarkeun di saméméhna, saprak euweuh sinyal jam dina sirkuit UART, data serial sarua ngirimkeun / narima speed, nu katelah laju baud, kudu dihartikeun antara pamancar jeung panarima pikeun nerapkeun transmisi kasalahan-gratis. Laju baud didefinisikeun ku jumlah bit anu ditransfer per detik, dina bps (bit per detik). Sababaraha ongkos baud baku sarta ilahar dipaké nyaéta 4800bps, 9600bps, 19200bps, 115200bps, jsb. Waktu saluyu diperlukeun pikeun mindahkeun bit data tunggal ditémbongkeun di handap ieu.
meja 1. Laju baud vs 1-Bit Waktos Transmisi
Laju Baud | 1-Bit Transmisi Waktos |
4800bps | 208.33µs |
9600bps | 104.16µs |
19200bps | 52.08µs |
115200bps | 8.68µs |
Sumberdaya Download jeung Persiapan
Bab ieu bakal ngenalkeun kode aplikasi sareng alat parangkat lunak anu dianggo, ogé kumaha ngonpigurasikeun diréktori sareng file jalur.
Perpustakaan firmware
Kahiji, pastikeun perpustakaan firmware Holtek HT32 geus diundeur saméméh ngagunakeun kode aplikasi. Link undeuran dipidangkeun di handap. Di dieu aya dua pilihan, HT32_M0p_Vyyyymmdd.zip pikeun séri HT32F5xxxx jeung HT32_M3_Vyyyymmdd.zip pikeun séri HT32F1xxxx. Unduh sareng unzip anu dipikahoyong file.
Sleting file ngandung sababaraha polder nu bisa digolongkeun kana Dokumén, Perpustakaan firmware, Pakakas jeung item nu sejen, jalur panempatan nu ditémbongkeun dina Gambar 5. Zip perpustakaan firmware HT32. file kalawan a file ngaran HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip perenahna di handapeun folder Firmware_Library.
Gambar 5. HT32_M0p_Vyyyymmdd.zip Eusi
Kode Aplikasi
Unduh kode aplikasi tina tautan di handap ieu. Kode aplikasi dibungkus kana pos file kalawan a file ngaran HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Tingali Gambar 6 pikeun file konvénsi ngaran.
Gambar 6. Kode Aplikasi File Ngaran Bubuka
Tautan unduh: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File jeung Konfigurasi Diréktori
Salaku kode aplikasi teu ngandung perpustakaan firmware HT32 files, kode aplikasi tur perpustakaan firmware unzipped files kudu ditempatkeun dina jalur bener saméméh dimimitian kompilasi. Kode aplikasi pos file biasana ngandung hiji atawa leuwih polder, kayaning aplikasi jeung perpustakaan, ditémbongkeun saperti dina Gambar 7. Teundeun folder aplikasi dina diréktori akar perpustakaan firmware HT32 pikeun ngalengkepan file konfigurasi jalur, ditémbongkeun saperti dina Gambar 8. Alternatipna, unzip kode aplikasi tur perpustakaan firmware HT32 sakaligus kana jalur anu sarua pikeun ngahontal hasil konfigurasi sarua.
Gambar 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Eusi
Gambar 8. Jalur Decompression
Parangkat Lunak Terminal
Kode aplikasi bisa mindahkeun pesen ngaliwatan port COM pikeun nerapkeun pilihan fungsi atawa tampilan status. Ieu merlukeun sisi host boga software terminal dipasang sateuacanna. Pamaké tiasa milih parangkat lunak sambungan anu pas, atanapi nganggo parangkat lunak anu dilisensikeun gratis sapertos Tera Term. Dina kode aplikasi, saluran UART geus ngonpigurasi kalawan panjang kecap 8-bit, euweuh parity, 1 eureun bit sarta laju baud 115200bps.
Pedaran Fungsional
bab ieu bakal nyadiakeun pedaran fungsi pikeun kode aplikasi, kaasup informasi ngeunaan struktur diréktori, arsitéktur API, pedaran setelan, jsb
Struktur Diréktori
Kode aplikasi file ngandung folder aplikasi. Lapisan salajengna nyaéta folder "Module_UART" anu ngandung dua program aplikasi, "UART_Module_Ex.ample" jeung "UART_Bridge". Anu relevan files dibéréndélkeun sarta dijelaskeun di handap.
Tabél 2. Struktur Diréktori Kode Aplikasi
polder / File Ngaran | Katerangan |
\\aplikasi\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Skrip angkatan pikeun nyiptakeun proyék files |
_ProjectSource.ini | Inisialisasi file pikeun nambahkeun kode sumber kana proyék |
ht32_board_config.h | Disetél file patali jeung IC periferal I / O ngerjakeun |
ht32fxxxxx_01_it.c | Ngaganggu program layanan file |
utama.c | Kode sumber program utama |
\\aplikasi\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Skrip angkatan pikeun nyiptakeun proyék files |
_ProjectSource.ini | Inisialisasi file pikeun nambahkeun kode sumber kana proyék |
ht32_board_config.h | Disetél file patali jeung IC periferal I / O ngerjakeun |
ht32fxxxxx_01_it.c | Ngaganggu program layanan file |
utama.c | Kode sumber program utama |
uart_bridge.h uart_bridge.c | UART sasak lulugu file jeung kode sumber file |
\\ utiliti \ middleware | |
uart_module.h*3 uart_module.c*3 | lulugu API file jeung kode sumber file |
\\ utiliti \ umum | |
ringbuffer.h ring_buffer.c | Software ring panyangga lulugu file jeung kode sumber file |
Catetan:
- Dina "UART_Module_Example" kode aplikasi, operasi maca jeung nulis API dipigawé dina cara loopback, tingal "API Usage Ex.amples" bagian pikeun leuwih rinci.
- Dina kode aplikasi "UART_Bridge", dua saluran UART, UART CH0 sareng UART CH1, diaktipkeun, sareng protokol komunikasi khusus ngalangkungan struktur COMMAND dilaksanakeun antara dua alat UART. Kanggo inpo nu leuwih lengkep, tingal "API Usage Exampbagian les.
- Kode aplikasi kedah nganggo uart_module.c/h files nu boga sarat versi perpustakaan firmware. Saratna tiasa robih waktos ka waktos dumasar kana pembaruan. Pikeun ngonfirmasi sarat versi perpustakaan firmware ayeuna, tingal eusi cek dependensi ku milarian kecap konci "Cék dependensi" dina main.c file. Upami versi perpustakaan firmware henteu nyumponan sarat, unduh versi énggal tina tautan anu disayogikeun dina bagian "Perpustakaan Firmware".
Arsitéktur API
Unggal API boga parameter penting CH, nu Channel UART. Ieu nangtukeun saluran UART mana anu kedah dikontrol. Ayeuna nepi ka opat saluran UART dirojong ku kituna opat simbol konstan diartikeun kieu. Ieu dipaké salaku parameter CH nyadiakeun API dasar pikeun kontrol.
- UARTM_CH0: parameter input - ngadalikeun atawa ngonpigurasikeun UART CH0
- UARTM_CH1: parameter input - ngadalikeun atawa ngonpigurasikeun UART CH1
- UARTM_CH2: parameter input - ngadalikeun atawa ngonpigurasikeun UART CH2
- UARTM_CH3: parameter input - ngadalikeun atawa ngonpigurasikeun UART CH3
spasi memori moal wasted lamun ngan hiji saluran UART dipaké. Ieu kusabab jumlah saluran UART anu dirojong tiasa diatur sareng kode saluran UART anu henteu kapake bakal dipiceun ku preprocessor pikeun ningkatkeun rohangan mémori anu sayogi. Arsitéktur API dipidangkeun dina Gambar 9.
Gambar 9. Diagram Blok Arsitéktur API
Unggal API diwangun ku opat grup setelan atawa kadali nu patali channel UART jadi pamaké ngan perlu input parameter CH nu dipikahoyong. Pikeun ngonpigurasikeun API relevan, eta ngan diperlukeun hiji tambahan UART tabel parameter konfigurasi dasar kalayan formulir struktur, USART_InitTypeDef. API bakal nerapkeun konfigurasi dasar UART nurutkeun eusi parameter dina tabél. Tingal bagian "API Déskripsi" pikeun tabel struktur konfigurasi dasar UART.
The uart_module.c/.h files ngan ngandung interupsi (CHx_IRQ) jeung tabel status (CHx Status) unggal channel UART bari sagala setélan diperlukeun pikeun komunikasi UART disadiakeun ku ht32_board_config.h. Parameter relevan hardware dina ht32_board_config.h file dipidangkeun dina tabél ieu di handap. Langkung seueur rinci disayogikeun dina bagian "Setélan Katerangan".
Parameter relevan hardware dina ht32_board_config.h ngawengku I / O setélan jeung setélan port UART fisik, saperti kieu.
meja 3. Harti Lambang dina ht32_board_config.h
Lambang | Katerangan |
HTCFG_UARTM_CH0 | Ngaran port UART fisik; Misalample: UART0, UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | Nangtukeun ngaran port of TX pikeun CH0; Misalample: A, B, C… |
HTCFG_UARTM0_TX_GPIO_PIN | Nangtukeun jumlah pin TX pikeun CH0; Misalample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Nangtukeun ngaran port RX pikeun CH0; Misalample: A, B, C… |
HTCFG_UARTM0_RX_GPIO_PIN | Nangtukeun jumlah pin TX pikeun CH0; Misalample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Nangtukeun ukuran panyangga TX pikeun CH0; Misalampieu: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Nangtukeun ukuran panyangga RX pikeun CH0; Misalampieu: 128 |
Pikeun ngarobih konfigurasi AFIO saluran UART, tingal lembar data alat anu sasuai. Ayeuna ngan ukur I / O definisi pikeun UART CH0 mawa pangaruh sabab ngan UART CH0 geus ngonpigurasi dina ht32_board_config.h. Pikeun nambahkeun UART CH1~3, definisi I/O maranéhanana kudu réngsé ku ngarujuk kana harti UART CH0 atawa ngarujuk kana bagian "Setelan Modifikasi jeung FAQs".
Aya tilu fitur utama arsitéktur API:
- Nepi ka opat saluran UART dirojong. Parameter inputna nyaéta UARTM_CH0, UARTM_CH1, UARTM_CH2 sareng UARTM_CH3.
- Jumlah saluran UART tiasa diatur sareng saluran anu henteu dianggo moal ngirangan rohangan mémori anu sayogi.
- Sadaya setélan UART sareng definisi I / O lengkep dipisahkeun tina API. Ieu ngaronjatkeun genah manajemén nilai netepkeun sarta ngurangan kamungkinan setelan salah atawa leungit.
Setting Katerangan
bagian ieu bakal ngawanohkeun setélan parameter dina ht32_board_config.h na uart_module.h files.
- ht32_board_config.h: Ieu file dipaké pikeun definisi pin na dewan ngembangkeun setélan relevan, nu ngawengku saluran UART IP (UART0, UART1, USART0 ...) dipaké ku Starter Kit (SK), pakait TX / RX lokasi pin na TX / RX ukuran panyangga. angka 10 nembongkeun eusi setelan HT32F52352 Starter Kit. Gumantung kana integrasi fungsional pangwangunan, pangguna tiasa ngarujuk kana bagian "Pin Assignment" tina lembar data alat anu dianggo pikeun nerapkeun definisi pin. Langkung rinci ngeunaan modifikasi setelan bakal dijelaskeun dina bagian "Setelan modifikasi sareng FAQ".
Gambar 10. ht32_board_config.h Setélan (HT32F52352)
- uart_module.h: Ieu lulugu API file dipaké ku kode aplikasi, nu ngawengku setélan standar relevan, harti fungsi, jeung sajabana Saperti dina Gambar 11, eusi setelan standar bisa overwritten ku konfigurasi éksternal, kayaning setélan dina ht32_board_config.h. file.
angka 11. Setélan Default dina uart_module.h
Pedaran API
- Pedaran tipe data kode aplikasi.
- USART_InitTypeDef
Ieu struktur konfigurasi dasar UART nu diwangun ku BaudRate, WordLength, StopBits, Parity jeung konfigurasi Mode, ditémbongkeun saperti di handap ieu.Variabel Ngaran Tipe Katerangan USART_BaudRate u32 Laju baud komunikasi UART USART_WordLength u16 Panjang kecap komunikasi UART: 7, 8 atawa 9 bit USART_StopBits u16 Panjang bit eureun komunikasi UART: 1 atawa 2 bit USART_parity u16 Parity komunikasi UART: genap, ganjil, tanda, spasi atawa euweuh parity USART_Mode u16 modeu komunikasi UART; API ngan ngarojong mode normal
- USART_InitTypeDef
- Sateuacan nganggo fungsi API, ngalengkepan konfigurasi dasar UART dina program utama. Konfigurasi dasar UART pikeun kode aplikasi ieu ditémbongkeun dina Gambar 12. Di dieu laju baud 115200bps, panjang kecap 8-bit, eureun bit panjangna 1-bit, tur euweuh parity.
angka 12. UART Konfigurasi Dasar
- angka 13 nembongkeun fungsi API dinyatakeun dina uart_module.h file. Tabel di handap ieu ngajelaskeun fungsi, parameter input sareng panggunaan fungsi API.
angka 13. Déklarasi Fungsi API dina uart_module.h
Ngaran | batal UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Fungsi | inisialisasi modul UART | |
Input | CH | saluran UART |
pUART_Init | UART struktur konfigurasi dasar pointer | |
uRxTimeOutValue | Nilai waktos kaluar UART RX FIFO. Nalika RX FIFO narima data anyar counter bakal ngareset tur balikan deui. Sakali loket ngahontal nilai prasetél waktu-kaluar jeung pakait waktu-kaluar interrupts geus diaktipkeun, a interrupts waktos-out bakal dihasilkeun. | |
Pamakéan | UARTM_Init (UARTM_CH0, & USART_InitStructure, 40); // Jalankeun konfigurasi dasar UART // Tingal Gambar 12 pikeun konfigurasi USART_InitStructure |
Ngaran | u32 UARTM_WriteByte(u32 CH, u8 uData) | |
Fungsi | UART modul nulis byte operasi (TX) | |
Input | CH | saluran UART |
uData | Data anu bakal ditulis | |
Kaluaran | SUKSES | Suksés |
ERROR | Gagal | |
Pamakéan | UARTM_WriteByte(UARTM_CH0, 'A'); //UART nyerat 1 bait - 'A' |
Ngaran | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength) | |
Fungsi | Operasi nulis modul UART (TX) | |
Input | CH | saluran UART |
pBuffer | Panyangga pointer | |
uPanjang | Panjang data anu bakal ditulis | |
Kaluaran | SUKSES | Suksés |
ERROR | Gagal | |
Pamakéan | u8 Test[] = "Ieu tés!\r\n"; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); // UART nyerat data pBuffer |
Ngaran | u32 UARTM_ReadByte(u32 CH, u8 *pData) | |
Fungsi | Operasi bait baca modul UART (RX) | |
Input | CH | saluran UART |
pData | Alamat pikeun nempatkeun data dibaca | |
Kaluaran | SUKSES | Suksés |
ERROR | Gagal (teu aya data) | |
Pamakéan | u8 TempData; lamun (UARTM_ReadByte (UARTM_CH0, & TempData) == SUCCESS) {UARTM_WriteByte (UARTM_CH0, TempData);} // Lamun UARTM_ReadByte () mulih SUCCESS lajeng UART nyerat bait data ieu |
Ngaran | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength) | |
Fungsi | Operasi baca modul UART (RX) | |
Input | CH | saluran UART |
pBuffer | Panyangga pointer | |
uPanjang | Panjang data anu dibaca | |
Kaluaran | Jumlah bacaan | Panjang data geus dibaca |
Pamakéan | u8 Tés2[10]; u32 Lén; Len = UARTM_Read(UARTM_CH0, Test2, 5);lamun (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() maca 5 bait data jeung nyimpen data kana Test2, sarta nangtukeun count bait dibaca mun Len // Tulis data sourced tina Test2 |
Ngaran | u32 UARTM_GetReadBufferLength(u32 CH) | |
Fungsi | Kéngingkeun panjang panyangga baca (RX) | |
Input | CH | saluran UART |
Kaluaran | uPanjang | Baca panjangna panyangga |
Pamakéan | UARTM_Init (UARTM_CH0, & USART_InitStructure, 40); //Inisialisasi modul UART bari (UARTM_GetReadBufferLength (UARTM_CH0) <5); // Antosan dugi UARTM_ReadBuffer nampi 5 bait data |
Ngaran | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Fungsi | Kéngingkeun panjang panyangga nyerat (TX) | |
Input | CH | saluran UART |
Kaluaran | uPanjang | Tulis panjang panyangga |
Ngaran | u8 UARTM_IsTxRengse(u32 CH) | |
Fungsi | Kéngingkeun status TX | |
Input | CH | saluran UART |
Kaluaran | BENER | status TX: rengse |
PALSU | Status TX: teu réngsé | |
Pamakéan | UARTM_WriteByte(UARTM_CH0, 'O'); #lamun 1 // "uart_module.c" SVN>= 525 requiredwhile (UARTM_IsTxFinished (UARTM_CH0) == PALSU) #elsewhile (1) #endif // API Ieu bisa dipaké pikeun pariksa status TX, ditémbongkeun saperti di luhur; antosan dugi UARTM_WriteByte () API geus rengse, ie, status TX BENER, lajeng neraskeun lampah salajengna.//A pangwatesan ditambahkeun sabab fungsi ieu teu acan ditambahkeun dugi angka versi SVN di uart_module.c nyaeta 525. |
Ngaran | batal UARTM_DiscardReadBuffer(u32 CH) | |
Fungsi | Piceun data dina panyangga dibaca | |
Input | CH | saluran UART |
Pamakéan API Examples
bagian ieu bakal demonstrate API nulis jeung maca examples tina kode aplikasi "Module_UART" ngagunakeun prosés initialization jeung "UART_Module_Ex".ample" prosés kode aplikasi. Sateuacan nganggo API, pangguna kedah ngalebetkeun lulugu API file kana kode sumber program utama file (#include “middleware/uart_module.h”).
Ditémbongkeun saperti dina Gambar 14, nalika asup kana prosés inisialisasi, tangtukeun heula struktur konfigurasi dasar UART. Lajeng ngonpigurasikeun anggota struktur konfigurasi dasar UART kaasup BaudRate, WordLength, StopBits, Parity jeung Mode. Tungtungna, nelepon fungsi inisialisasi API, anu parantosan nunjukkeun tungtung prosés inisialisasi. Sanggeus ieu pamaké bisa neruskeun nulis jeung maca operasi dumasar kana prasetél UART konfigurasi dasar.
Gambar 14. Bagan Alur Inisialisasi
The "UART_Module_Example" kode aplikasi nunjukkeun API maca jeung nulis operasi di ragam loopback. The flowchart pikeun ieu ditémbongkeun dina Gambar 15. Fungsi API dipaké kaasup UARTM_WriteByte (), UARTM_Write (), UARTM_ReadByte (), UARTM_Read () sarta UARTM_GetReadBufferLength (). Kateranganana disayogikeun dina bagian "Pedaran API".
Gambar 15. Bagan Alur Nulis jeung Maca Examples
Aya deui kode aplikasi "UART_Bridge" dina folder "Module_UART" anu aya hubunganana file déskripsi diwanohkeun dina bagian "Struktur Diréktori". Kode aplikasi "UART_Bridge" ngaktifkeun dua saluran UART, UART CH0 jeung UART CH1, lajeng customizes protokol komunikasi antara dua alat UART ngaliwatan struktur COMMAND, gCMD1 na gCMD2. Ieu didefinisikeun dina uart_bridge.c, ditémbongkeun saperti di handap ieu. UARTBridge_CMD1TypeDef gCMD1:
Variabel Ngaran | Tipe | Katerangan |
uHeader | u8 | lulugu |
uCmd | u8 | Paréntah |
uData[3] | u8 | Data |
UARTBridge_CMD2TypeDef gCMD2:
Variabel Ngaran | Tipe | Katerangan |
uHeader | u8 | lulugu |
uCmdA | u8 | Komando A |
uCmdB | u8 | Paréntah B |
uData[3] | u8 | Data |
Dina kode aplikasi "UART_Bridge", paké gCMD1 pikeun nampi data salaku pakét paréntah teras nganalisis éta. Lajeng nurutkeun protokol komunikasi ngaropéa, set gCMD2 salaku pakét respon sarta ngirimkeunana. Di handap ieu mangrupa example tina hiji pakét paréntah gCMD1) jeung pakét respon (gCMD2). Pakét Paréntah (UARTBridge_CMD1TypeDef gCMD1):
Bait 0 | Bait 1 | Bait 2 ~ Bait 4 |
uHeader | uCmd | uData [3] |
"A" | "1" | "x, y, z" |
Paket Tanggapan (UARTBridge_CMD2TypeDef gCMD2):
Bait 0 | Bait 1 | Bait 2 | Bait 3 ~ Bait 5 |
uHeader | uCmdA | uCmdB | uData [3] |
"B" | "a" | "1" | "x, y, z" |
Pakasaban Sumberdaya
Nyandak HT32F52352 salaku example, sumberdaya dikawasaan ku modul UART ditémbongkeun di handap.
HT32F52352 | |
Ukuran ROM | 946 bait |
Ukuran RAM | 40*1 + 256*2 Bait |
Catetan:
- Variabel global kaasup bandéra sareng status pikeun saluran tunggal ngeusian 40 bait RAM.
- Ieu kanggo kaayaan dimana saluran tunggal dianggo sareng ukuran panyangga TX / RX nyaéta 128/128 bait. Ukuran panyangga bisa diatur nurutkeun sarat aplikasi.
Tabél 4. Kode Aplikasi Pakasaban Sumberdaya
- Lingkungan kompilasi: MDK-Arm V5.36, ARMCC V5.06 update 7 (ngawangun 960)
- Pilihan Optimalkeun: Tingkat 2 (-O2)
Parentah pikeun Paké
Bab ieu bakal ngenalkeun préparasi lingkungan pikeun kode aplikasi "Module_UART", kitu ogé léngkah-léngkah kompilasi sareng tés.
Persiapan Lingkungan
Parangkat lunak sareng parangkat lunak anu diperyogikeun pikeun kode aplikasi "Module_UART" dibéréndélkeun di handap.
meja 5. Hardware / Software Persiapan Lingkungan
Hardware/Software | Ngitung | Catetan |
Starter Kit | 1 | Catetan aplikasi ieu nganggo Kit Starter HT32F52352 salaku mantanample |
Kabel USB | 1 | Micro USB, disambungkeun ka PC |
Kode Aplikasi | — | Jalur download, file jeung konfigurasi diréktori diwanohkeun dina "Resource Download na Persiapan" section.Path: "\\application\Module_UART\UART_Module_Example ” |
Istilah Tera | — | Tingali kana bagian "Software Terminal". |
Keil IDE | — | Keil uVision V5.xx |
Kahiji, make HT32F52352 Starter Kit digabungkeun jeung Virtual COM Port (VCP) fungsi e-Link32 Lite pikeun bubuka aplikasi UART. Ieu merlukeun persiapan lingkungan handap pikeun dilaksanakeun:
- Aya dua interfaces USB dina dewan. Paké kabel USB pikeun nyambungkeun PC na eLink32 Lite panganteur dina dewan ditémbongkeun saperti dina Gambar 16- (a).
- Salaku kode aplikasi perlu ngagunakeun e-Link32 Lite Virtual COM Port (VCP) fungsi, mastikeun yén PAx * 2 na DAP_Tx of UART Jumper-J2 * 1 geus shorted maké jumper a. Lokasi J2 dituduhkeun ku Gambar 16-(b).
Catetan
- J2 dina Starter Kit boga dua pilihan, PAx na DAP_Tx shorted atanapi PAx na RS232_Tx shorted. Tingal manual pamaké Starter Kit pikeun pungsi setelan lengkep.
- Lokasi pin MCU UART RX dina Kit Starter béda béda. Mantan ieuample ngagunakeun PAx pikeun nunjukkeun pin RX.
angka 16. HT32 Starter Kit Blok Diagram
Ayeuna nganggo papan target pamaké digabungkeun jeung Virtual COM Port (VCP) fungsi e-Link32 Pro pikeun bubuka aplikasi UART. Ieu merlukeun persiapan lingkungan handap pikeun dilaksanakeun:
- Hiji sisi e-Link32 Pro disambungkeun ka PC maké kabel Mini USB jeung sisi séjén disambungkeun ka papan target pamaké ngaliwatan kabel abu 10-bit na. Sambungan antara interfaces SWD tina kabel jeung dewan target dilaksanakeun ngagunakeun garis Dupont, ditémbongkeun saperti dina Gambar 17- (a).
- Pin komunikasi serial tina e-Link32 Pro nyaéta Pin # 7 VCOM_RXD sareng Pin # 8- VCOM_TXD. Ieu kudu disambungkeun ka TX na RX pin dewan target pamaké, ditémbongkeun saperti dina Gambar 17- (b).
angka 17. e-Link32 Pro + Pamaké Target Board Blok Diagram
Kompilasi jeung Test
Bagian ieu bakal nyandak "aplikasi\Module_UART\UART_Module_Example" salaku urutample pikeun ngawanohkeun prosés kompilasi jeung tés. Sateuacan ieu, pastikeun yén sadaya persiapan anu dijelaskeun dina bagian sateuacana parantos dilaksanakeun sareng parangkat lunak terminal Tera Term parantos diunduh.
Léngkah-léngkah operasi anu lengkep diringkeskeun di handap.
Lengkah 1. Power-on test
Nyetél lingkungan hardware sakumaha ditétélakeun dina bagian saméméhna. Saatos kakuatan-on, LED kakuatan D9 di kénca handap Starter Kit bakal cahayana. D1 USB LED dina e-Link32 Lite di katuhu luhur bakal cahayana sanggeus enumeration USB geus réngsé. Upami D1 henteu bercahya saatos waktos anu lami, pastikeun yén kabel USB tiasa komunikasi. Upami henteu teras cabut teras selapkeun deui.
Lengkah 2. Ngahasilkeun proyék
Buka aplikasi\Module_UART\UART_Module_Example folder, klik dina _CreateProject.bat file pikeun ngahasilkeun proyék, ditémbongkeun saperti dina Gambar 18. Kusabab catetan aplikasi ieu ngagunakeun HT32F52352 Starter Kit, buka proyek Keil IDE "Project_52352.uvprojx" lokasina di handapeun folder MDK_ARMv5.
angka 18. Ngaéksekusi _CreateProject.bat pikeun ngahasilkeun Project
Lengkah 3. Compile jeung program
Saatos proyék dibuka, klik heula "Bangun" (atanapi nganggo potong kompas "F7"), teras klik "Unduh" (atanapi nganggo potong kompas "F8"). Saatos ieu, hasil ngawangun sareng unduh bakal ditingalikeun dina jandela Build Output. Tempo Gambar 19.
Gambar 19. Ngawangun jeung Ngundeur Hasil
Lengkah 4. Buka software Tera Term tur ngonpigurasikeun port serial
Buka software Tera Term sareng port COM. Nengetan naha jumlah port COM dihasilkeun ku Starter Kit bener atanapi henteu. Teras klik "Setup >> Port Serial" pikeun asupkeun antarmuka konfigurasi. Konfigurasi antarmuka UART tina kode aplikasi "Module_UART" dijelaskeun dina bagian "Software Terminal". Hasil setelan ditémbongkeun dina Gambar 20.
angka 20. Tera Istilah Serial Port Setup Hasil
Lengkah 5. Reset sistem jeung test
Pencét konci SK reset - B1 Reset. Saatos ieu, "ABCThis is test!" pesen bakal
dikirimkeun ngaliwatan API tur bakal dipintonkeun dina jandela Tera Istilah, ditémbongkeun saperti dina Gambar 21. Ngeunaan fungsi narima, lamun ngasupkeun data kana jandela Tera Istilah, API relevan bakal dipaké pikeun nangtukeun panjangna panyangga narima. Nalika data anu ditampi ku PC ngahontal 5 bait, anu nampi 5 bait data bakal dikirim sacara berurutan. Ditémbongkeun saperti dina Gambar 22, data sequentially diasupkeun nyaeta "1, 2, 3, 4, 5", nu narima tur ditangtukeun ngaliwatan API. Saatos ieu, data "1, 2, 3, 4, 5" bakal dicitak saatos lima input.
angka 21. "Module_UART" Kode Aplikasi Test Fungsional - ngirimkeun
angka 22. "Module_UART" Aplikasi Code Test Fungsional - Nampa
Parentah Transplantasi
Bagian ieu bakal ngawanohkeun kumaha ngahijikeun API kana proyék pamaké.
Lengkah 1. Tambahkeun uart_module.c file kana proyék. Klik katuhu dina folder pamaké. Pilih "Tambahkeun Aya Files ka Grup 'Pamaké'…”, teras pilih uart_module.c file teras klik dina "Tambahkeun", ditémbongkeun saperti dina Gambar 23. Tingal kana bagian "Struktur Diréktori" pikeun file pedaran jalur.
Gambar 23. Tambahkeun uart_module.c File pikeun Project
Lengkah 2. Tambahkeun ring_buffer.c file kana proyék. Klik katuhu dina folder pamaké. Pilih "Tambahkeun Aya Files ka Grup 'Pamaké'…”, teras pilih ring_buffer.c file teras klik dina "Tambahkeun", ditémbongkeun saperti dina Gambar 24.\ Rujuk kana bagian "Struktur Diréktori" pikeun file pedaran jalur.
Gambar 24. Tambahkeun ring_buffer.c File pikeun Project
Lengkah 3. Kaasup lulugu API file kana awal main.c, ditémbongkeun saperti dina Gambar 25. (Ext: #include "middleware/uart_module.h")
angka 25. Kaasup lulugu API File ka utama.c
Lengkah 4. Nerapkeun setélan diperlukeun pikeun komunikasi UART ngagunakeun ht32_board_config.h file. Ieu diwanohkeun sacara rinci dina bagian "Setélan Katerangan" sareng "Setélan Modifikasi sareng FAQ".
Setélan Modifikasi jeung FAQs
Bagian ieu bakal ngenalkeun kumaha cara ngarobih setélan UART sareng ngajelaskeun sababaraha patarosan umum anu dipendakan nalika dianggo.
Robah UART Pin Assignment
- Ngarujuk kana bab HT32F52352 Datasheet "Pin Assignment", tingali tabel Pemetaan Fungsi Alternatip anu daptar fungsi AFIO tina jinis alat. Pikeun pin UART relevan, tingal kolom "AF6 USART / UART", ditémbongkeun saperti dina Gambar 26.
angka 26. HT32F52352 Méja Mapping Fungsi Silih
- Léngkah ieu bakal nungtun pangguna pikeun milarian pin UART anu saluyu nganggo tabel di luhur. HT32F52352 example ngagunakeun USART1 salaku saluran standar. Di dieu, pin TX sareng RX nyaéta USR1_TX sareng USR1_RX sareng ayana dina PA4 sareng PA5 masing-masing. angka 27 nembongkeun susuratan pin ogé harti pin dina "ht32_board_config.h". Widang kosong tina "Pakét" dina tabel ngerjakeun pin hartina euweuh GPIOs relevan dina pakét ieu. Pikeun ngarobih pin UART, panggihan lokasi pin udagan sareng ngartikeun deui pin nganggo "ht32_board_config.h" file.
angka 27. Pin korespondensi jeung Setting Modifikasi
Tambahkeun Saluran UART
Nyandak HT32F52352 HTCFG_UARTM_CH1 salaku example, dieu eta digambarkeun kumaha carana nambahkeun saluran UART anyar.
Ngaropea ht32_board_config.h file
Ngarujuk kana bab HT32F52352 Datasheet "Pin Assignment", tingali tabel Pemetaan Fungsi Alternatip anu daptar fungsi AFIO tina jinis alat. Salaku USART1 geus dipaké salaku HTCFG_UARTM_CH0, nu anyar ditambahkeun HTCFG_UARTM_CH1 bisa milih USART0. Di dieu, TX na RX pin lokasina di PA2 na PA3 mungguh, ditémbongkeun saperti dina satengah luhur Gambar 28. modifikasi pakait dilaksanakeun ngagunakeun garis kode 120 ~ 126 di ht32_board_config.h, ditémbongkeun saperti ku kotak dotted beureum dina Gambar. 28.
angka 28. Tambahkeun Saluran UART
FAQs
Q: Dina léngkah 5 tina bagian Kompilasi sareng Uji, tés fungsional ngirimkeun normal. Di dieu, "ABCThis téh tés!" pesen geus ditémbongkeun hasil, kumaha oge, pikeun fungsi narima, naha lima nilai input teu balik sarta ditampilkeun?
A: Pariksa naha pin MCU UART RX na DAP_Tx UART Jumper-J2 geus shorted maké jumper a. Kusabab kode aplikasi "Module_UART" kedah nganggo Virtual COM Port (VCP) tina e-Link32 Lite, setelan sirkuit pondok kedah diterapkeun kana dua pin kénca UART Jumper-J2, sapertos anu dipidangkeun dina Gambar 29.
angka 29. UART Jumper-J2 Setélan
P: Sanggeus ngaéksekusi "Bangun" (atanapi potong kompas "F7"), pesen kasalahan muncul nunjukkeun yén versi perpustakaan firmware langkung lami tibatan anu diperyogikeun? Tempo Gambar 30.
A: Palaksanaan "Module_UART" kode aplikasi perlu ngawengku uart_module.c/h files nu boga sarat pikeun versi perpustakaan firmware tangtu. Nalika pesen kasalahan sapertos muncul, éta hartosna perpustakaan firmware anu ayeuna dianggo mangrupikeun versi anu langkung lami. Ku sabab eta perlu pikeun ngundeur versi newest ngaliwatan link disadiakeun dina bagian "Firmware Library".
Gambar 30. Firmware Library Vérsi Kasalahan Pesen
kacindekan
Dokumén ieu parantos nyayogikeun bubuka dasar pikeun ngabantosan pangguna pikeun ngartos kode aplikasi "Module_UART" sareng protokol komunikasi UART. Ieu dituturkeun ku download sumberdaya jeung persiapan. Bab Pedaran Fungsional ngawanohkeun file struktur diréktori, arsitéktur API, pedaran API tur pamakéan API examples. Bab Parentah pikeun Pamakéan nunjukkeun persiapan lingkungan, kompilasi sareng uji kode aplikasi "Module_UART". Éta ogé nyayogikeun petunjuk pikeun cangkok kode sareng setélan modifikasi ogé ngajelaskeun sababaraha masalah umum anu tiasa dipendakan. Sadaya gabungan ieu bakal ngamungkinkeun para pangguna gancang ngartos kumaha ngagunakeun API sareng salajengna ngirangan jumlah waktos pikeun ngamimitian.
Bahan Rujukan
Kanggo inpo nu leuwih lengkep, tingal Holtek websitus: www.holtek.com
Vérsi sarta Émbaran Modifikasi
titimangsa | Pangarang | Leupaskeun | Émbaran modifikasi |
2022.04.30 | 蔡期育(Chi-Yu Tsai) | V1.00 | Vérsi munggaran |
Bantahan
Sadaya inpo, mérek dagang, logos, grafik, video, klip audio, Tumbu jeung item nu sejen muncul dina ieu websitus ('Inpormasi') ngan ukur kanggo rujukan sareng tiasa robih iraha waé tanpa aya bewara sateuacanna sareng kawijaksanaan Holtek Semiconductor Inc. urang' atawa 'urang'). Whilst Holtek endeavors pikeun mastikeun katepatan tina Émbaran ngeunaan ieu websitus, euweuh jaminan express atanapi tersirat dirumuskeun ku Holtek ka katepatan tina Émbaran. Holtek moal nanggung tanggung jawab pikeun kasalahan atanapi bocor.
Holtek moal nanggungjawaban kanggo karusakan naon waé (kalebet tapi henteu dugi ka virus komputer, masalah sistem atanapi leungitna data) naon waé anu timbul dina ngagunakeun atanapi aya hubunganana sareng panggunaan ieu. websitus ku pihak mana wae. Meureun aya tumbu di wewengkon ieu, nu ngidinan Anjeun pikeun nganjang ka websitus pausahaan séjén.
Ieu websitus teu dikawasa ku Holtek. Holtek moal nanggung tanggung jawab sareng henteu ngajamin naon waé inpormasi anu ditampilkeun dina situs sapertos kitu. Hyperlinks ka séjén websitus aya dina resiko sorangan.
Watesan Tanggung jawab
Dina hal naon wae Holtek Limited moal nanggungjawaban kana sadaya pihak séjén pikeun sagala karugian atawa karuksakan naon atawa kumaha ogé disababkeun langsung atawa henteu langsung dina sambungan kalawan aksés anjeun ka atawa pamakéan ieu. websitus, eusi eta atawa barang, bahan atawa jasa.
Hukum Ngatur
The Bantahan dikandung dina websitus bakal diatur ku tur diinterpretasi luyu jeung hukum Republik Cina. Pamaké bakal ngalebetkeun kana yurisdiksi non-ekslusif ti pangadilan Republik Cina.
Update tina Bantahan
Holtek boga hak pikeun ngamutahirkeun Bantahan iraha wae sareng atanapi tanpa aya bewara sateuacanna, sadaya parobihan efektif langsung saatos ngeposkeun ka websitus.
Dokumén / Sumberdaya
![]() |
HOLTEK HT32 MCU UART Aplikasi Catetan [pdf] Manual pamaké HT32 MCU, UART Aplikasi Catetan, HT32 MCU UART, Aplikasi Catetan, HT32, MCU UART Aplikasi Catetan, HT32 MCU UART Aplikasi Catetan |