HOLTEK HT32 MCU UART Note Application Note Посібник користувача
вступ
Універсальний асинхронний приймач/передавач – 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. На малюнку 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 XNUMX біт/с тощо. Відповідний час, необхідний для передачі одного біта даних, показано нижче.
Таблиця 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 містить кілька папок, які можна класифікувати як Document, Firmware Library, Tools та інші елементи, шлях розміщення яких показано на малюнку 5. Бібліотека мікропрограм HT32 zip file з a file ім'я HT32_STD_xxxxxx_FWLib_Vm.n.r_s.zip знаходиться в папці Firmware_Library.
Малюнок 5. Вміст HT32_M0p_Vyyyymmdd.zip
Код програми
Завантажте код програми за наступним посиланням. Код програми запаковано в zip file з a 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 біт/с.
Функціональний опис
У цьому розділі надано функціональний опис коду програми, включаючи інформацію про структуру каталогів, архітектуру API, опис налаштувань тощо
Структура каталогу
Код програми file містить папку програми. Наступним шаром є папка «Module_UART», яка містить дві прикладні програми «UART_Module_Ex».ample» та «UART_Bridge». Актуальний files перераховані та описані нижче.
Таблиця 2. Структура каталогу коду програми
Папка / File Ім'я | опис |
\\application\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Пакетні скрипти для створення проекту files |
_ProjectSource.ini | Ініціалізація file для додавання вихідного коду до проектів |
ht32_board_config.h | Налаштування file пов'язані з призначенням периферійних пристроїв вводу-виводу 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 пов'язані з призначенням периферійних пристроїв вводу-виводу 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 |
Примітка:
- У «UART_Module_Example» програмного коду, операції читання та запису API виконуються зацикленим способом, зверніться до «Використання API Examples», щоб дізнатися більше.
- У програмному коді «UART_Bridge» активовано два канали UART, UART CH0 і UART CH1, а між двома пристроями UART реалізовано спеціальний протокол зв’язку через структури COMMAND. Щоб отримати додаткові відомості, зверніться до «Використання APIampлес».
- Код програми повинен використовувати 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 включають налаштування вводу/виводу та налаштування фізичного порту 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 |
Щоб змінити конфігурацію 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…), який використовується Starter Kit (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_Ініціал | Покажчик структури базової конфігурації 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, Test, sizeof(Test) -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; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() зчитує 5 байтів даних і зберігає дані в Test2 і призначає кількість прочитаних байтів to 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 вимагаєтьсяwhile (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, включаючи швидкість передачі даних, довжину слова, стоп-біти, парність і режим. Нарешті, викличте функцію ініціалізації 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» |
Заняття ресурсом
Беручи HT32F52352 як прикладample, ресурси, зайняті модулем UART, показані нижче.
HT32F52352 | |
Розмір ROM | 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_Example » |
Tera Термін | — | Зверніться до розділу «Програмне забезпечення терміналу». |
Keil IDE | — | Keil uVision V5.xx |
По-перше, використовуйте HT32F52352 Starter Kit у поєднанні з функцією віртуального 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 у Starter Kit має два варіанти: замкнуті 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-порту, згенерований Starter Kit, чи ні. Потім натисніть «Налаштування >> Послідовний порт», щоб увійти в інтерфейс налаштування. Конфігурація інтерфейсу 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 до основного.c
Крок 4. Виконайте налаштування, необхідні для зв’язку UART, використовуючи ht32_board_config.h file. Це детально описано в розділах «Опис налаштувань» і «Зміни налаштувань і поширені запитання».
Модифікація налаштувань і поширені запитання
У цьому розділі описано, як змінити параметри 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». Порожні поля «Package» у таблиці призначення контактів означають, що в цьому пакеті немає відповідних GPIO. Щоб змінити контакти UART, знайдіть цільове розташування контактів і повторно визначте контакти за допомогою «ht32_board_config.h» file.
Малюнок 27. Відповідність PIN-коду та зміна налаштувань
Додайте канал 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 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
З: Після виконання «Складання» (або ярлик «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 |