2017-05-15 01:40 AM
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
Solved! Go to Solution.
2017-05-22 12:43 AM
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
2017-05-22 07:05 AM
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.
2017-05-25 07:04 AM
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
2017-05-25 07:54 AM
The Nucleo board already has an onboard ST-Link V2/1. Just plug and play.
JW
2017-05-25 09:10 AM
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
2017-05-29 03:51 PM
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.