HOLTEK HT32 MCU UART Замечания по применению Руководство пользователя
Введение
Универсальный асинхронный приемник/передатчик — UART — это широко используемый интерфейс последовательной передачи, который обеспечивает гибкую асинхронную полнодуплексную передачу данных. Код приложения «Module_UART», представленный в этом примечании по применению, использует прерывания TX/RX с программными кольцевыми буферами для реализации простых функций передачи/приема UART через API, соответствующие функции которых описаны ниже. Это упростит весь процесс передачи данных и позволит пользователям быстро понять и реализовать приложения связи UART.
- Функции передачи/приема: чтение байтов, запись байтов, чтение буфера, запись буфера и т. д.
- Статусные функции: получение длины буфера, статуса передачи и т. д.
В этом документе сначала будет представлен протокол связи UART, который поможет пользователям лучше понять связь UART от принципа до применения. Далее следует загрузка и подготовка ресурсов, необходимых для кода приложения, включая библиотеку прошивки, загрузку кода приложения, file и конфигурацию каталога, а также введение в терминальное программное обеспечение, используемое в примечаниях по применению. В главе «Функциональное описание» будет представлена структура каталогов кода приложения, настройки параметров и описание API. Использование API будет описано с использованием кода приложения «Module_UART», а также будет указано потребление ресурсов Flash/RAM, необходимое для API. Глава «Инструкции по использованию» проведет пользователя через этапы подготовки среды, компиляции и тестирования, чтобы убедиться, что код приложения будет работать правильно. Затем он предоставит инструкции, объясняющие, как интегрировать API в проекты пользователя, и, наконец, предоставит справочник по модификациям и типичным проблемам, с которыми можно столкнуться.
Используемые сокращения:
- УАРТ: Универсальный асинхронный приемник / передатчик
- API-интерфейс: Интерфейс прикладного программирования
- младший бит: Наименее значимый бит
- Старший бит: Самый значимый бит
- ПК: Персональный компьютер
- СК: Стартовый комплект, плата разработки HT32
- ИДЕ: Интегрированная среда разработки
Протокол связи 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 бит. Данные обычно сначала передаются с младшим битом.
- Бит четности: Число логических «1» в данных используется для определения того, изменились ли какие-либо данные во время передачи. Для четности общее количество логической «1» в данных должно быть четным числом, и наоборот, общее количество логической «1» в данных должно быть нечетным числом для нечетной четности.
- Стоповый бит: Это указывает на конец пакета данных, когда передатчик UART переведет вывод TX из низкого уровня в высокий, то есть из 0 в 1, а затем удержит его в этом состоянии в течение 1 или 2-битного периода времени.
Как упоминалось ранее, поскольку в цепи UART нет тактового сигнала, для реализации безошибочной передачи между передатчиком и приемником должна быть определена одна и та же скорость передачи/приема последовательных данных, известная как скорость передачи данных. Скорость передачи данных определяется количеством битов, передаваемых в секунду, в бит/с (бит в секунду). Некоторые стандартные и часто используемые скорости передачи данных составляют 4800 бит/с, 9600 бит/с, 19200 бит/с, 115200 бит/с и т. д. Соответствующее время, необходимое для передачи одного бита данных, показано ниже.
Таблица 1. Скорость передачи данных в зависимости от времени передачи 1 бита
Скорость передачи данных | 1-битная передача Время |
4800 бит/с | 208.33мкс |
9600 бит/с | 104.16мкс |
19200 бит/с | 52.08мкс |
115200 бит/с | 8.68мкс |
Загрузка и подготовка ресурсов
В этой главе будут представлены код приложения и используемый программный инструмент, а также порядок настройки каталога и file путь.
Библиотека прошивок
Прежде чем использовать код приложения, убедитесь, что библиотека прошивки Holtek HT32 загружена. Ссылка для скачивания показана ниже. Здесь есть два варианта: HT32_M0p_Vyyyymmdd.zip для серии HT32F5xxxx и HT32_M3_Vyyyymmdd.zip для серии HT32F1xxxx. Скачайте и разархивируйте нужный file.
Застежка-молния file содержит несколько папок, которые можно классифицировать как «Документ», «Библиотека встроенного ПО», «Инструменты» и другие элементы, путь размещения которых показан на рисунке 5. ZIP-архив библиотеки встроенного ПО HT32. file с file имя HT32_STD_xxxxx_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, код приложения и библиотека прошивки разархивированы fileперед началом компиляции следует поместить в правильный путь. zip-код приложения file обычно содержит одну или несколько папок, таких как приложение и библиотека, как показано на рисунке 7. Поместите папку приложения в корневой каталог библиотеки встроенного ПО HT32, чтобы завершить настройку. file путь конфигурации, как показано на рис. 8. Альтернативно, можно одновременно разархивировать код приложения и библиотеку встроенного ПО HT32 в один и тот же путь, чтобы добиться тех же результатов конфигурации.
Рис. 7. Содержимое HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Рисунок 8. Путь декомпрессии
Терминальное программное обеспечение
Код приложения может передавать сообщения через COM-порт для реализации выбора функции или отображения состояния. Для этого на стороне хоста заранее должно быть установлено программное обеспечение терминала. Пользователи могут выбрать подходящее программное обеспечение для подключения или использовать бесплатное лицензионное программное обеспечение, такое как Tera Term. В коде приложения канал UART настроен с длиной слова 8 бит, без контроля четности, 1 стоповым битом и скоростью передачи данных 115200 бит/с.
Функциональное описание
В этой главе будет представлено функциональное описание кода приложения, включая информацию о структуре каталогов, архитектуре API, описании настроек и т. д.
Структура каталогов
Код приложения file содержит папку приложения. Следующий уровень — это папка «Module_UART», содержащая две прикладные программы: «UART_Module_Ex».ample» и «UART_Bridge». Подходящий fileперечислены и описаны ниже.
Таблица 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».ampраздел «Лес» для получения более подробной информации.
- В коде приложения «UART_Bridge» активируются два канала UART, UART CH0 и UART CH1, и между двумя устройствами UART реализуется специальный протокол связи через структуры COMMAND. Дополнительную информацию см. в разделе «Пример использования API».ampраздел «лес».
- Код приложения должен использовать uart_module.c/h. files, у которых есть требования к версии библиотеки встроенного ПО. Требование может время от времени меняться в зависимости от обновления. Чтобы подтвердить требования к текущей версии библиотеки встроенного ПО, обратитесь к содержимому проверки зависимостей, выполнив поиск по ключевому слову «Проверка зависимостей» в файле main.c. file. Если версия библиотеки прошивок не соответствует требованиям, загрузите новейшую версию по ссылке, представленной в разделе «Библиотека прошивок».
Архитектура API
Каждый API имеет важный параметр CH, который является каналом UART. Это определяет, какой канал UART будет управляться. В настоящее время поддерживается до четырех каналов UART, поэтому четыре константных символа определяются следующим образом. Они используются в качестве параметра CH, предоставляя API-интерфейсам основу для управления.
- UARTM_CH0: входной параметр – управление или настройка UART CH0
- UARTM_CH1: входной параметр – управление или настройка UART CH1
- UARTM_CH2: входной параметр – управление или настройка UART CH2
- UARTM_CH3: входной параметр – управление или настройка UART CH3
Пространство памяти не будет потрачено зря, если используется только один канал UART. Это связано с тем, что количество поддерживаемых каналов UART может быть установлено, а неиспользуемый код канала UART будет удален препроцессором для увеличения доступного пространства памяти. Архитектура API показана на Рисунок 9.
Рисунок 9. Блок-схема архитектуры API
Каждый API состоит из четырех групп настроек или элементов управления, связанных с каналом UART, поэтому пользователям нужно только ввести желаемый параметр канала. Для настройки соответствующего API достаточно иметь дополнительную таблицу параметров базовой конфигурации UART со структурной формой USART_InitTypeDef. API реализует базовую конфигурацию UART в соответствии с содержимым параметров в таблице. Таблицу структуры базовой конфигурации UART см. в разделе «Описание API».
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; Бывший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, обратитесь к соответствующему техническому описанию устройства. В настоящее время действуют только определения ввода-вывода для UART CH0, поскольку только UART CH0 настроен в ht32_board_config.h. Чтобы добавить UART CH1~3, необходимо заполнить определения их входов/выходов, обратившись к определению UART CH0 или обратившись к разделу «Изменение настроек и часто задаваемые вопросы».
Существует три основные особенности архитектуры API:
- Поддерживается до четырех каналов UART. Их входные параметры: UARTM_CH0, UARTM_CH1, UARTM_CH2 и UARTM_CH3.
- Количество каналов UART можно установить, и неиспользуемые каналы не уменьшат доступное пространство памяти.
- Все настройки UART и определения ввода-вывода полностью отделены от API. Это повышает удобство управления установкой значений и снижает вероятность неправильных или пропущенных настроек.
Описание настройки
В этом разделе будут представлены настройки параметров в файлах ht32_board_config.h и uart_module.h. files.
- ht32_board_config.h: Это file используется для определения контактов и соответствующих настроек платы разработки, которые включают IP-канал UART (UART0, UART1, USART0…), используемый стартовым комплектом (SK), соответствующие положения контактов TX/RX и размер буфера TX/RX. На рис. 10 показано содержимое настроек стартового комплекта HT32F52352. В зависимости от функциональной интеграции разработки пользователи могут обратиться к разделу «Назначение контактов» спецификации используемого устройства для реализации определений контактов. Более подробно об изменении настроек будет описано в разделе «Изменение настроек и часто задаваемые вопросы».
Рисунок 10. Настройки ht32_board_config.h (HT32F52352)
- uart_module.h: Это заголовок API file используется кодом приложения и включает в себя соответствующие настройки по умолчанию, определения функций и т. д. Как показано на рис. 11, содержимое настроек по умолчанию может быть перезаписано внешними конфигурациями, такими как настройки в файле ht32_board_config.h. file.
Рисунок 11. Настройки по умолчанию в uart_module.h
Описание API
- Описание типа данных кода приложения.
- USART_InitTypeDef
Это базовая структура конфигурации UART, состоящая из конфигураций BaudRate, WordLength, StopBits, Parity и Mode, как показано ниже.Переменная Имя Тип Описание USART_BaudRate у32 Скорость передачи данных UART USART_WordLength у16 Длина слова связи UART: 7, 8 или 9 бит. USART_StopBits у16 Длина стоп-бита связи UART: 1 или 2 бита. USART_Parity у16 Четность связи UART: четность, нечетность, метка, пробел или отсутствие четности USART_Mode у16 режим связи UART; API поддерживают только обычный режим
- USART_InitTypeDef
- Прежде чем использовать функции API, завершите базовую настройку UART в основной программе. Базовая конфигурация UART для этого кода приложения показана на рисунке 12. Здесь скорость передачи данных составляет 115200 8 бит/с, длина слова — 1 бит, длина стопового бита — XNUMX бит, четность отсутствует.
Рисунок 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 | |
уркстимеаутвалуе | Значение тайм-аута 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-канал |
пиксельный буфер | Указатель буфера | |
uдлина | Длина записываемых данных | |
Выход | УСПЕХ | Успешный |
ОШИБКА | Неуспешный | |
Использование | 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 ТемпДанные; 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-канал |
пиксельный буфер | Указатель буфера | |
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 и присваивает счетчик прочитанных байтов to Len//Запишите данные, полученные из Test2 |
Имя | у32 UARTM_GetReadBufferLength(u32 СН) | |
Функция | Получить длину буфера чтения (RX) | |
Вход | CH | UART-канал |
Выход | uдлина | Длина буфера чтения |
Использование | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Инициализация модуля UART while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Подождем, пока UARTM_ReadBuffer не получит 5 байт данных |
Имя | у32 UARTM_GetWriteBufferLength(u32 СН) | |
Функция | Получить длину буфера записи (TX) | |
Вход | CH | UART-канал |
Выход | uдлина | Длина буфера записи |
Имя | u8 UARTM_IsTxFinished(u32 СН) | |
Функция | Получить статус TX | |
Вход | CH | UART-канал |
Выход | истинный | Статус передачи: завершено |
ЛОЖЬ | Статус передачи: не завершено | |
Использование | UARTM_WriteByte (UARTM_CH0, 'O'); #if 1 // SVN «uart_module.c» >= 525 требуется, пока (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #else while (1) #endif //Этот API можно использовать для проверки статуса передачи, как показано выше; дождитесь завершения API UARTM_WriteByte(), т. е. статус TX станет TRUE, а затем продолжите последующие действия. //Добавлено ограничение, поскольку эта функция не была добавлена до тех пор, пока номер версии SVN в uart_module.c не станет 525. |
Имя | пустота UARTM_DiscardReadBuffer(u32 СН) | |
Функция | Отбросить данные в буфере чтения | |
Вход | CH | UART-канал |
Пример использования APIampле
В этом разделе будет продемонстрирован пример API записи и чтения.ampфайлы кода приложения «Module_UART», используя процесс инициализации и файл «UART_Module_Ex».ample» процесс кода приложения. Прежде чем использовать API, пользователям необходимо включить заголовок API. file в основной исходный код программы file (#include «промежуточное ПО/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ле
В папке «Module_UART» находится еще один код приложения «UART_Bridge», связанный с ним. file описание представлено в разделе «Структура каталога». Код приложения «UART_Bridge» активирует два канала UART, UART CH0 и UART CH1, а затем настраивает протокол связи между двумя устройствами UART через структуры COMMAND, gCMD1 и gCMD2. Они определены в uart_bridge.c, как показано ниже. UARTBridge_CMD1TypeDef gCMD1:
Переменная Имя | Тип | Описание |
uHeader | u8 | Заголовок |
УКМД | u8 | Команда |
uData[3] | u8 | Данные |
UARTBridge_CMD2TypeDef gCMD2:
Переменная Имя | Тип | Описание |
uHeader | u8 | Заголовок |
УКМДА | u8 | Команда А |
УКМДБ | u8 | Команда Б |
uData[3] | u8 | Данные |
В коде приложения «UART_Bridge» используйте gCMD1 для получения данных в виде командного пакета и последующего их анализа. Затем в соответствии с настроенным протоколом связи установите gCMD2 в качестве ответного пакета и передайте его. Ниже приводится бывшийampфайл командного пакета gCMD1) и ответного пакета (gCMD2). Командный пакет (UARTBridge_CMD1TypeDef gCMD1):
Байт 0 | Байт 1 | Байт 2 ~ Байт 4 |
uHeader | УКМД | uДанные [3] |
«А» | «1» | «х, у, з» |
Пакет ответа (UARTBridge_CMD2TypeDef gCMD2):
Байт 0 | Байт 1 | Байт 2 | Байт 3 ~ Байт 5 |
uHeader | УКМДА | УКМДБ | uДанные [3] |
«Б» | «а» | «1» | «х, у, з» |
Ресурс Занятие
Беру HT32F52352 в качестве бывшего.ample, ниже показаны ресурсы, занимаемые модулем UART.
HT32F52352 | |
Размер ПЗУ | 946 байт |
Размер оперативной памяти | 40*1 + 256*2 Байты |
Примечание:
- Глобальные переменные, включая флаги и статус для одного канала, занимают 40 байт ОЗУ.
- Это для условий, когда используется один канал и размер буфера TX/RX составляет 128/128 байт. Размер буфера может быть установлен в соответствии с требованиями приложения.
Таблица 4. Занятость ресурса кода приложения
- Среда компиляции: MDK-Arm V5.36, ARMCC V5.06, обновление 7 (сборка 960)
- Оптимизировать вариант: Уровень 2 (-O2)
Инструкция по применению
В этой главе будет представлена подготовка среды для кода приложения «Module_UART», а также этапы компиляции и тестирования.
Подготовка окружающей среды
Аппаратное и программное обеспечение, необходимое для кода приложения «Module_UART», перечислено ниже.
Таблица 5. Подготовка аппаратного и программного обеспечения к условиям окружающей среды
Аппаратное/Программное обеспечение | Считать | Примечание |
Стартовый комплект | 1 | В данном руководстве по применению в качестве примера используется стартовый комплект HT32F52352.ample |
USB-кабель | 1 | Micro USB, подключен к ПК |
Код приложения | — | Путь загрузки, file и конфигурация каталога представлены в разделе «Загрузка и подготовка ресурсов». Путь: «\\application\Module_UART\UART_Module_Exampле » |
Тера Термин | — | См. раздел «Программное обеспечение терминала». |
Кейл IDE | — | Кейл uVision V5.xx |
Сначала используйте стартовый комплект HT32F52352 в сочетании с функцией виртуального COM-порта (VCP) e-Link32 Lite для ознакомления с приложением UART. Для этого необходимо провести следующую экологическую подготовку:
- На плате имеется два USB-интерфейса. Используйте USB-кабель для подключения ПК и интерфейса eLink32 Lite на плате, как показано на рисунке 16-(a).
- Поскольку код приложения должен использовать функцию виртуального COM-порта (VCP) e-Link32 Lite, убедитесь, что PAx*2 и DAP_Tx UART Jumper-J2*1 закорочены с помощью перемычки. Расположение J2 показано на рисунке 16-(b).
Примечание
- J2 в стартовом комплекте имеет два варианта: PAx и DAP_Tx с коротким замыканием или PAx и RS232_Tx с коротким замыканием. Подробную информацию о функциях настройки см. в руководстве пользователя стартового комплекта.
- Расположение контактов UART RX MCU в разных стартовых комплектах различно. Этот бывшийample использует PAx для обозначения вывода RX.
Рисунок 16. Блок-схема стартового комплекта HT32.
Теперь используйте целевую пользовательскую плату в сочетании с функцией виртуального COM-порта (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-(b).
Рис. 17. Блок-схема e-Link32 Pro + целевой пользовательской платы
Компиляция и тестирование
Этот раздел будет содержать файл «application\Module_UART\UART_Module_Ex».ampле» как бывшийample, чтобы представить процессы компиляции и тестирования. Перед этим убедитесь, что все приготовления, описанные в предыдущем разделе, выполнены и что программное обеспечение терминала Tera Term загружено.
Подробные этапы работы приведены ниже.
Шаг 1. Тест при включении
Настройте аппаратную среду, как описано в предыдущем разделе. После включения питания загорится индикатор питания D9 в левом нижнем углу стартового комплекта. Светодиод D1 USB на e-Link32 Lite в правом верхнем углу загорится после завершения нумерации USB. Если D1 не горит в течение длительного периода времени, убедитесь, что USB-кабель может обмениваться данными. Если нет, то удалите его и вставьте снова.
Шаг 2. Создайте проект
Откройте приложение\Module_UART\UART_Module_Ex.ample, нажмите на файл _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 кода приложения «Модуль_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. (Расширение: #include «middleware/uart_module.h»)
Рисунок 25. Включить заголовок API File в main.c
Шаг 4. Реализуйте настройки, необходимые для связи UART, с помощью файла ht32_board_config.h. file. Подробно это описано в разделах «Описание настройки» и «Изменение настройки и часто задаваемые вопросы».
Изменение настроек и часто задаваемые вопросы
В этом разделе рассказывается, как изменить настройки UART, и объясняются некоторые распространенные вопросы, возникающие во время использования.
Изменить назначение контактов UART
- Обращаясь к главе «Назначение контактов» таблицы данных HT32F52352, найдите таблицу сопоставления альтернативных функций, в которой перечислены функции AFIO для данного типа устройства. Информация о контактах UART приведена в столбце «AF6 USART/UART», как показано на рисунке 26.
Рис. 26. Таблица сопоставления альтернативных функций HT32F52352
- Этот шаг поможет пользователям найти соответствующие контакты UART, используя приведенную выше таблицу. HT32F52352 бывшийampфайл использует 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 в качестве бывшегоampле, здесь описано, как добавить новый канал 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 | 蔡期育(Чи-Ю Цай) | В1.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, примечания по применению UART MCU, HT32 MCU UART, примечания по применению |