[i] Тестирование UART на процессорном модуле К1967ВН04x

ID статьи: 62483
Дата последнего изменения: 19.01.2026 08:59:45

В отличие от процессора цифровой обработки сигналов К1967ВН02BG, процессоры К1967ВН044, К1967ВН04BG обладают куда более широким набором периферийных блоков: UART, SPI, SSI, МКИО, ARINC и даже контроллеры интерфейсов ЖКИ и видеокамеры. При этом микросхема для работы с UART установлена непосредственно на самом модуле. 

На процессорном модуле используется микросхема FT232RL, которая выполняет функцию преобразования USB ↔ UART. Производим подключение при помощи кабеля USB A - USB B: на плате разъём XS7 и к PC. Дополнительно необходимо подключить отладчик - разъём XP5. Плату переключателем SA2 не включать.

1. Код программы

Создание нового проекта описано в статье "[i] Создаем проект в среде CM-LYNX". После создания нового проекта можно добавить файл main.c с кодом, приведенным в фрагменте кода 1 (пояснения логики работы приведены в комментариях). 

// main.c
#include <hal_1967VN044.h>
// Данные для посылки.
uint8_t ucTestText[ ] = { 'H', 'e', 'l', 'l', 'o', ' ', 'f', 'r', 'o', 'm', ' ', 'K', '1', '9', '6', '7', 'V', 'N', '0', '4', 0x0D, 0x0A };
int main(void)
{
   // Объявление структуры.
   UART_Init_type UARTInit;
   // Применение стандартных настроек UART.
   HAL_UART_DefaultInitStruct( &UARTInit );
   // Используем порт А2 и А3 как альтернативную функцию.
   HAL_GPIO_Init( LX_GPIO_PA, GPIO_PIN_2 | GPIO_PIN_3, GPIO_PinMode_Alt );
   // Настройка UART1.
   HAL_UART_Init( LX_UART1, &UARTInit );
   // Разрешение прерываний UART1.
   HAL_UART_ITEnable( LX_UART1 );
   // Глобальное разрешение прерываний.
   HAL_Interrupt_GlobalEnable();

   while( 1 )
   {
      // Отправка данных.
      HAL_UART_ITSend( LX_UART1, ucTestText, 22 );
      // Ожидание передачи всех данных.
      while( !UartTxRxStatus.TxReady[ UART1 ] );
   }
Фрагмент кода 1

Отдельно в фрагменте кода 2 приведена функцию стандартных настроек UART - они пригодятся далее при подключении.

void HAL_UART_DefaultInitStruct( UART_Init_type* InitStruct )
{
   InitStruct->BitRate      = 9600;                     // Скорость работы интерфейса в битах.
   InitStruct->WorkMode     = UART_Mode_TxRx;           // Режим работы (передатчик, приемник, трансивер).
   InitStruct->OverSampling = UART_OverSampling_Normal; // Количество синхросигналов на один бит информации.
   InitStruct->WordLength   = UART_WordLen_8bit;        // Длина передаваемых данных.
   InitStruct->StopBits     = UART_Stop_1bit;           // Количество стоп-битов.
   InitStruct->ParityMode   = UART_Parity_Off;          // Управление режимом проверки четности.
   InitStruct->FIFOSize     = UART_FIFOSize_8Byte;      // Размер FIFO приемника и передатчика.
   InitStruct->TXDMode      = UART_TXD_Direct;          // Управление режимом работы линии TXD.
   InitStruct->DMACtrlErr   = UART_DMACtrl_Dis;         // Управление запросом к контроллеру DMA во время обнаружения ошибки приема.
}
Фрагмент кода 2

2. Подключение к плате

После компиляции проекта в среде CM-LYNX включаем питание платы, создаем конфигурацию отладки (как описано в статье "Создаем проект в среде CM-LYNX") и переходим в перспективу Debug. До запуска необходимо воспользоваться терминальной программой для принятия данных. Применим универсальную утилиту PuTTY - загрузить её можно, например, по ссылке

При запуске программы открывается окно PuTTY Configuration (слева указана категория - Session). Первоначально необходимо задать Connection type: Serial. Следующим шагом необходимо указать используемый COM-порт в поле Serial line : COMx и задать скорость 9600 бод (это стандартное значение, его мы задавали в функции HAL_UART_DefaultInitStruct ()). Все необходимые настройки приведены на рисунке 1.

Перед тем, как задать номер COM-порта, необходимо посмотреть его в диспетчере устройств.


Рисунок 1 - Окно терминальной утилиты PuTTY с необходимыми настройками

Теперь нужно открыть COM-порт (Open), вернуться в CM-LYNX, в открытую перспективу Debug, и нажать "Play" или клавишу F8. Вид кнопки приведен на рисунке 2.


Рисунок 2 - Вид кнопки "Play"

После проделанных манипуляций процессор начинает отправлять бесконечное приветствие, как это показано на рисунке 3.


Рисунок 3 - Консоль PuTTY с демонстрацией работы программы

3. Вывод информации по UART с помощью printf ()

Чтобы выводить информацию по UART с помощью printf(), необходимо добавить описание стандартной функции fputc(). Более подробная информация приведена в статье "[i] Printf через UART".

int fputc(int ch, FILE *f) { HAL_UART_Send (LX_UART1, (uint8_t *) &ch, 1); return ch; } Фрагмент кода 3


Контактная информация

Сайт:https://support.milandr.ru
E-mail:support@milandr.ru
Телефон: +7 495 221-13-55