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

STM32L152CBT6 Не работает USART1

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

 

Проковырялся уже два дня - не удается инициализировать последовательный порт USART1 в stm32l152cbt6.

 

  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB, ENABLE);
  RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB,DISABLE);
  
  // Èíèöèàëèçèðóåì ïîñëåäîâàòåëüíûé ïîðò.
  /* Enable UART clock */
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1,DISABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
  RCC_APB2PeriphClockLPModeCmd(RCC_APB2Periph_USART1,ENABLE);
  
  USART_DeInit(USART1);

//  GPIO_PinAFConfig(GPIOA, GPIO_Pin_8, GPIO_AF_USART1);

      /* Connect PXx to USARTx_Tx */
  GPIO_PinAFConfig(GPIOA, GPIO_Pin_9, GPIO_AF_USART1);

  /* Connect PXx to USARTx_Rx */
  GPIO_PinAFConfig(GPIOA, GPIO_Pin_10, GPIO_AF_USART1);

  /* Connect PXx to USARTx_Rx */
//  GPIO_PinAFConfig(GPIOA, GPIO_Pin_11, GPIO_AF_USART1);

  /* Connect PXx to USARTx_Rx */
//  GPIO_PinAFConfig(GPIOA, GPIO_Pin_12, GPIO_AF_USART1);

  VD3G_ON;
  
  /* Configure USART Tx as alternate function push-pull */
  /* Configure USART Rx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

//        GPIO_SetBits(GPIOA,GPIO_Pin_9|GPIO_Pin_10);

  VD3G_OFF;
  
  // Èíèöèàëèçèðóåì ïåðåäåñêðèòèçàöèþ 8õ.
  USART_OverSampling8Cmd(USART1,ENABLE);
  
  // Èíèöèàëèçàöèÿ îäèíî÷íîãî òåñòèðîâàíèÿ ëèíèè ïðèåìíèêà.
  USART_OneBitMethodCmd(USART1,ENABLE);
  
  USART_ReceiverWakeUpCmd(USART1,DISABLE);

  USART_InitStructure.USART_BaudRate = baudrate;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  /* USART configuration */
  USART_Init(USART1, &USART_InitStructure);
      
  /* Enable USART */
  USART_Cmd(USART1, ENABLE);

  /* Enable the USART Receive interrupt */
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

  /* Enable USART Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

 

Здесь уже добавил все что только можно, но не работает.

 

Симптомы следующие - после вызова PinAFConfig начинает нарастать напряжение на выводах rx tx в течение примерно 10-20мкс. Далее напряжение падает в ноль и все. Постоянно ноль на обоих выводах. Судя по ходу программы - порт работает и куда то передает байты, так как прерывания выполняются и видимость работы есть.

 

Устройство периодически ложится спать в режимах sleep и stop, но во время выполнения процедуры инициализации такого нет. Также используется усб - соседние линии совмещенные с RTS/CTS порта. Но для эксперимента все отключил и выполнил инициализацию сначала прошивки - не помогло.

 

Порт рабочий - прошивка через него шьется, если выводы инициализировать на цифровой вход подтянутый к единице - логическая единица на обоих. То есть выводы снаружи ничем не нагружены.

 

Заранее спасибо за подсказку!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...