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

 
 
> STM32L152CBT6 Не работает USART1
1kvi1
сообщение Sep 23 2011, 01:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 5-12-10
Пользователь №: 61 414



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

Проковырялся уже два дня - не удается инициализировать последовательный порт 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 порта. Но для эксперимента все отключил и выполнил инициализацию сначала прошивки - не помогло.

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

Заранее спасибо за подсказку!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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