Кіраўніцтва карыстальніка заўвагі па ўжыванні HOLTEK HT32 MCU UART
Уводзіны
Універсальны асінхронны прыёмнік/перадатчык - UART - гэта шырока выкарыстоўваны паслядоўны інтэрфейс перадачы, які забяспечвае гнуткую асінхронную поўнадуплексную перадачу даных. Прыкладны код “Module_UART”, прыведзены ў гэтай нататцы па дадатку, выкарыстоўвае перапыненні TX/RX з праграмнымі кальцавымі буферамі для рэалізацыі простых функцый перадачы/прыёму UART праз API, адпаведныя функцыі якіх апісаны ніжэй. Гэта спросціць увесь працэс перадачы дадзеных і дазволіць карыстальнікам хутка зразумець і ўкараніць камунікацыйныя прыкладанні UART.
- Функцыі перадачы/прыёму: чытанне байта, запіс байта, чытанне буфера, запіс буфера і г.д.
- Функцыі стану: атрымаць даўжыню буфера, статус перадачы і г.д.
У гэтым дакуменце ўпершыню будзе прадстаўлены пратакол сувязі UART, які дапаможа карыстальнікам лепш зразумець сувязь UART ад прынцыпу да прымянення. Затым ідуць загрузка і падрыхтоўка рэсурсаў, неабходных для кода прыкладання, у тым ліку бібліятэкі прашыўкі, загрузкі кода прыкладання, file і канфігурацыя каталога, а таксама ўвядзенне ў праграмнае забеспячэнне тэрмінала, якое выкарыстоўваецца ў заўвазе да прыкладання. У главе Функцыянальнае апісанне будзе прадстаўлена структура каталога кода прыкладання, налады параметраў і апісанне API. Выкарыстанне API будзе апісана з выкарыстаннем кода прыкладання "Module_UART", а таксама будзе пералічана спажыванне рэсурсаў Flash/RAM, неабходных для API. Раздзел «Інструкцыі па выкарыстанні» правядзе карыстальніка праз этапы падрыхтоўкі навакольнага асяроддзя, кампіляцыі і тэставання, каб пацвердзіць, што код прыкладання будзе працаваць належным чынам. Затым ён дасць інструкцыі, якія тлумачаць, як інтэграваць API у праекты карыстальніка, і, нарэшце, дасць спасылку на мадыфікацыі і агульныя праблемы, якія могуць узнікнуць.
Выкарыстоўваюцца скарачэнні:
- UART: Універсальны асінхронны прыёмнік/перадатчык
- API: Інтэрфейс прыкладнога праграмавання
- LSB: Найменшы значны біт
- MSB: Самы значны біт
- ПК: Персанальны кампутар
- СК: Стартавы камплект, плата распрацоўкі HT32
- IDE: Інтэграванае асяроддзе распрацоўкі
Пратакол сувязі UART
UART - гэта паслядоўны тып інтэрфейсу сувязі, які рэалізуе паралельнае пераўтварэнне даных у паслядоўны на сваім перадатчыку, а затым паслядоўна звязваецца з аналагічным прыёмнікам. Затым прымач выконвае паслядоўнае пераўтварэнне даных у паралельнае пасля атрымання даных. На малюнку 1 паказана прынцыповая дыяграма паслядоўнай сувязі, якая паказвае, як дадзеныя перадаюцца ў пабітавым парадку. Такім чынам, для двухнакіраванай сувязі паміж перадатчыкам і прымачом патрабуюцца толькі два правады, TX і RX, для паслядоўнай перадачы даных паміж сабой. TX - гэта кантакт, па якім UART перадае паслядоўныя дадзеныя і падлучаны да кантакту RX прымача. Такім чынам, прылады-перадатчык і прыёмнік павінны перакрыжавана злучыць свае кантакты TX і RX для выканання двухбаковай сувязі UART, як паказана ў Малюнак 2.
Малюнак 1. Схема паслядоўнай сувязі
Малюнак 2. Электрычная схема UART
Падчас паслядоўнай сувязі UART перадача даных з'яўляецца асінхроннай. Гэта азначае, што паміж перадатчыкам і прымачом няма гадзінніка або іншага сігналу сінхранізацыі. Тут выкарыстоўваецца хуткасць перадачы дадзеных, якая з'яўляецца паслядоўнай хуткасцю перадачы/прыёму даных і якая ўсталёўваецца абодвума бакамі перад перадачай даных. Акрамя таго, спецыяльныя біты, такія як стартавыя і стопавыя біты, дадаюцца ў пачатак і канец пакета даных, каб сфармаваць поўны пакет даных UART. Малюнак 3 паказвае структуру пакета даных UART, а малюнак 4 паказвае 8-бітны пакет даных UART без біта цотнасці.
Малюнак 3. Структура пакета дадзеных UART
Малюнак 4. 8-бітны фармат пакета даных UART
Кожная частка пакета дадзеных UART прадстаўлена ў наступным парадку.
- Пачатковы біт: Гэта паказвае на пачатак пакета дадзеных. Вывад UART TX звычайна застаецца на высокім лагічным узроўні перад пачаткам перадачы. Калі пачнецца перадача даных, перадатчык UART падцягне кантакт TX ад высокага да нізкага, г.зн. ад 1 да 0, а затым утрымае яго там на працягу аднаго такту. Прыёмнік UART пачне счытваць дадзеныя, калі на штыфце RX будзе выяўлены пераход з высокага на нізкі.
- дадзеныя: Гэта фактычна перададзеныя даныя даўжынёй 7, 8 ці 9 біт. Звычайна даныя спачатку перадаюцца з LSB.
- Біт цотнасці: Лік лагічнай «1» у дадзеных выкарыстоўваецца, каб вызначыць, ці змяніліся якія-небудзь дадзеныя падчас перадачы. Для цотнасці агульная колькасць лагічных "1" у даных павінна быць цотнай лічбай, і наадварот, агульная колькасць лагічнай "1" у даных павінна быць няцотнай для няцотнасці.
- Стоп-біт: Гэта паказвае на канец пакета даных, дзе перадатчык UART перанясе кантакт TX з нізкага ўзроўню на высокі, г.зн. з 0 на 1, а потым утрымае яго там на працягу 1-2-бітнага перыяду часу.
Як згадвалася раней, паколькі ў ланцугу UART няма тактавага сігналу, для беспамылковай перадачы паміж перадатчыкам і прымачом павінна быць вызначана аднолькавая паслядоўная хуткасць перадачы/прыёму даных, вядомая як хуткасць перадачы дадзеных. Хуткасць перадачы дадзеных вызначаецца колькасцю біт, якія перадаюцца ў секунду, у бітах у секунду. Некаторыя стандартныя і звычайна выкарыстоўваюцца хуткасці перадачы дадзеных - 4800 біт/с, 9600 біт/с, 19200 біт/с, 115200 біт/с і г. д. Ніжэй паказаны адпаведны час, неабходны для перадачы аднаго біта даных.
Табліца 1. Хуткасць перадачы ў бодах у параўнанні з 1-бітным часам перадачы
Хуткасць перадачы дадзеных | 1-бітная перадача Час |
4800 біт/с | 208.33 мкс |
9600 біт/с | 104.16 мкс |
19200 біт/с | 52.08 мкс |
115200 біт/с | 8.68 мкс |
Загрузка і падрыхтоўка рэсурсу
У гэтай главе будуць прадстаўлены код прыкладання і выкарыстоўванае праграмнае забеспячэнне, а таксама тое, як наладзіць каталог і file шлях.
Бібліятэка прашыўкі
Спачатку пераканайцеся, што бібліятэка прашыўкі Holtek HT32 была спампавана перад выкарыстаннем кода прыкладання. Спасылка для загрузкі паказана ніжэй. Тут ёсць два варыянты: HT32_M0p_Vyyyymmdd.zip для серыі HT32F5xxxx і HT32_M3_Vyyyymmdd.zip для серыі HT32F1xxxx. Спампуйце і распакуйце патрэбную file.
Маланка file змяшчае некалькі тэчак, якія можна класіфікаваць як дакументы, бібліятэку прашыўкі, інструменты і іншыя элементы, шлях размяшчэння якіх паказаны на малюнку 5. ZIP-бібліятэка прашыўкі HT32 file з а file імя HT32_STD_xxxxxx_FWLib_Vm.n.r_s.zip знаходзіцца ў тэчцы Firmware_Library.
Малюнак 5. Змест HT32_M0p_Vyyyymmdd.zip
Код прыкладання
Спампаваць код прыкладання па наступнай спасылцы. Код прыкладання запакаваны ў zip file з а file назва HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Глядзіце Малюнак 6 для file умоўныя назвы.
Малюнак 6. Код прыкладання File Імя Уводзіны
Спасылка для запампоўкі: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File і канфігурацыя каталога
Паколькі код прыкладання не ўтрымлівае бібліятэкі прашыўкі HT32 files, код прыкладання і бібліятэка прашыўкі распакавана files павінны быць размешчаны ў правільным шляху перад пачаткам кампіляцыі. Zip код прыкладання file звычайна змяшчае адну або некалькі тэчак, такіх як прыкладанне і бібліятэка, як паказана на малюнку 7. Змесціце тэчку прыкладання ў каранёвым каталогу бібліятэкі прашыўкі HT32, каб завяршыць file канфігурацыі шляху, як паказана на малюнку 8. У якасці альтэрнатывы распакуйце код прыкладання і бібліятэку прашыўкі HT32 адначасова ў той жа шлях, каб атрымаць аднолькавыя вынікі канфігурацыі.
Малюнак 7. Змест HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Малюнак 8. Шлях дэкампрэсіі
Праграмнае забеспячэнне тэрмінала
Код прыкладання можа перадаваць паведамленні праз COM-порт для рэалізацыі выбару функцыі або адлюстравання стану. Гэта патрабуе загадзя ўстаноўленага праграмнага забеспячэння тэрмінала. Карыстальнікі могуць выбраць адпаведнае праграмнае забеспячэнне для падлучэння або выкарыстоўваць бясплатнае ліцэнзійнае праграмнае забеспячэнне, такое як Tera Term. У кодзе прыкладання канал UART настроены на даўжыню слова 8 біт, без парытэту, 1 стоп-біт і хуткасць перадачы 115200 біт/с.
Функцыянальнае апісанне
У гэтай главе будзе дадзена функцыянальнае апісанне кода прыкладання, уключаючы інфармацыю аб структуры каталогаў, архітэктуры API, апісанні налад і г.д.
Структура каталога
Код прыкладання file змяшчае тэчку прыкладання. Наступны ўзровень - папка "Module_UART", якая змяшчае дзве прыкладныя праграмы, "UART_Module_Example» і «UART_Bridge». Актуальны files пералічаны і апісаны ніжэй.
Табліца 2. Структура каталога кода прыкладання
Тэчка / File Імя | Апісанне |
\\прыкладанне\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Пакетныя скрыпты для стварэння праекта files |
_ProjectSource.ini | Ініцыялізацыя file для дадання зыходнага кода ў праекты |
ht32_board_config.h | Настройка file звязаныя з прызначэннем перыферыйнага ўводу-вываду IC |
ht32fxxxxxx_01_it.c | Праграму абслугоўвання перапынкаў file |
галоўны.с | Асноўны зыходны код праграмы |
\\прыкладанне\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Пакетныя скрыпты для стварэння праекта files |
_ProjectSource.ini | Ініцыялізацыя file для дадання зыходнага кода ў праекты |
ht32_board_config.h | Настройка file звязаныя з прызначэннем перыферыйнага ўводу-вываду IC |
ht32fxxxxxx_01_it.c | Праграму абслугоўвання перапынкаў file |
галоўны.с | Зыходны код асноўнай праграмы |
uart_bridge.h uart_bridge.c | Загаловак моста UART file і зыходны код file |
\\ўтыліты\прамежкавае ПЗ | |
uart_module.h*3 uart_module.c*3 | Загаловак API file і зыходны код file |
\\камунальныя\агульныя | |
ringbuffer.h ring_buffer.c | Загаловак кальцавога буфера праграмнага забеспячэння file і зыходны код file |
Заўвага:
- У «UART_Module_Example» код прыкладання, аперацыі чытання і запісу API выконваюцца ў рэжыме замыкання, звярніцеся да «Выкарыстанне API Examples” для больш падрабязнай інфармацыі.
- У кодзе прыкладання «UART_Bridge» актываваны два каналы UART, UART CH0 і UART CH1, і паміж двума прыладамі UART рэалізаваны карыстацкі пратакол сувязі праз структуры COMMAND. Для атрымання дадатковай інфармацыі звярніцеся да «Выкарыстанне API Exampлес».
- Код прыкладання павінен выкарыстоўваць uart_module.c/h files, якія патрабуюць версіі бібліятэкі прашыўкі. Патрабаванне можа час ад часу змяняцца ў залежнасці ад абнаўлення. Каб пацвердзіць патрабаванні да бягучай версіі бібліятэкі прашыўкі, звярніцеся да змесціва праверкі залежнасцей, выканаўшы пошук па ключавым слове «Праверка залежнасцей» у main.c file. Калі версія бібліятэкі прашыўкі не адпавядае патрабаванням, загрузіце апошнюю версію па спасылцы ў раздзеле «Бібліятэка прашыўкі».
Архітэктура API
Кожны API мае важны параметр CH, які з'яўляецца каналам UART. Гэта вызначае, якім каналам UART трэба кіраваць. У цяперашні час падтрымліваецца да чатырох каналаў UART, таму чатыры пастаянныя сімвалы вызначаюцца наступным чынам. Яны выкарыстоўваюцца ў якасці параметра CH, які забяспечвае API аснову для кіравання.
- UARTM_CH0: уваходны параметр – кіраванне або канфігурацыя UART CH0
- UARTM_CH1: уваходны параметр – кіраванне або канфігурацыя UART CH1
- UARTM_CH2: уваходны параметр – кіраванне або канфігурацыя UART CH2
- UARTM_CH3: уваходны параметр – кіраванне або канфігурацыя UART CH3
Месца ў памяці не будзе марнавацца, калі выкарыстоўваецца толькі адзін канал UART. Гэта звязана з тым, што можна задаць колькасць падтрымоўваных каналаў UART, і нявыкарыстаны код канала UART будзе выдалены прэпрацэсарам для павелічэння даступнай памяці. Архітэктура API паказана ў Малюнак 9.
Малюнак 9. Блок-схема архітэктуры API
Кожны API складаецца з чатырох груп налад або элементаў кіравання, звязаных з каналам UART, так што карыстальнікам трэба толькі ўвесці патрэбны параметр CH. Каб наладзіць адпаведны API, патрабуецца толькі дадатковая табліца базавых параметраў канфігурацыі UART са структурнай формай USART_InitTypeDef. API будзе рэалізоўваць базавую канфігурацыю UART у адпаведнасці са зместам параметраў у табліцы. Звярніцеся да раздзела «Апісанне API», каб знайсці табліцу структуры базавай канфігурацыі UART.
Файл uart_module.c/.h fileзмяшчаюць толькі перапыненне (CHx_IRQ) і табліцу стану (CHx Status) кожнага канала UART, у той час як усе параметры, неабходныя для сувязі UART, забяспечваюцца ht32_board_config.h. Параметры апаратнага забеспячэння ў файле ht32_board_config.h file паказаны ў табліцы ніжэй. Больш падрабязную інфармацыю можна знайсці ў раздзеле «Апісанне налад».
Да апаратных параметраў у ht32_board_config.h адносяцца налады ўводу/вываду і налады фізічнага порта UART, як паказана ніжэй.
Табліца 3. Сімвалы вызначэння ў ht32_board_config.h
Сімвал | Апісанне |
HTCFG_UARTM_CH0 | Імя фізічнага порта UART; напрыкладampфайл: UART0, UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | Вызначае імя порта TX для CH0; напрыкладampле: A, B, C… |
HTCFG_UARTM0_TX_GPIO_PIN | Вызначае нумар кантакту TX для CH0; напрыкладample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Вызначае імя порта RX для CH0; напрыкладampле: A, B, C… |
HTCFG_UARTM0_RX_GPIO_PIN | Вызначае нумар кантакту TX для CH0; напрыкладample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Вызначае памер буфера TX для CH0; напрыкладampЛе: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Вызначае памер буфера RX для CH0; напрыкладampЛе: 128 |
Каб змяніць канфігурацыю AFIO канала UART, звярніцеся да адпаведнай табліцы дадзеных прылады. У цяперашні час дзейнічаюць толькі азначэнні ўводу/вываду для UART CH0, паколькі толькі UART CH0 быў настроены ў ht32_board_config.h. Каб дадаць UART CH1~3, іх азначэнні ўводу/вываду трэба завяршыць, спасылаючыся на вызначэнне UART CH0 або звяртаючыся да раздзела «Мадыфікацыя налад і часта задаюць пытанні».
Ёсць тры асноўныя асаблівасці архітэктуры API:
- Падтрымліваецца да чатырох каналаў UART. Іх уваходныя параметры: UARTM_CH0, UARTM_CH1, UARTM_CH2 і UARTM_CH3.
- Колькасць каналаў UART можна задаць, і нявыкарыстаныя каналы не прывядуць да змяншэння даступнай памяці.
- Усе налады UART і азначэнні ўводу/вываду цалкам аддзеленыя ад API. Гэта павышае зручнасць кіравання значэннямі налад і памяншае магчымасць няправільных або адсутных налад.
Апісанне налады
У гэтым раздзеле будуць прадстаўлены налады параметраў у ht32_board_config.h і uart_module.h files.
- ht32_board_config.h: Гэта file выкарыстоўваецца для вызначэння кантактаў і адпаведных налад платы распрацоўкі, якія ўключаюць IP-канал UART (UART0, UART1, USART0…), які выкарыстоўваецца пачатковым наборам (SK), адпаведнае размяшчэнне кантактаў TX/RX і памер буфера TX/RX. Малюнак 10 паказвае змест налад пачатковага набору HT32F52352. У залежнасці ад функцыянальнай інтэграцыі распрацоўкі карыстальнікі могуць звярнуцца да раздзела «Прызначэнне кантактаў» у табліцы дадзеных выкарыстоўванай прылады, каб рэалізаваць вызначэнні кантактаў. Больш падрабязна аб мадыфікацыі налад будзе апісана ў раздзеле «Мадыфікацыя налад і часта задаюць пытанні».
Малюнак 10. Налады ht32_board_config.h (HT32F52352)
- uart_module.h: Гэта загаловак API file выкарыстоўваецца кодам прыкладання, які ўключае адпаведныя налады па змаўчанні, азначэнні функцый і г.д. Як паказана на малюнку 11, змесціва налад па змаўчанні можа быць перазапісана знешнімі канфігурацыямі, такімі як налады ў ht32_board_config.h file.
Малюнак 11. Налады па змаўчанні ў uart_module.h
Апісанне API
- Апісанне тыпу дадзеных кода праграмы.
- USART_InitTypeDef
Гэта базавая структура канфігурацыі UART, якая складаецца з канфігурацый BaudRate, WordLength, StopBits, Parity і Mode, як паказана ніжэй.Пераменная Імя Тып Апісанне USART_BaudRate u32 Хуткасць перадачы дадзеных UART USART_WordLength u16 Даўжыня слова сувязі UART: 7, 8 або 9 біт USART_StopBits u16 Даўжыня стоп-біта сувязі UART: 1 або 2 біта Парытэт USART u16 Цотнасць сувязі UART: цотнасць, няцотнасць, адзнака, прабел або адсутнасць цотнасці USART_Mode u16 рэжым сувязі UART; API падтрымлівае толькі звычайны рэжым
- USART_InitTypeDef
- Перад выкарыстаннем функцый API выканайце асноўную канфігурацыю UART у галоўнай праграме. Базавая канфігурацыя UART для гэтага кода прыкладання паказана на малюнку 12. Тут хуткасць перадачы ў бодах роўная 115200 біт/с, даўжыня слова — 8 біт, даўжыня стоп-біта — 1 біт, і цотнасці няма.
Малюнак 12. Базавая канфігурацыя UART
- На малюнку 13 паказаны функцыі API, заяўленыя ў uart_module.h file. Наступныя табліцы тлумачаць функцыі, уваходныя параметры і выкарыстанне функцый API.
Малюнак 13. Дэкларацыі функцый API у uart_module.h
Імя | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Функцыя | Ініцыялізацыя модуля UART | |
Увод | CH | Канал UART |
pUART_Init | Паказальнік структуры базавай канфігурацыі UART | |
uRxTimeOutValue | Значэнне тайм-аўту UART RX FIFO. Калі RX FIFO атрымае новыя даныя, лічыльнік будзе скінуты і перазапушчаны. Як толькі лічыльнік дасягне зададзенага значэння тайм-аўту і адпаведнае перапыненне тайм-аўту будзе ўключана, будзе згенеравана перапыненне тайм-аўту. | |
Выкарыстанне | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Выканаць базавую канфігурацыю UART//Канфігурацыю USART_InitStructure глядзіце на малюнку 12 |
Імя | u32 UARTM_WriteByte(u32 CH, u8 uData) | |
Функцыя | Аперацыя запісу байта модуля UART (TX) | |
Увод | CH | Канал UART |
uData | Дадзеныя, якія трэба запісаць | |
Выхад | ПОСПЕХ | Паспяховы |
ПАМЫЛКА | Не атрымалася | |
Выкарыстанне | UARTM_WriteByte(UARTM_CH0, 'A'); //UART запісвае 1 байт – 'A' |
Імя | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength) | |
Функцыя | Аперацыя запісу модуля UART (TX) | |
Увод | CH | Канал UART |
pBuffer | Паказальнік буфера | |
uLength | Даўжыня даных для запісу | |
Выхад | ПОСПЕХ | Паспяховы |
ПАМЫЛКА | Не атрымалася | |
Выкарыстанне | u8 Test[] = “Гэта тэст!\r\n”; UARTM_Write(UARTM_CH0, Тэст, sizeof(Тэст) -1); //UART запісвае дадзеныя pBuffer |
Імя | u32 UARTM_ReadByte(u32 CH, u8 *pData) | |
Функцыя | Аперацыя чытання байта модуля UART (RX) | |
Увод | CH | Канал UART |
pData | Адрас для размяшчэння прачытаных даных | |
Выхад | ПОСПЕХ | Паспяховы |
ПАМЫЛКА | Збой (няма даных) | |
Выкарыстанне | u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Калі UARTM_ReadByte() вяртае SUCCESS, то UART запісвае гэты байт даных |
Імя | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength) | |
Функцыя | Аперацыя чытання модуля UART (RX) | |
Увод | CH | Канал UART |
pBuffer | Паказальнік буфера | |
uLength | Даўжыня даных для чытання | |
Выхад | Чытайце падлік | Даўжыня дадзеных была прачытана |
Выкарыстанне | u8 Тэст2[10]; u32 Лён; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() счытвае 5 байтаў даных і захоўвае даныя ў Test2 і прызначае колькасць прачытаных байтаў да Len // Запіс дадзеных, атрыманых з Test2 |
Імя | u32 UARTM_GetReadBufferLength(u32 CH) | |
Функцыя | Атрымаць даўжыню буфера чытання (RX) | |
Увод | CH | Канал UART |
Выхад | uLength | Чытанне даўжыні буфера |
Выкарыстанне | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Ініцыялізацыя модуля UART while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Пачакайце, пакуль UARTM_ReadBuffer атрымае 5 байт дадзеных |
Імя | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Функцыя | Атрымаць даўжыню буфера запісу (TX) | |
Увод | CH | Канал UART |
Выхад | uLength | Даўжыня буфера запісу |
Імя | u8 UARTM_IsTxFinished(u32 CH) | |
Функцыя | Атрымаць статус TX | |
Увод | CH | Канал UART |
Выхад | ПРАЎДА | Статус перадачы: скончана |
ХЛУСНЯ | Статус перадачы: не завершана | |
Выкарыстанне | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 патрабуецца пакуль (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Гэты API можна выкарыстоўваць для праверкі стану перадачы, як паказана вышэй; пачакайце, пакуль UARTM_WriteByte() API не скончыцца, г.зн. статус TX будзе TRUE, а затым працягвайце наступныя дзеянні.//Абмежаванне дадаецца, таму што гэтая функцыя не была дададзена, пакуль нумар версіі SVN у uart_module.c не роўны 525. |
Імя | пустата UARTM_DiscardReadBuffer(u32 CH) | |
Функцыя | Адкіньце дадзеныя ў буферы чытання | |
Увод | CH | Канал UART |
Выкарыстанне API, напрampлес
У гэтым раздзеле будзе прадэманстравана запіс і чытанне API exampфайлы кода прыкладання “Module_UART” з выкарыстаннем працэсу ініцыялізацыі і “UART_Module_Example» працэс кода прыкладання. Перад выкарыстаннем API карыстальнікі павінны ўключыць загаловак API file у асноўны зыходны код праграмы file (#include “middleware/uart_module.h”).
Як паказана на малюнку 14, пры ўваходзе ў працэс ініцыялізацыі спачатку вызначыце структуру базавай канфігурацыі UART. Затым наладзьце члены структуры базавай канфігурацыі UART, уключаючы BaudRate, WordLength, StopBits, Parity і Mode. Нарэшце, выклічце функцыю ініцыялізацыі API, завяршэнне якой азначае канец працэсу ініцыялізацыі. Пасля гэтага карыстальнікі могуць працягваць аперацыі запісу і чытання на аснове прадусталяванай базавай канфігурацыі UART.
Малюнак 14. Блок-схема ініцыялізацыі
«UART_Module_Example” код прыкладання дэманструе аперацыі чытання і запісу API у цыкле. Блок-схема для гэтага паказана на малюнку 15. Выкарыстаныя функцыі API ўключаюць UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() і UARTM_GetReadBufferLength(). Іх апісанне прыведзена ў раздзеле «Апісанне API».
Малюнак 15. Блок-схема запісу і чытання Exampлес
У папцы «Module_UART» ёсць яшчэ адзін код прыкладання «UART_Bridge», звязаны з ім file апісанне ўводзіцца ў раздзеле «Структура каталога». Код прыкладання «UART_Bridge» актывуе два каналы UART, UART CH0 і UART CH1, а затым наладжвае пратакол сувязі паміж двума прыладамі UART праз структуры COMMAND, gCMD1 і gCMD2. Яны вызначаны ў uart_bridge.c, як паказана ніжэй. UARTBridge_CMD1TypeDef gCMD1:
Пераменная Імя | Тып | Апісанне |
uHeader | u8 | Загаловак |
uCmd | u8 | Камандаванне |
uData [3] | u8 | даныя |
UARTBridge_CMD2TypeDef gCMD2:
Пераменная Імя | Тып | Апісанне |
uHeader | u8 | Загаловак |
uCmdA | u8 | Каманда А |
uCmdB | u8 | Каманда Б |
uData [3] | u8 | даныя |
У кодзе прыкладання «UART_Bridge» выкарыстоўвайце gCMD1 для атрымання даных у выглядзе каманднага пакета, а затым іх аналізу. Затым у адпаведнасці з настроеным пратаколам сувязі ўсталюйце gCMD2 у якасці пакета адказу і перадайце яго. Наступны эксampфайл каманднага пакета gCMD1) і пакета адказу (gCMD2). Камандны пакет (UARTBridge_CMD1TypeDef gCMD1):
Байт 0 | Байт 1 | Байт 2 ~ Байт 4 |
uHeader | uCmd | uData [3] |
«А» | «1» | «x, y, z» |
Пакет адказу (UARTBridge_CMD2TypeDef gCMD2):
Байт 0 | Байт 1 | Байт 2 | Байт 3 ~ Байт 5 |
uHeader | uCmdA | uCmdB | uData [3] |
«Б» | "а" | «1» | «x, y, z» |
Прафесія рэсурсаў
У якасці прыкладу бяру HT32F52352ample, рэсурсы, якія займае модуль UART, паказаны ніжэй.
HT32F52352 | |
Памер ПЗУ | 946 байты |
Памер аператыўнай памяці | 40*1 + 256*2 Байты |
Заўвага:
- Глабальныя зменныя, уключаючы сцягі і статус для аднаго канала, займаюць 40 байт аператыўнай памяці.
- Гэта для ўмоў, калі выкарыстоўваецца адзін канал і памер буфера TX/RX складае 128/128 байт. Памер буфера можа быць усталяваны ў адпаведнасці з патрабаваннямі прыкладання.
Табліца 4. Занятасць рэсурсам кода прыкладання
- Асяроддзе кампіляцыі: MDK-Arm V5.36, ARMCC V5.06 абнаўленне 7 (зборка 960)
- Варыянт аптымізацыі: Узровень 2 (-O2)
Інструкцыя па ўжыванні
У гэтым раздзеле будзе прадстаўлена падрыхтоўка навакольнага асяроддзя для кода прыкладання «Module_UART», а таксама этапы кампіляцыі і тэставання.
Экалагічная падрыхтоўка
Апаратнае і праграмнае забеспячэнне, неабходнае для кода прыкладання "Module_UART", пералічана ніжэй.
Табліца 5. Апаратная/праграмная падрыхтоўка навакольнага асяроддзя
Апаратнае/праграмнае забеспячэнне | Граф | Заўвага |
Стартавы камплект | 1 | У гэтай нататцы па дадатку ў якасці прыкладу выкарыстоўваецца пачатковы набор HT32F52352ample |
Кабель USB | 1 | Micro USB, падлучаны да ПК |
Код прыкладання | — | Шлях загрузкі, file і канфігурацыя каталогаў прадстаўлены ў раздзеле «Загрузка і падрыхтоўка рэсурсаў». Шлях: «\\application\Module_UART\UART_Module_Exampле» |
Тэра тэрмін | — | Звярніцеся да раздзела «Праграмнае забеспячэнне тэрмінала». |
Keil IDE | — | Keil uVision V5.xx |
Спачатку выкарыстоўвайце пачатковы набор HT32F52352 у спалучэнні з функцыяй віртуальнага COM-порта (VCP) e-Link32 Lite для ўвядзення прыкладання UART. Гэта патрабуе выканання наступнай экалагічнай падрыхтоўкі:
- На плаце ёсць два інтэрфейсу USB. Выкарыстоўвайце кабель USB для падлучэння ПК і інтэрфейсу eLink32 Lite на плаце, як паказана на малюнку 16-(a).
- Паколькі код прыкладання павінен выкарыстоўваць функцыю віртуальнага COM-порта (VCP) e-Link32 Lite, упэўніцеся, што PAx*2 і DAP_Tx UART Jumper-J2*1 былі замкнуты з дапамогай перамычкі. Размяшчэнне J2 паказана на малюнку 16-(b).
Заўвага
- J2 у пачатковым камплекце мае два варыянты: замыканне PAx і DAP_Tx або замыканне PAx і RS232_Tx. Звярніцеся да кіраўніцтва карыстальніка Starter Kit для падрабязнай налады функцый.
- Размяшчэнне штыфта MCU UART RX на розных стартавых наборах адрозніваецца. Гэты былыample выкарыстоўвае PAx для абазначэння штыфта RX.
Малюнак 16. Блок-схема пачатковага набору HT32
Цяпер выкарыстоўвайце мэтавую плату карыстальніка ў спалучэнні з функцыяй віртуальнага COM-порта (VCP) e-Link32 Pro для ўвядзення прыкладання UART. Гэта патрабуе выканання наступнай экалагічнай падрыхтоўкі:
- Адзін бок e-Link32 Pro падлучаны да ПК з дапамогай кабеля Mini USB, а другі — да мэтавай платы карыстальніка праз 10-бітны шэры кабель. Злучэнне паміж інтэрфейсамі SWD кабеля і мэтавай платы рэалізавана з дапамогай ліній Dupont, як паказана на малюнку 17-(a).
- Кантакты паслядоўнай сувязі e-Link32 Pro - Pin#7 VCOM_RXD і Pin#8-VCOM_TXD. Яны павінны быць падлучаны да кантактаў TX і RX мэтавай платы карыстальніка, як паказана на малюнку 17-(b).
Малюнак 17. Блок-схема мэтавай платы e-Link32 Pro + карыстальніка
Складанне і тэст
Гэты раздзел будзе змяшчаць «application\Module_UART\UART_Module_Example” як выклample, каб пазнаёміць з працэсамі кампіляцыі і тэставання. Перад гэтым пераканайцеся, што ўсе падрыхтоўчыя дзеянні, апісаныя ў папярэднім раздзеле, выкананы і што праграмнае забеспячэнне тэрмінала Tera Term загружана.
Падрабязныя крокі аперацыі прыведзены ніжэй.
Крок 1. Тэст пры ўключэнні
Наладзьце апаратнае асяроддзе, як апісана ў папярэднім раздзеле. Пасля ўключэння харчавання святлодыёдны індыкатар сілкавання D9 у левым ніжнім куце стартавага набору загарыцца. Святлодыёд D1 USB на e-Link32 Lite уверсе справа загарыцца пасля завяршэння пераліку USB. Калі D1 не гарыць праз працяглы перыяд часу, праверце, ці можна звязвацца праз кабель USB. Калі няма, выдаліце яго і ўстаўце зноў.
Крок 2. Стварыце праект
Адкрыйце прыкладанне\Module_UART\UART_Module_Example, націсніце на файл _CreateProject.bat file каб стварыць праект, як паказана на малюнку 18. Паколькі ў гэтай нататцы па дадатку выкарыстоўваецца пачатковы набор HT32F52352, адкрыйце праект Keil IDE «Project_52352.uvprojx», які знаходзіцца ў папцы MDK_ARMv5.
Малюнак 18. Выканайце _CreateProject.bat для стварэння праекта
Крок 3. Кампіляцыя і праграмаванне
Пасля адкрыцця праекта спачатку націсніце «Стварыць» (або выкарыстоўвайце цэтлік «F7»), затым націсніце «Спампаваць» (або выкарыстоўвайце цэтлік «F8»). Пасля гэтага вынікі зборкі і загрузкі будуць адлюстраваны ў акне Вывад зборкі. Глядзіце малюнак 19.
Малюнак 19. Вынікі зборкі і загрузкі
Крок 4. Адкрыйце праграмнае забеспячэнне Tera Term і наладзьце паслядоўны порт
Адкрыйце праграмнае забеспячэнне Tera Term і COM-порт. Звярніце ўвагу на тое, правільны ці не правільны нумар COM-порта, створаны Стартавым камплектам. Затым націсніце «Настройка >> Паслядоўны порт», каб увайсці ў інтэрфейс канфігурацыі. Канфігурацыя інтэрфейсу UART кода прыкладання «Module_UART» апісана ў раздзеле «Праграмнае забеспячэнне тэрмінала». Вынік наладкі паказаны на малюнку 20.
Малюнак 20. Вынік наладкі паслядоўнага порта Tera Term
Крок 5. Скіньце сістэму і праверце
Націсніце клавішу скіду SK – B1 Reset. Пасля гэтага надпіс "ABCThis is test!" паведамленне будзе
перадаюцца праз API і будуць адлюстроўвацца ў акне Tera Term, як паказана на малюнку 21. Што тычыцца функцыі атрымання, пры ўводзе даных у акно Tera Term для вызначэння даўжыні буфера прыёму будзе выкарыстоўвацца адпаведны API. Калі даныя, атрыманыя ПК, дасягнуць 5 байт, атрыманыя 5 байт даных будуць адпраўлены паслядоўна. Як паказана на малюнку 22, паслядоўна ўводзяцца даныя «1, 2, 3, 4, 5», якія прымаюцца і вызначаюцца праз API. Пасля гэтага пасля пяці ўводаў будуць выведзены даныя «1, 2, 3, 4, 5».
Малюнак 21. Функцыянальны тэст кода прыкладання «Module_UART» - перадача
Малюнак 22. Функцыянальны тэст кода прыкладання «Module_UART» - Атрыманне
Інструкцыя па перасадцы
У гэтым раздзеле будзе апісана, як інтэграваць API у праекты карыстальніка.
Крок 1. Дадайце uart_module.c file у праект. Пстрыкніце правай кнопкай мышы на тэчцы Карыстальнік. Выберыце «Дадаць існуючы Files у групу «Карыстальнік»…», затым выберыце uart_module.c file і націсніце «Дадаць», як паказана на малюнку 23. Звярніцеся да падзелу «Структура каталога» file апісанне шляху.
Малюнак 23. Дадайце uart_module.c File да праекта
Крок 2. Дадайце ring_buffer.c file у праект. Пстрыкніце правай кнопкай мышы на тэчцы Карыстальнік. Выберыце «Дадаць існуючы Files у групу «Карыстальнік»…», затым выберыце ring_buffer.c file і націсніце «Дадаць», як паказана на малюнку 24.\ Звярніцеся да раздзела «Структура каталога» для file апісанне шляху.
Малюнак 24. Дадайце ring_buffer.c File да праекта
Крок 3. Уключыце загаловак API file у пачатак main.c, як паказана на малюнку 25. (Ext: #include “middleware/uart_module.h”)
Малюнак 25. Уключыць загаловак API File да галоўнай.с
Крок 4. Рэалізуйце налады, неабходныя для сувязі UART, выкарыстоўваючы ht32_board_config.h file. Гэта падрабязна апісана ў раздзелах «Апісанне налад» і «Мадыфікацыя налад і часта задаюць пытанні».
Мадыфікацыя налад і FAQ
У гэтым раздзеле будзе азнаёмлена з тым, як змяніць налады UART, і растлумачаны некаторыя агульныя пытанні, якія ўзнікаюць падчас выкарыстання.
Змяніць прызначэнне штыфта UART
- Спасылаючыся на раздзел «Прызначэнне кантактаў» табліцы дадзеных HT32F52352, знайдзіце табліцу адлюстравання альтэрнатыўных функцый, у якой пералічаны функцыі AFIO для тыпу прылады. Кантакты UART можна знайсці ў слупку «AF6 USART/UART», як паказана на малюнку 26.
Малюнак 26. Табліца адлюстравання альтэрнатыўных функцый HT32F52352
- Гэты крок дапаможа карыстальнікам знайсці адпаведныя штыфты UART з дапамогай табліцы вышэй. HT32F52352 example выкарыстоўвае USART1 як канал па змаўчанні. Тут кантакты TX і RX з'яўляюцца USR1_TX і USR1_RX і размешчаны на PA4 і PA5 адпаведна. Малюнак 27 паказвае адпаведнасць кантактаў, а таксама вызначэння кантактаў у «ht32_board_config.h». Пустыя палі «Пакет» у табліцы прызначэння кантактаў азначаюць, што ў гэтым пакеце няма адпаведных GPIO. Каб змяніць кантакты UART, знайдзіце мэтавыя месцы кантактаў і перавызначце кантакты з дапамогай «ht32_board_config.h» file.
Малюнак 27. Адпаведнасць Pin і змяненне налад
Дадайце канал UART
У якасці прыкладу бяру HT32F52352 HTCFG_UARTM_CH1ample, тут апісана, як дадаць новы канал UART.
Змяніце ht32_board_config.h file
Спасылаючыся на главу табліцы дадзеных HT32F52352 «Прызначэнне кантактаў», знайдзіце табліцу адлюстравання альтэрнатыўных функцый, у якой пералічаны функцыі AFIO для тыпу прылады. Паколькі USART1 выкарыстоўваўся як HTCFG_UARTM_CH0, нядаўна дададзены HTCFG_UARTM_CH1 можа выбраць USART0. Тут кантакты TX і RX размешчаны на PA2 і PA3 адпаведна, як паказана ў верхняй палове малюнка 28. Адпаведныя мадыфікацыі рэалізаваны з дапамогай радкоў кода 120~126 у ht32_board_config.h, як паказана чырвоным пункцірам на малюнку 28.
Малюнак 28. Дадайце канал UART
FAQ
Q: На кроку 5 раздзела Кампіляцыя і тэст функцыянальны тэст перадачы з'яўляецца нармальным. Тут «ABCThis is test!» паведамленне было паспяхова адлюстравана, аднак для функцыі атрымання, чаму пяць значэнняў уводу не вяртаюцца і не адлюстроўваюцца?
A: Праверце, ці былі кантакты MCU UART RX і DAP_Tx UART Jumper-J2 замкнуты перамычкай. Паколькі код прыкладання “Module_UART” павінен выкарыстоўваць віртуальны COM-порт (VCP) e-Link32 Lite, налада кароткага замыкання павінна быць прыменена да двух левых кантактаў UART Jumper-J2, як паказана на малюнку 29.
Малюнак 29. Налада перамычкі UART-J2
Пытанне: Пасля пры выкананні «Build» (або цэтліка «F7») з'яўляецца паведамленне пра памылку, якое паказвае, што версія бібліятэкі прашыўкі старэйшая за тую, якая патрабуецца? Глядзіце малюнак 30.
A: Рэалізацыя кода прыкладання "Module_UART" павінна ўключаць uart_module.c/h files, які патрабуе пэўнай версіі бібліятэкі прашыўкі. Калі з'яўляецца такое паведамленне пра памылку, гэта азначае, што выкарыстоўваная ў цяперашні час бібліятэка прашыўкі з'яўляецца старой версіяй. Таму неабходна спампаваць апошнюю версію па спасылцы ў раздзеле «Бібліятэка прашыўкі».
Малюнак 30. Паведамленне пра памылку версіі бібліятэкі прашыўкі
Заключэнне
У гэтым дакуменце прадстаўлены асноўныя ўводзіны, каб дапамагчы карыстальнікам лепш зразумець код прыкладання "Module_UART" і пратакол сувязі UART. Затым ішла загрузка рэсурсу і падрыхтоўка. У раздзеле Функцыянальнае апісанне прадстаўлены file структура каталогаў, архітэктура API, апісанне API і выкарыстанне API, напрampлес. У раздзеле «Інструкцыі па выкарыстанні» дэманстравалася падрыхтоўка, кампіляцыя і тэставанне кода прыкладання «Module_UART» у навакольным асяроддзі. Тут таксама прадстаўлены інструкцыі па трансплантацыі кода і наладзе мадыфікацыі, а таксама растлумачаны некаторыя агульныя праблемы, якія могуць узнікнуць. Усё гэта ў сукупнасці дазволіць карыстальнікам хутка зразумець, як выкарыстоўваць API, і ў далейшым скараціць колькасць часу, каб пачаць.
Даведачны матэрыял
Для атрымання дадатковай інфармацыі звярніцеся да Holtek webсайт: www.holtek.com
Інфармацыя аб версіях і мадыфікацыях
Дата | Аўтар | Вызваленне | Інфармацыя аб мадыфікацыі |
2022.04.30 | 蔡期育 (Чы-Ю Цай) | V1.00 | Першая версія |
Адмова ад адказнасці
Уся інфармацыя, гандлёвыя маркі, лагатыпы, графіка, відэа, аўдыёкліпы, спасылкі і іншыя элементы, якія з'яўляюцца на гэтым webсайт ("Інфармацыя") прызначаны толькі для даведкі і могуць быць зменены ў любы час без папярэдняга паведамлення і па меркаванні Holtek Semiconductor Inc. і звязаных з ёй кампаній (далей "Holtek", "кампанія", "нас", " мы" або "наш"). У той час як Holtek імкнецца забяспечыць дакладнасць гэтай інфармацыі webсайта, Holtek не дае відавочных або пэўных гарантый на дакладнасць інфармацыі. Кампанія Holtek не нясе адказнасці за любыя недакладнасці або ўцечку.
Holtek не нясе адказнасці за любыя пашкоджанні (уключаючы, але не абмяжоўваючыся імі, кампутарныя вірусы, сістэмныя праблемы або страту даных), якія б узніклі пры выкарыстанні або ў сувязі з выкарыстаннем гэтага webсайт любым бокам. У гэтай вобласці могуць быць спасылкі, якія дазваляюць наведаць webсайты іншых кампаній.
Гэтыя webсайты не кантралююцца Holtek. Holtek не нясе ніякай адказнасці і гарантый за любую інфармацыю, якая адлюстроўваецца на такіх сайтах. Гіперспасылкі на інш webсайты на ваш страх і рызыка.
Абмежаванне адказнасці
Holtek Limited ні ў якім разе не нясе адказнасці перад любым іншым бокам за любыя страты або пашкоджанні, якія б ні былі выкліканыя прама ці ўскосна ў сувязі з вашым доступам да або выкарыстаннем гэтага webсайт, змесціва на ім або любыя тавары, матэрыялы або паслугі.
Прымяняльнае права
Адмова ад адказнасці, якая змяшчаецца ў webсайт рэгулюецца і тлумачыцца ў адпаведнасці з законамі Кітайскай Рэспублікі. Карыстальнікі будуць падпарадкоўвацца невыключнай юрысдыкцыі судоў Кітайскай Рэспублікі.
Абнаўленне адмовы ад адказнасці
Holtek пакідае за сабой права абнаўляць Адмову ад адказнасці ў любы час з папярэднім паведамленнем або без яго, усе змены ўступаюць у сілу неадкладна пасля публікацыі на webсайт.
Дакументы / Рэсурсы
![]() |
Заўвага па ўжыванні HOLTEK HT32 MCU UART [pdfКіраўніцтва карыстальніка HT32 MCU, Заўвага па ўжыванні UART, Заўвага па ўжыванні HT32 MCU UART, Заўвага па ўжыванні, HT32, Заўвага па ўжыванні MCU UART, Заўвага па ўжыванні HT32 MCU UART |