HOLTEK HT32 MCU UART Забележка за приложението Ръководство за потребителя
Бележка за приложението на 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: Най-значимият бит
  • компютър: Персонален компютър
  • SK: Стартов комплект, платка за разработка HT32
  • IDE: Интегрирана среда за разработка

UART комуникационен протокол

UART е тип сериен комуникационен интерфейс, който реализира паралелно-серийно преобразуване на данни в своя предавател и след това комуникира серийно с подобен приемник. След това приемникът извършва серийно към паралелно преобразуване на данни след получаване на данни. Фигура 1 показва схематична диаграма на серийна комуникация, показваща как данните се прехвърлят в битов ред. Следователно за двупосочна комуникация между предавател и приемник са необходими само два проводника, TX и RX, за последователно прехвърляне на данни помежду си. TX е щифтът, на който UART предава серийните данни и е свързан към щифта RX на приемника. Следователно устройствата на предавателя и приемника трябва да кръстосано свържат своите TX и RX пинове, за да осъществят UART двупосочна комуникация, както е показано в Фигура 2.

Фигура 1. Диаграма на серийна комуникация
Диаграма на серийната комуникация

Фигура 2. UART електрическа схема
UART електрическа схема

По време на UART серийна комуникация предаването на данни е асинхронно. Това означава, че няма часовник или друг сигнал за синхронизация между предавателя и приемника. Тук се използва скорост на предаване, която е скоростта на предаване/получаване на серийни данни и която се задава от двете страни преди прехвърлянето на данни. В допълнение, специални битове като начални и стоп битове се добавят към началото и края на пакета данни, за да образуват пълен UART пакет данни. Фигура 3 показва структурата на UART пакета данни, докато Фигура 4 показва UART 8-битов пакет данни без бит за паритет.
Фигура 3. UART структура на пакета данни
UART структура на пакета данни

Фигура 4. UART 8-битов формат на пакет данни
Формат на пакета данни
Всяка част от 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-битово време за предаване 

Скорост на предаване 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. 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 трябва да бъде поставен в правилния път, преди да започне компилацията. Пощенският код на приложението file обикновено съдържа една или повече папки, като приложение и библиотека, както е показано на Фигура 7. Поставете папката на приложението в основната директория на библиотеката на фърмуера HT32, за да завършите file конфигурация на пътя, както е показано на Фигура 8. Алтернативно, разархивирайте кода на приложението и библиотеката на фърмуера HT32 едновременно в един и същи път, за да постигнете същите резултати от конфигурацията.

Фигура 7. Съдържание на HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Съдържание

Фигура 8. Път на декомпресия
Път на декомпресия

Терминален софтуер
Кодът на приложението може да прехвърля съобщения през COM порта, за да реализира избор на функция или показване на състояние. Това изисква страната на хоста да има предварително инсталиран софтуер на терминала. Потребителите могат да изберат подходящ софтуер за свързване или да използват безплатен лицензиран софтуер като Tera Term. В кода на приложението UART каналът е конфигуриран с дължина на думата 8 бита, без паритет, 1 стоп бит и скорост на предаване от 115200 XNUMX bps.

Функционално описание

Тази глава ще предостави функционално описание на кода на приложението, включително информация за структурата на директорията, архитектурата на 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 свързани с присвояването на периферни I/O IC
ht32fxxxxxx_01_it.c Сервизна програма за прекъсване file
main.c Основен изходен код на програмата
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Пакетни скриптове за създаване на проект files
_ProjectSource.ini Инициализация file за добавяне на изходен код към проекти
ht32_board_config.h Настройка file свързани с присвояването на периферни I/O IC
ht32fxxxxxx_01_it.c Сервизна програма за прекъсване file
main.c Изходният код на основната програма
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

Забележка: 

  1. В „UART_Module_Example” код на приложение, операциите за четене и запис на API се извършват по обратна връзка, вижте „Използване на API Examples” за повече подробности.
  2.  В кода на приложението „UART_Bridge“ се активират два UART канала, UART CH0 и UART CH1, и персонализиран комуникационен протокол чрез структурите COMMAND се прилага между двете UART устройства. За повече информация вижте „Използване на API напрampлес”.
  3. Кодът на приложението трябва да използва 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 Status) на всеки UART канал, докато всички настройки, необходими за UART комуникация, се предоставят от ht32_board_config.h. Хардуерните параметри в ht32_board_config.h file са показани в таблицата по-долу. Повече подробности са предоставени в раздела „Описание на настройката“.

Хардуерните параметри в ht32_board_config.h включват I/O настройки и настройки на физически UART порт, както следва.

