реклама на сайте
подробности

 
 
> Проблемы с UART в stm32F401C, Проблемы с UART в stm32F4
shtunder
сообщение Dec 20 2014, 07:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 14-07-14
Пользователь №: 82 243



Всем доброго времени суток!

Столкнулся с такой проблемой. Запускаю UART, передаю биты, но увы и ах.. Комп принимает биты, но какие-то другие. Не могу понять в чем дело.

Код по инициализации и передаче символа, прикрепил.

При передаче символа H получаю 88, при передаче 0xAA, получаю 0x6A.
При передаче 0xFF получаю 0xFF (но там то тупо все нули, поэтому очевидно, что должны были прийти все эти нули).

P.S. При работе stm32 L0 избавиться ерунды помог system_clock_config, который просто взял из примера.

P.S. МК stm32 f401C

Код
#include "stm32f4xx_hal.h"


void INIT_GPIO(void);
void INIT_UART(void);
void SEND_DATA_UART(uint8_t data);


GPIO_InitTypeDef GPIO;
UART_HandleTypeDef UART;



int main()
{
  HAL_Init();
  
  INIT_GPIO();
  INIT_UART();
  
  while(1)
  {
    // Проверка UART

    SEND_DATA_UART('H');
  }
}


void INIT_GPIO()
{
  __GPIOB_CLK_ENABLE();
  //UART
  GPIO.Pin = (GPIO_PIN_6) | (GPIO_PIN_7);
  GPIO.Mode = GPIO_MODE_AF_PP;
  GPIO.Alternate = GPIO_AF7_USART1;
  HAL_GPIO_Init(GPIOB, &GPIO);
}

void INIT_UART()
{
  __USART1_CLK_ENABLE();
  UART.Instance = USART1;
  UART.Init.Mode = UART_MODE_TX_RX;
  UART.Init.BaudRate = 9600;
  UART.Init.WordLength = UART_WORDLENGTH_8B;
  UART.Init.Parity = UART_PARITY_NONE;
  UART.Init.StopBits = USART_STOPBITS_1;
  HAL_UART_Init(&UART);
}

//Функция отправляющая байт в UART
void SEND_DATA_UART(uint8_t data)
{
  //Если TC=1, то передача завершена и можно опять что-то записывать в регистр данных USART_DR
  while(!(USART1->SR & USART_SR_TC));
  //Отсылаем байт через UART
  USART1->DR = data;
}


Изначально инициализировал ножки так:
Код
void INIT_GPIO()
{
  __GPIOA_CLK_ENABLE();
  //UART
  GPIO.Pin = (GPIO_PIN_9) | (GPIO_PIN_10);
  GPIO.Mode = GPIO_MODE_AF_PP;
  GPIO.Alternate = GPIO_AF7_USART1;
  HAL_GPIO_Init(GPIOA, &GPIO);
}

Но там на осциллографе увидел, что фронты имеют вид, как-будто бы к этим пинам подключили конденсатор. Залез в схематику, действительно так и есть.
Спрашивается зачем там емкость? Что разработчики туда закладывали?

P.S. Советы типа поменяйте baudrate не катят. Т.к. уже перепробовал всевозможные(адекватные) настройки (не только baudrate).

Прикрепленные файлы
Прикрепленный файл  MCU_Datasheet.pdf ( 1.98 мегабайт ) Кол-во скачиваний: 74
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016