AnsweredAssumed Answered

Multiple UART Problem ! !

Question asked by singhi.kapil on Aug 14, 2014
Latest reply on Aug 17, 2014 by singhi.kapil
Hello All 

I am working on STM32F429 with TFT and using DISCOVERY DISCO board

Trying to use 2 UARTS ->>>> UART1 and UART 4 or 6

UART4 with PA0 and PA1 pins PA0 is tied to switch but it should show some activity.
No Tx or Rx is working whereas same thing work fine on USART 1  

Able to run UART1 and is working fine but nor any other! 

I am using real-term console for this experiment and have leds on my USB to serial for displaying any activity.

its really frustrating..... 

Following is my code May be i am doing some thing wrong


//***************************** USART_SETUP *******************************
void USART_SETUP(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStruct;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    /*


    -------------------------- USART1 ---------------------------
            PA9  is USART1_TX
            PA10 is USART1_RX


xxxxxxxxxxx PB6  is USART1_TX
            PB7  is USART1_RX


    -------------------------- USART2 ---------------------------
            PA2  is USART1_TX
xxxxxxxxxxx PA3  is USART1_RX
            
            PD5  is USART1_TX
xxxxxxxxxxx PD6  is USART1_RX
            
    -------------------------- USART3 ---------------------------
xxxxxxxxxxx PB10 is USART1_TX
xxxxxxxxxxx PB11 is USART1_RX
            
xxxxxxxxxxx PC10 is USART1_TX
            PC11 is USART1_RX
            
xxxxxxxxxxx PD8  is USART1_TX
xxxxxxxxxxx PD9  is USART1_RX


    -------------------------- USART4 ---------------------------
            PA0  is USART1_TX
            PA1  is USART1_RX
            
xxxxxxxxxxx PC10 is USART1_TX
            PC11 is USART1_RX
            
    -------------------------- USART5 ---------------------------
            PC12 is USART1_TX
            PC2  is USART1_RX
            
    -------------------------- USART6 ---------------------------
xxxxxxxxxxx PC6  is USART1_TX
xxxxxxxxxxx PC7  is USART1_RX
            
            PG14 is USART1_TX
            PG9  is USART1_RX
            
    -------------------------- USART7 ---------------------------
xxxxxxxxxxx PE8  is USART1_TX
xxxxxxxxxxx PE7  is USART1_RX
            
            PF7  is USART1_TX
            PF6  is USART1_RX
            
    -------------------------- USART8 ---------------------------
xxxxxxxxxxx PE1  is USART1_TX
xxxxxxxxxxx PE0  is USART1_RX
    */                                       


/////// Configure USART1 Rx (PA10) as input
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_10;   
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  
/////// Configure USART1 Tx (PA9) as alternate function
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOA, &GPIO_InitStructure);    
    
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);




    
   // Configure UART4 Rx (PA1) as input
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1;   
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
  
    // Configure UART4 Tx (PA0) as alternate function
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOA, &GPIO_InitStructure);    
    
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource0 ,GPIO_AF_UART4);
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource1 ,GPIO_AF_UART4);
    
    
    
    
    
   // Configure USART6 Rx (PG9) as input
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;   
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOG, &GPIO_InitStructure);
  
    // Configure USART6 Tx (PG14) as alternate function
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_Init(GPIOG, &GPIO_InitStructure);    
    
    GPIO_PinAFConfig(GPIOG,GPIO_PinSource9 ,GPIO_AF_USART6);
    GPIO_PinAFConfig(GPIOG,GPIO_PinSource14,GPIO_AF_USART6);
    
    /* USARTx configured as follow:
        - BaudRate = 9600 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitStruct.USART_BaudRate = 57600;
  USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  USART_InitStruct.USART_StopBits = USART_StopBits_1;
  USART_InitStruct.USART_Parity = USART_Parity_No;
  USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  USART_Init(USART1, &USART_InitStruct);


  USART_InitStruct.USART_BaudRate = 9600;
  USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  USART_InitStruct.USART_StopBits = USART_StopBits_1;
  USART_InitStruct.USART_Parity = USART_Parity_No;
  USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  USART_Init(UART4, &USART_InitStruct);


  USART_Cmd(USART1, ENABLE);
  USART_Cmd(UART4, ENABLE);
}

Outcomes