Таблица 3. Дефиниционни символи в ht32_board_config.h

Символ Описание
HTCFG_UARTM_CH0 Име на физически UART порт; Прampфайл: UART0, UART1...
HTCFG_UARTM0_TX_GPIO_PORT Дефинира името на порта на TX за CH0; Прample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Определя номера на щифта на TX за CH0; Прample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Дефинира името на порта на RX за CH0; Прample: 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

За да промените конфигурацията на UART канала AFIO, вижте съответния лист с данни на устройството. В момента влизат в сила само I/O дефинициите за UART CH0, тъй като само UART CH0 е конфигуриран в ht32_board_config.h. За да добавите UART CH1~3, техните входно/изходни дефиниции трябва да бъдат завършени, като се обърнете към дефиницията на UART CH0 или се обърнете към раздела „Промяна на настройките и често задавани въпроси“.

Има три основни характеристики на API архитектурата: 

  1. Поддържат се до четири UART канала. Техните входни параметри са UARTM_CH0, UARTM_CH1, UARTM_CH2 и UARTM_CH3.
  2.  Броят на UART каналите може да бъде зададен и неизползваните канали няма да намалят наличното пространство в паметта.
  3. Всички UART настройки и I/O дефиниции са напълно отделени от API. Това увеличава удобството на управление на стойностите на настройките и намалява възможността за неправилни или липсващи настройки.

Описание на настройката 

Този раздел ще представи настройките на параметрите в ht32_board_config.h и uart_module.h files.

  1. ht32_board_config.h: Това file се използва за дефиниции на щифтове и съответните настройки на платката за разработка, които включват UART IP канала (UART0, UART1, USART0…), използван от стартовия комплект (SK), съответните местоположения на пиновете TX/RX и размера на TX/RX буфера. Фигура 10 показва съдържанието на настройките на стартовия комплект HT32F52352. В зависимост от функционалната интеграция на разработката, потребителите могат да се обърнат към раздела „Присвояване на щифтове“ на листа с данни на използваното устройство, за да приложат дефинициите на щифтовете. Повече подробности относно промяната на настройките ще бъдат описани в раздела „Промяна на настройките и често задавани въпроси“.
    Фигура 10. Настройки на ht32_board_config.h (HT32F52352)
    Настройки
  2. uart_module.h: Това е заглавката на API file използвани от кода на приложението, който включва съответните настройки по подразбиране, дефиниции на функции и т.н. Както е показано на Фигура 11, съдържанието на настройките по подразбиране може да бъде презаписано от външни конфигурации, като например настройките в ht32_board_config.h file.
    Фигура 11. Настройки по подразбиране в uart_module.h
    Настройки по подразбиране
Описание на API
  1. Описание на типа данни на кода на приложението.
    • 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 поддържат само нормален режим
  2. Преди да използвате функциите на API, завършете основната конфигурация на UART в основната програма. Основната конфигурация на UART за този код на приложението е показана на Фигура 12. Тук скоростта на предаване е 115200bps, дължината на думата е 8-битова, дължината на стоп-бита е 1-битова и няма паритет.
    Фигура 12. Основна конфигурация на UART
    Основна конфигурация
  3. Фигура 13 показва API функциите, декларирани в uart_module.h file. Следващите таблици обясняват функцията, входните параметри и използването на API функциите.
    Фигура 13. Декларации на API функция в uart_module.h 
    API функционални декларации
Име void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
функция Инициализация на UART модул
  Вход CH UART канал
pUART_Инициал Основен указател на структурата на конфигурацията на 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 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() върне УСПЕХ, тогава UART записва този байт данни
Име u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
функция Операция за четене на UART модул (RX)
 Вход CH UART канал
pBuffer Буферен указател
uLength Дължината на данните за четене
Изход Прочетете броя Дължината на данните е прочетена
     Използване u8 Тест2[10]; u32 Len; 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 канал
Изход ВЯРНО 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 по loopback начин. Блок-схемата за това е показана на Фигура 15. Използваните API функции включват UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() и UARTM_GetReadBufferLength(). Описанието им е предоставено в раздела „Описание на API“.

Фигура 15. Блок-схема на пример за писане и четенеampлес
Блок-схема на писане и четене Exampлес

Има друг код на приложение „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 Команда B
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
Размер на ROM 946 байта
Размер на RAM 40*1 + 256*2 Байтове

Забележка:

  1. Глобалните променливи, включително флагове и статус за един канал, заемат 40 байта RAM.
  2.  Това е за състояние, при което се използва един канал и размерът на буфера 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 и конфигурацията на директорията са представени в раздела „Изтегляне и подготовка на ресурси“. Път: „\\application\Module_UART\UART_Module_Examp"
