cancel
Showing results for 
Search instead for 
Did you mean: 

Usart4 no TX

stenasc
Senior
Posted on May 15, 2017 at 10:40

Hi Forum,

I'm using the stm32f091RCt6, (LQFP64) to set up USART4

Kind Regards

Bob

  USART_InitTypeDef USART_InitStructure;

  GPIO_InitTypeDef GPIO_InitStructure;

  NVIC_InitTypeDef NVIC_InitStructure;

  // Enable GPIOC clock

  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

 

  // Enable USART3 APB clock

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART4, ENABLE);

    

 

  // Connect pin to Periph

  GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_0);   //  USART4 TX

  GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_0);   //  USART4 RX

 

  // Configure pins as AF pushpull

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;

  GPIO_Init(GPIOC, &GPIO_InitStructure);

      

  USART_InitStructure.USART_BaudRate = 9600;

  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_Init(USART4, &USART_InitStructure);

    

  USART_Cmd(USART4, ENABLE);

      

//  Enable the COM4 Receive interrupt: this interrupt is generated when the

//  COM4 receive data register is not empty

  USART_ITConfig(USART4, USART_IT_RXNE, ENABLE);

  // USART4 IRQ Channel configuration

  NVIC_InitStructure.NVIC_IRQChannel = USART3_8_IRQn;   

  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

Although I can receive data I cannot get any TX at all.  I have usart1 and usart2 working fine. not sure what is is. I've buzzed out all the board connections and they are fine. Looking at the clock tree on page16 of the datasheet, I notice PCLK only goes to usart1, usart2 and usart3. Does usart4 need some aqlternative form of clocking? The datasheet really doesnt say to much about usarts4 to 8 and there are no app notes out there to refer to so i'm stuck at this point.

Thanks for any help.

Regards Bob

35 REPLIES 35
stenasc
Senior
Posted on May 22, 2017 at 09:43

OK, nothing showed up on boards, so going to order a NUCLEO-F091RC kit today. Not sure what that is going to tell me, if it is my code setup that's at fault but at £8.71 each, its not going to really break the budget.

Bob

Posted on May 22, 2017 at 14:05

It will tell you whose side of the fence the problem is. If it is ST's then they will have a specific target board from which to replicate the issue, and kills arguments about implementation. 

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Posted on May 25, 2017 at 14:04

I received the Nucleo board, but it now looks as if I need a different programmer. I have an ST-Link V2 programmer which I can either use with St-Link software or Uvision (see link). As I don't have a header to fit the Nucleo boards, can I use flying leads from this programmer or do I need to order a new type. Also tried mbed, but I'm really not interested in this. I currently use Uvision to develop code and this serves me well, so I don't particularly want to change.  

Can you recommend a programmer that will do the job.

Thank you

Bob

http://uk.rs-online.com/web/p/products/7141701/?grossPrice=Y&cm_mmc=UK-PLA-_-google-_-PLA_UK_EN_Semiconductors-_-Semiconductor_Development_Kits&mkwid=sOE1F4w4l_dc|pcrid|88057061283|pkw||pmt||prd|7141701&gclid=COm0gsn-itQCFdKEswod_ZcNLw

 
Posted on May 25, 2017 at 14:54

The Nucleo board already has an onboard ST-Link V2/1. Just plug and play.

JW

Posted on May 25, 2017 at 16:10

No need for programming cable? Just use the USB. Is that correct or do I need another cable? I downloaded the ST-Link driver and used the ran ST-Link software but it couldnt connect to the Nucleo. Perhaps my ST-Link software is out of date.

Bob

Posted on May 29, 2017 at 22:51

Hi Forum,

Finally found the issue. It turned out to be a manufacturing problem. A solder ball short was present on some boards and not on others between a via under the ST part and pin. It looks as if there wasn't enough clearance between them and occurred during solder reflow. If the board was shaken, then it sometimes moved, and everything looked good.

So many thanks to everyone who replied. All of you were pointing in the correct direction. The Nucleo board proved that the TX pin worked so that gave me a good baseline so start with. I also understand now why swapping the pins allowed the TX to work. Many thanks to you all.

Kind Regards

Bob.