|
Информационный портал технической поддержки Центра проектирования интегральных микросхем |
В отличие от процессора цифровой обработки сигналов К1967ВН02BG, процессоры К1967ВН044, К1967ВН04BG обладают куда более широким набором периферийных блоков: UART, SPI, SSI, МКИО, ARINC и даже контроллеры интерфейсов ЖКИ и видеокамеры. При этом микросхема для работы с UART установлена непосредственно на самом модуле.
На процессорном модуле используется микросхема FT232RL, которая выполняет функцию преобразования USB ↔ UART. Производим подключение при помощи кабеля USB A - USB B: на плате разъём XS7 и к PC. Дополнительно необходимо подключить отладчик - разъём XP5. Плату переключателем SA2 не включать.
Создание нового проекта описано в статье "[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
После компиляции проекта в среде CM-LYNX включаем питание платы, создаем конфигурацию отладки (как описано в статье "Создаем проект в среде CM-LYNX") и переходим в перспективу Debug. До запуска необходимо воспользоваться терминальной программой для принятия данных. Применим универсальную утилиту PuTTY - загрузить её можно, например, по ссылке.
При запуске программы открывается окно PuTTY Configuration (слева указана категория - Session). Первоначально необходимо задать Connection type: Serial. Следующим шагом необходимо указать используемый COM-порт в поле Serial line : COMx и задать скорость 9600 бод (это стандартное значение, его мы задавали в функции HAL_UART_DefaultInitStruct ()). Все необходимые настройки приведены на рисунке 1.

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

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

Рисунок 3 - Консоль PuTTY с демонстрацией работы программы
Чтобы выводить информацию по 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 |