Перейти к содержанию

Алексей Ельцов

Members
  • Постов

    3
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Санкт- Петербург

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    Отладочная плата STM32F446RE, UART/USB переходник CH340.

Достижения Алексей Ельцов

Новичок

Новичок (1/14)

  • Год на форуме
  • Месяц на форуме
  • Неделя на форуме

Последние значки

0

Репутация

  1. @BARS_ На ответы мне не пофиг, я пробовал то, что скидывали. Идея выбрать другой UART была. Пробовались UART1, UART3. В таком случае на CH340 начинает мигать синяя лампочка при приёме/передаче сообщения. Но почему-то в таком случае ничего не отправляется и не записывается. Т.е.: 1)Код переписан под UART3, все пины соответсвующе переподключены; 2)Порт CH340 открывается через Advanced Serial Port Terminal; 3)В CubeIDE включён режим отладки для проверки принятия и передачи переменных; 4)Через Advanced Serial Port Terminal отправляется последовательность чисел; 5)CH340 мигает синей лампочкой, подтверждая отправку сообщения; 6)Но сама последовательность в память платы не записывается, а плата не отправляет ответом ничего на порт (либо порт не принимает). Пробовал с двумя СН340, но с обоими почему-то ничего не происходит.
  2. @mail_robot Вот инит юарта. static void MX_USART2_UART_Init(void) { /* USER CODE BEGIN USART2_Init 0 */ /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart2) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN USART2_Init 2 */ /* USER CODE END USART2_Init 2 */ } Про остальное не знаю, где оно находится и как выглядит, так как начал только недавно изучать, потому и показать не могу.
  3. Начал изучать UART STM32 на отладочной плате STM2F446RE. Включил UART2, по умолчанию включились порты PA2,PA3. Включил прерывания, подключил переходник UART/USB CH340, перед этим установив драйвера. Добавил простенький код в stm32f4xx_it.c: в нём объявил две переменные, когда принимается 8 бит buffrec в ответ должен отправляться "Hello world!". /* USER CODE BEGIN Includes */ uint8_t buffrec[8]; uint8_t TX_data[]="Hello world!\n\r"; /* USER CODE END Includes */ void USART2_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&huart2); /* USER CODE BEGIN USART2_IRQn 1 */ HAL_UART_Transmit(&huart2,TX_data,14,0xFFFF); HAL_UART_Receive_IT(&huart2, buffrec,8); /* USER CODE END USART2_IRQn 1 */ } В main.c объявил приём и передачу сигнала UART: /* USER CODE BEGIN 2 */ __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); __HAL_UART_ENABLE_IT(&huart2, UART_IT_TC); /* USER CODE END 2 */ В компиляции нет никаких ошибок и предупреждений. Приём и передачу мониторю через Advanced Serial Port Terminal 6. В итоге при попытке отправить комбинацию "12345" записываются только первые 2 числа. При этом происходит отправка 2 сообщений "Hello world!" сразу. При этом при записи двух бит, они записываются в пустые биты, а затем перезаписывают их. Кроме того, результат приходит на COM3 (порт подключения отладочной платы), а не на COM4 (порт подключения CH340), к которым подключены пины UART2 PA2, PA3. Из-за чего могут возникать эти проблемы?
×
×
  • Создать...