Тера термин Вижте раздела „Терминален софтуер“.
Keil IDE Keil uVision V5.xx

Първо, използвайте стартовия комплект HT32F52352, комбиниран с функцията за виртуален COM порт (VCP) на e-Link32 Lite за представяне на приложението UART. Това изисква извършването на следната екологична подготовка:

  1. На платката има два USB интерфейса. Използвайте USB кабела, за да свържете компютъра и интерфейса eLink32 Lite на платката, както е показано на Фигура 16-(a).
  2. Тъй като кодът на приложението трябва да използва функцията за виртуален COM порт (VCP) на e-Link32 Lite, уверете се, че PAx*2 и DAP_Tx на UART Jumper-J2*1 са окъсени с помощта на джъмпер. Местоположението на J2 е показано на фигура 16-(b).

Забележка

  1. J2 на стартовия комплект има две опции, PAx и DAP_Tx късо или PAx и RS232_Tx късо. Обърнете се към ръководството за потребителя на Starter Kit за подробни функции за настройка.
  2. Местоположението на пина на MCU UART RX на различните стартови комплекти е различно. Този бившample използва PAx, за да посочи RX щифта.

Фигура 16. Блокова диаграма на стартов комплект HT32
Блокова диаграма на комплекта

Сега използвайте потребителската целева платка, комбинирана с функцията за виртуален COM порт (VCP) на e-Link32 Pro за въвеждане на приложението UART. Това изисква извършването на следната екологична подготовка:

  1. Едната страна на e-Link32 Pro е свързана към компютър с помощта на Mini USB кабел, а другата страна е свързана към целевата платка на потребителя чрез неговия 10-битов сив кабел. Връзката между SWD интерфейсите на кабела и целевата платка се осъществява с помощта на линии на Dupont, както е показано на Фигура 17-(a).
  2. Серийните комуникационни изводи на e-Link32 Pro са Pin#7 VCOM_RXD и Pin#8-VCOM_TXD. Те трябва да бъдат свързани към TX и RX щифтовете на целевата платка на потребителя, както е показано на Фигура 17-(b).
    Фигура 17. Блокова диаграма на e-Link32 Pro + User Target Board
    Потребителска целева дъска

Компилация и тест
Този раздел ще вземе „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. Компилирайте и програмирайте
След като проектът е отворен, първо кликнете върху „Build“ (или използвайте клавишната комбинация „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 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 в проекта. Щракнете с десния бутон върху папката User. Изберете „Добавяне на съществуващи Files към Group 'User'…”, след което изберете uart_module.c file и щракнете върху „Добавяне“, както е показано на Фигура 23. Вижте раздела „Структура на директория“ за file описание на пътя.

Фигура 23. Добавете uart_module.c File към проекта
File към проекта

Стъпка 2. Добавете ring_buffer.c file в проекта. Щракнете с десния бутон върху папката User. Изберете „Добавяне на съществуващи Files към Group 'User'…”, след което изберете ring_buffer.c file и щракнете върху „Добавяне“, както е показано на Фигура 24.\ Вижте раздела „Структура на директория“ за file описание на пътя.
Фигура 24. Добавете ring_buffer.c File към проекта 
File към проекта

Стъпка 3. Включете заглавката на API file в началото на main.c, както е показано на фигура 25. (Ext: #include “middleware/uart_module.h”)
Фигура 25. Включете API Header File към главния.c
Включете заглавка на API File

Стъпка 4. Приложете настройките, необходими за UART комуникация, като използвате ht32_board_config.h file. Това е представено подробно в разделите „Описание на настройките“ и „Промяна на настройките и често задавани въпроси“.

Модификация на настройките и ЧЗВ 

Този раздел ще представи как да промените настройките на UART и ще обясни някои често срещани въпроси, срещани по време на употреба.

Променете присвояването на UART Pin 

  1. Като се позовавате на главата „Присвояване на щифтове“ на листа с данни HT32F52352, потърсете таблицата за картографиране на алтернативни функции, която изброява AFIO функциите на типа устройство. За съответните щифтове на UART вижте колоната „AF6 USART/UART“, както е показано на Фигура 26.
    Фигура 26. Таблица за съпоставяне на алтернативна функция HT32F52352
    Таблица за съпоставяне на алтернативни функции
  2. Тази стъпка ще насочи потребителите да намерят съответните 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. Съответствие на ПИН и промяна на настройката
    Промяна на настройките

Добавете 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 канал
UART канал

Често задавани въпроси
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 Jumper-J2
UART джъмпер

Въпрос: След изпълнение на „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

Референции

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са маркирани *