Забелешка за апликацијата HOLTEK HT32 MCU UART Упатство за употреба
Вовед
Универзалниот асинхрон ресивер/предавател – UART е широко користен интерфејс за сериски пренос кој обезбедува флексибилен асинхрон целосно дуплекс пренос на податоци. Кодот на апликацијата „Module_UART“ даден во оваа апликациска белешка користи TX/RX прекини со софтверски прстенести бафери за да имплементира едноставни функции за пренос/примање UART преку API, чии сродни функции се опишани подолу. Ова ќе го поедностави целиот процес на пренос на податоци и ќе им овозможи на корисниците брзо да ги разберат и имплементираат UART комуникациските апликации.
- Функции за пренос/примање: читање бајти, запишување бајти, читање во бафер, запишување во бафер итн.
- Функции на статус: добијте ја должината на баферот, статусот TX, итн.
Овој документ прво ќе го воведе протоколот за комуникација 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 е прикажан UART 8-битен податочен пакет без бит за паритет.
Слика 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 колото, истата брзина на пренос/примање на сериски податоци, која е позната како брзина на бауд, мора да се дефинира помеѓу предавателот и приемникот за да се имплементира пренос без грешки. Стапката на бауд се дефинира со бројот на префрлени битови во секунда, во bps (бит во секунда). Некои стандардни и најчесто користени бауд стапки се 4800bps, 9600bps, 19200bps, 115200bps, итн. Соодветното време потребно за пренос на еден бит за податоци е прикажано подолу.
Табела 1. Стапка на бауд наспроти 1-битно време на пренос
Baud Rate | 1-битен пренос Време |
4800bps | 208.33µs |
9600bps | 104.16µs |
19200bps | 52.08µs |
115200bps | 8.68µs |
Преземање и подготовка на ресурси
Ова поглавје ќе го претстави кодот на апликацијата и користената софтверска алатка, како и како да го конфигурирате директориумот и file патека.
Библиотека на фирмвер
Прво, уверете се дека библиотеката на фирмверот Holtek HT32 е преземена пред да го користите кодот на апликацијата. Врската за преземање е прикажана подолу. Овде има две опции, HT32_M0p_Vyyyymmdd.zip за серијата HT32F5xxxx и HT32_M3_Vyyyymmdd.zip за серијата HT32F1xxxx. Преземете и отпакувајте го саканиот file.
Патентот file содржи неколку папки кои можат да се класифицираат како Document, Firmware Library, Tools и други ставки, чија патека за поставување е прикажана на Слика 5. Зип на библиотеката на фирмверот HT32 file со а file името на HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip се наоѓа под папката Firmware_Library.
Слика 5. HT32_M0p_Vyyyymmdd.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 треба да се постават на правилната патека пред да се започне со компилацијата. Поштенски код на апликацијата file обично содржи една или повеќе папки, како што се апликација и библиотека, како што е прикажано на Слика 7. Ставете ја папката со апликации под коренскиот директориум на библиотеката на фирмверот HT32 за да го комплетирате file конфигурација на патеката, како што е прикажано на слика 8. Алтернативно, отпакувајте го кодот на апликацијата и библиотеката на фирмверот HT32 истовремено на истата патека за да ги постигнете истите резултати од конфигурацијата.
Слика 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Содржини
Слика 8. Патека за декомпресија
Терминален софтвер
Кодот на апликацијата може да пренесува пораки преку COM портот за да се имплементира избор на функција или приказ на статус. Ова бара од страната на домаќинот однапред да го инсталира терминалниот софтвер. Корисниците можат да изберат соодветен софтвер за поврзување или да користат бесплатен лиценциран софтвер како што е Tera Term. Во кодот на апликацијата, каналот UART е конфигуриран со должина на збор од 8-бита, без паритет, 1 стоп бит и брзина на бауд од 115200bps.
Функционален опис
Ова поглавје ќе обезбеди функционален опис за кодот на апликацијата, вклучувајќи информации за структурата на директориумот, архитектурата на API, описот на поставките итн.
Структура на директориумот
Кодот на апликацијата file содржи папка со апликација. Следниот слој е папката „Module_UART“ која содржи две апликативни програми, „UART_Module_Example“ и „UART_Bridge“. Релевантните fileсе наведени и опишани подолу.
Табела 2. Структура на директориумот на кодот на апликацијата
Папка / File Име | Опис |
\\апликација\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Сериски скрипти за креирање проект files |
_ProjectSource.ini | Иницијализација file за додавање изворен код на проекти |
ht32_board_config.h | Поставување file поврзано со доделување на IC периферни I/O |
ht32fxxxxx_01_it.c | Прекинете ја сервисната програма file |
главната.в | Изворниот код на главната програма |
\\апликација\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Сериски скрипти за креирање проект files |
_ProjectSource.ini | Иницијализација file за додавање изворен код на проекти |
ht32_board_config.h | Поставување file поврзано со доделување на IC периферни I/O |
ht32fxxxxx_01_it.c | Прекинете ја сервисната програма file |
главната.в | Изворниот код на главната програма |
урт_мост.ч урт_мост.в | Заглавие на мостот UART file и изворниот код file |
\\ utilities\ Middleware | |
uart_module.ч*3 uart_module.в*3 | Заглавие на API file и изворниот код file |
\\ комунални услуги\ заеднички | |
ringbuffer.h ring_buffer.в | Заглавие на тампон за прстен на софтверот file и изворниот код file |
Забелешка:
- Во „UART_Module_Example“ кодот на апликацијата, операциите за читање и запишување на API се изведуваат на вратен начин, погледнете во „Употреба на API Examples“ дел за повеќе детали.
- Во кодот на апликацијата „UART_Bridge“, се активираат два UART канали, UART CH0 и UART CH1, а приспособениот протокол за комуникација преку COMMAND структурите се имплементирани помеѓу двата UART уреди. За повеќе информации, погледнете го „API Usage Examples“ делот.
- Кодот на апликацијата треба да го користи uart_module.c/h fileкои имаат потреба од верзија на библиотеката на фирмверот. Барањето може да се менува одвреме-навреме според ажурирањето. За да го потврдите тековното барање за верзија на библиотеката на фирмверот, погледнете ја содржината за проверка на зависност со пребарување на клучниот збор „Проверка на зависност“ во 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 files ги содржи само прекините (CHx_IRQ) и статусната табела (CHx Статус) на секој 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; Прample: UART0, UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | Го дефинира името на портата на TX за CH0; ПрampЛе: А, Б, Ц… |
HTCFG_UARTM0_TX_GPIO_PIN | Го дефинира бројот на пиновите на TX за CH0; Прampле: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Го дефинира името на портата на RX за CH0; ПрampЛе: А, Б, Ц… |
HTCFG_UARTM0_RX_GPIO_PIN | Го дефинира бројот на пиновите на TX за CH0; Прampле: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Ја дефинира големината на баферот TX за CH0; ПрampЛе: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Ја дефинира големината на баферот RX за CH0; ПрampЛе: 128 |
За да ја измените AFIO конфигурацијата на каналот UART, погледнете го соодветниот лист со податоци на уредот. Во моментов само I/O дефинициите за UART CH0 стапуваат на сила бидејќи само UART CH0 е конфигуриран во ht32_board_config.h. За да додадете UART CH1~3, нивните I/O дефиниции треба да се пополнат со упатување на дефиницијата 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 се користи за дефиниции за пинови и соодветни поставки на таблата за развој, кои вклучуваат UART IP канал (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_Word Length u16 Должина на зборот за комуникација со UART: 7, 8 или 9 бита USART_StopBits u16 Должина на битот за стопирање на комуникацијата UART: 1 или 2 бита USART_Паритет u16 Паритет на комуникација на UART: парен, непарен, знак, празно место или без паритет USART_режим u16 UART режим на комуникација; API-ите поддржуваат само нормален режим
- USART_InitTypeDef
- Пред да ги користите функциите на API, пополнете ја основната конфигурација на UART во главната програма. Основната конфигурација на UART за овој код на апликацијата е прикажана на слика 12. Овде брзината на бауд е 115200 bps, должината на зборот е 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//Погледнете на Слика 12 за конфигурација на USART_InitStructure |
Име | 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 u Должина) | |
Функција | Операција за запишување на UART модул (TX) | |
Влез | CH | UART канал |
pBuffer | Бафер покажувач | |
u Должина | Должината на податоците што треба да се напишат | |
Излез | УСПЕХ | Успешно |
ГРЕШКА | Не успеа | |
Употреба | u8 Тест[] = „Ова е тест!\r\n“; UARTM_Write(UARTM_CH0, Тест, големина (Тест) -1); //UART запишува податоци pBuffer |
Име | u32 UARTM_ReadByte (u32 CH, u8 *pData) | |
Функција | Операција за читање бајти на UART модул (RX) | |
Влез | CH | UART канал |
pData | Адресата за поставување на прочитаните податоци | |
Излез | УСПЕХ | Успешно |
ГРЕШКА | Не успеа (нема податоци) | |
Употреба | u8 TempData; ако (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Ако UARTM_ReadByte() врати SUCCESS тогаш UART го запишува овој податочен бајт |
Име | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 u Должина) | |
Функција | Операција за читање на UART модул (RX) | |
Влез | CH | UART канал |
pBuffer | Бафер покажувач | |
u Должина | Должината на податоците што треба да се прочитаат | |
Излез | Број на прочитани | Должината на податоците е прочитана |
Употреба | u8 Тест2[10]; u32 Лен; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() чита 5 бајти податоци и складира податоци во Test2 и го доделува бројот на прочитани бајти до Лен//Напишете ги податоците добиени од Тест2 |
Име | u32 UARTM_GetReadBufferLength(u32 CH) | |
Функција | Добијте ја должината на баферот за читање (RX) | |
Влез | CH | UART канал |
Излез | u Должина | Прочитајте ја должината на баферот |
Употреба | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Иницијализирање на модулот UART додека (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Почекајте додека UARTM_ReadBuffer не добие 5 бајти податоци |
Име | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Функција | Добијте ја должината на баферот за запишување (TX) | |
Влез | CH | UART канал |
Излез | u Должина | Напишете ја должината на тампонот |
Име | u8 UARTM_IsTxFinished(u32 CH) | |
Функција | Добијте статус TX | |
Влез | CH | UART канал |
Излез | ВИСТИНА | TX статус: завршен |
НЕТОЧНО | TX статус: не е завршен | |
Употреба | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 потребно додека (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Овој API може да се користи за проверка на статусот на TX, како што е прикажано погоре; почекајте додека UARTM_WriteByte() API не заврши, т.е. TX статусот е TRUE, а потоа продолжете со следните дејства.//Се додава ограничување бидејќи оваа функција не е додадена додека бројот на верзијата SVN во uart_module.c не биде 525. |
Име | празнина UARTM_DiscardReadBuffer(u32 CH) | |
Функција | Отфрлете ги податоците во баферот за читање | |
Влез | CH | UART канал |
Употреба на API Прampлес
Овој дел ќе покаже API пишување и читање на прampдел од кодот на апликацијата „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. Графикон на тек на пишување и читање Прampлес
Постои уште еден код на апликацијата „UART_Bridge“ под папката „Module_UART“ чијшто е поврзан 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“ |
Занимање со ресурси
Земајќи го HT32F52352 како ексampле, ресурсите окупирани од UART модулот се прикажани подолу.
HT32F52352 | |
Големина на ROM | 946 бајти |
Големина на RAM меморија | 40*1 + 256*2 Бајти |
Забелешка:
- Глобалните променливи вклучувајќи знаменца и статус за еден канал зафаќаат 40 бајти RAM меморија.
- Ова е за состојба кога се користи еден канал и големината на баферот TX/RX е 128/128 бајти. Големината на баферот може да се постави според барањата на апликацијата.
Табела 4. Занимање со ресурси за код на апликација
- Околина за компилација: MDK-Arm V5.36, ARMCC V5.06 ажурирање 7 (изградба 960)
- Оптимизирај опција: Ниво 2 (-O2)
Упатство за употреба
Ова поглавје ќе ја претстави подготовката за животната средина за кодот на апликацијата „Module_UART“, како и чекорите за компилација и тестирање.
Подготовка на животната средина
Хардверот и софтверот потребни за кодот на апликацијата „Module_UART“ се наведени подолу.
Табела 5. Хардвер/софтвер Подготовка на животната средина
Хардвер/Софтвер | брои | Забелешка |
Почетен комплет | 1 | Оваа белешка за апликација го користи почетниот комплет HT32F52352 како прample |
USB кабел | 1 | Micro USB, поврзан со компјутер |
Код за апликација | — | Патеката за преземање, file и конфигурацијата на директориумот се воведени во делот „Преземање и подготовка на ресурси“.ampле “ |
Тера Термин | — | Погледнете во делот „Терминален софтвер“. |
Keil IDE | — | Keil uVision V5.xx |
Прво, користете го почетниот комплет HT32F52352 во комбинација со функцијата Виртуелна COM порта (VCP) на e-Link32 Lite за воведување на апликацијата UART. Ова бара да се спроведе следната еколошка подготовка:
- На плочката има два USB интерфејси. Користете го USB-кабелот за да го поврзете компјутерот и интерфејсот eLink32 Lite на плочката како што е прикажано на Слика 16-(а).
- Бидејќи кодот на апликацијата треба да ја користи функцијата e-Link32 Lite Virtual COM Port (VCP), проверете дали PAx*2 и DAP_Tx на UART Jumper-J2*1 се скратени со помош на скокач. Локацијата J2 е означена со Слика 16-(б).
Забелешка
- J2 на почетниот комплет има две опции, PAx и DAP_Tx shorted или PAx и RS232_Tx shorted. Погледнете во упатството за корисникот Starter Kit за деталните функции за поставување.
- Локацијата на пиновите на MCU UART RX на различни почетни комплети е различна. Овој ексample користи PAx за да го означи RX пинот.
Слика 16. Блок дијаграм за стартер комплет HT32
Сега користете ја корисничката целна табла во комбинација со функцијата Virtual COM Port (VCP) на e-Link32 Pro за воведување на апликацијата UART. Ова бара да се спроведе следната еколошка подготовка:
- Едната страна на e-Link32 Pro е поврзана со компјутер со помош на Mini USB кабел, а другата страна е поврзана со целната табла на корисникот преку нејзиниот 10-битен сив кабел. Врската помеѓу SWD интерфејсите на кабелот и целната табла се имплементира со помош на линиите на Dupont, како што е прикажано на Слика 17-(а).
- Сериските комуникациски пинови на e-Link32 Pro се Пин#7 VCOM_RXD и Пин#8- VCOM_TXD. Тие треба да се поврзат со пиновите TX и RX на корисничката целна табла, како што е прикажано на Слика 17-(б).
Слика 17. Блок дијаграм на e-Link32 Pro + Целна табла на корисникот
Компилација и тест
Овој дел ќе ја земе „апликацијата\Module_UART\UART_Module_Exampле“ како ексampле да ги воведе процесите на компилација и тестирање. Пред ова, проверете дали се имплементирани сите подготовки опишани во претходниот дел и дека е преземен софтверот за терминал Tera Term.
Деталните чекори за работа се сумирани подолу.
Чекор 1. Тест за вклучување
Поставете ја хардверската околина како што е опишано во претходниот дел. По вклучувањето, ќе се запали сијаличката за напојување D9 на долниот лев агол на почетниот комплет. УСБ ЛЕР D1 на 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“). После ова, резултатите од изградбата и преземањето ќе се прикажат во прозорецот Build Output. Види слика 19.
Слика 19. Изградба и преземање резултати
Чекор 4. Отворете го софтверот Tera Term и конфигурирајте ја сериската порта
Отворете го софтверот Tera Term и COM портот. Обрнете внимание на тоа дали бројот на COM портата генериран од почетниот комплет е точен или не. Потоа кликнете на „Поставување >> Сериска порта“ за да влезете во конфигурацискиот интерфејс. Конфигурацијата на интерфејсот UART на кодот на апликацијата „Module_UART“ е опишана во делот „Терминален софтвер“. Резултатот од поставувањето е прикажан на Слика 20.
Слика 20. Резултат од поставувањето на сериската порта Tera Term
Чекор 5. Ресетирајте го системот и тестирајте
Притиснете го копчето за ресетирање SK – B1 Reset. После ова, „ABCThis е тест!“ порака ќе биде
се пренесува преку 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“ – Receive
Инструкции за трансплантација
Овој дел ќе воведе како да се интегрираат API во проектите на корисникот.
Чекор 1. Додадете го uart_module.c file во проектот. Десен-клик на папката Корисник. Изберете „Додај постоечки Files во групата „Корисник“…“, потоа изберете го uart_module.c file и кликнете на „Додај“, како што е прикажано на слика 23. Погледнете во делот „Структура на директориумот“ за file опис на патеката.
Слика 23. Додадете uart_module.в File до Проект
Чекор 2. Додадете го ring_buffer.c file во проектот. Десен-клик на папката Корисник. Изберете „Додај постоечки Files во групата „Корисник“…“, потоа изберете го ring_buffer.c file и кликнете на „Додај“, како што е прикажано на Слика 24.\ Погледнете во делот „Структура на директориумот“ за file опис на патеката.
Слика 24. Додадете ring_buffer.в File до Проект
Чекор 3. Вклучете го заглавието на API file на почетокот на main.c, како што е прикажано на Слика 25. (Ext: #include „middleware/uart_module.h“)
Слика 25. Вклучете го заглавјето на API File до главниот.в
Чекор 4. Спроведување на поставките потребни за UART комуникација со помош на ht32_board_config.h file. Ова е детално воведено во секциите „Опис на поставките“ и „Модификација на поставките и најчесто поставувани прашања“.
Поставување Измена и ЧПП
Овој дел ќе воведе како да ги измените поставките за UART и ќе објасни некои вообичаени прашања што се среќаваат при употреба.
Променете го доделувањето на пиновите на UART
- Осврнувајќи се на поглавјето „Доделување со пинови“ на листот со податоци HT32F52352, побарајте ја табелата за мапирање на алтернативни функции во која се наведени функциите AFIO од типот на уред. За соодветните пинови на UART, погледнете ја колоната „AF6 USART/UART“, како што е прикажано на Слика 26.
Слика 26. Табела за мапирање на алтернативни функции HT32F52352
- Овој чекор ќе ги води корисниците да ги лоцираат соодветните UART пинови користејќи ја горната табела. HT32F52352 прample користи USART1 како стандарден канал. Овде, пиновите TX и RX се USR1_TX и USR1_RX и се наоѓаат на PA4 и PA5 соодветно. Слика 27 ја прикажува кореспонденцијата на пиновите како и дефинициите на пиновите во „ht32_board_config.h“. Празните полиња на „Пакет“ во табелата за доделување пинови значат дека нема соодветни GPIO во овој пакет. За да ги измените пиновите на UART, пронајдете ги целните локации на пиновите и повторно дефинирајте ги пиновите користејќи ја „ht32_board_config.h“ file.
Слика 27. Кореспонденција на пиновите и модификација на поставките
Додајте канал UART
Земајќи го HT32F52352 HTCFG_UARTM_CH1 како прample, овде е опишано како да додадете нов 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
Најчесто поставувани прашања
Q: Во чекор 5 од делот Компилација и тест, функционалниот тест за пренос е нормален. Еве, „ABCThis е тест!“ пораката е успешно прикажана, но за функцијата за примање, зошто петте влезни вредности не се враќаат и не се прикажуваат?
A: Проверете дали пиновите MCU UART RX и DAP_Tx на UART Jumper-J2 се скратени со помош на скокач. Бидејќи кодот на апликацијата „Module_UART“ треба да ја користи виртуелната COM порта (VCP) на e-Link32 Lite, поставката за краток спој треба да се примени на левите два пина на UART Jumper-J2, како што е прикажано на Слика 29.
Слика 29. Поставување UART Jumper-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 нема да биде одговорен за какви било штети (вклучувајќи, но не ограничувајќи се на компјутерски вируси, системски проблеми или загуба на податоци) што и да настане при користењето или во врска со користењето на овој 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 Забелешка за апликација |