Skip to main content
ErosS
Associate
March 1, 2019
Question

UART initialization problem with B-ST072Z-LRWAN1

  • March 1, 2019
  • 2 replies
  • 657 views

Hi, I am modifying the sample program End_Node on the kit B-L072Z-LRWAN1.

UART2 is configured as a virtual com and works correctly on PA2 and PA3 pins. I'm trying to add a second serial on PA9 and PA10 but I can not receive and transmit anything. I then tried to modify the working virtual com to use the PA9 and PA10 pins but without success.

The initial working configuration is as follows:

#define USARTx USART2
#define USARTx_CLK_ENABLE() __USART2_CLK_ENABLE();
#define USARTx_RX_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
#define USARTx_TX_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE() 
#define DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
 
#define USARTx_FORCE_RESET() __USART2_FORCE_RESET()
#define USARTx_RELEASE_RESET() __USART2_RELEASE_RESET()
 
 
#define USARTx_TX_PIN GPIO_PIN_2
#define USARTx_TX_GPIO_PORT GPIOA 
#define USARTx_TX_AF GPIO_AF4_USART2
#define USARTx_RX_PIN GPIO_PIN_3
#define USARTx_RX_GPIO_PORT GPIOA 
#define USARTx_RX_AF GPIO_AF4_USART2
 
/* Definition for USARTx's NVIC */
#define USARTx_IRQn USART2_IRQn
#define USARTx_IRQHandler USART2_IRQHandler
 
/* Definition for USARTx's DMA */
#define USARTx_TX_DMA_CHANNEL DMA1_Channel7
 
/* Definition for USARTx's DMA Request */
#define USARTx_TX_DMA_REQUEST DMA_REQUEST_4
 
/* Definition for USARTx's NVIC */
#define USARTx_DMA_TX_IRQn DMA1_Channel4_5_6_7_IRQn
#define USARTx_DMA_TX_IRQHandler DMA1_Channel4_5_6_7_IRQHandler
 
#define USARTx_Priority 0
#define USARTx_DMA_Priority 0

I modified it as follows:

#define USARTx USART1
#define USARTx_CLK_ENABLE() __USART1_CLK_ENABLE();
#define USARTx_RX_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE()
#define USARTx_TX_GPIO_CLK_ENABLE() __GPIOA_CLK_ENABLE() 
#define DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
 
#define USARTx_FORCE_RESET() __USART1_FORCE_RESET()
#define USARTx_RELEASE_RESET() __USART1_RELEASE_RESET()
 
 
#define USARTx_TX_PIN GPIO_PIN_9
#define USARTx_TX_GPIO_PORT GPIOA 
#define USARTx_TX_AF GPIO_AF4_USART1
#define USARTx_RX_PIN GPIO_PIN_10
#define USARTx_RX_GPIO_PORT GPIOA 
#define USARTx_RX_AF GPIO_AF4_USART1
 
/* Definition for USARTx's NVIC */
#define USARTx_IRQn USART1_IRQn
#define USARTx_IRQHandler USART1_IRQHandler
 
/* Definition for USARTx's DMA */
#define USARTx_TX_DMA_CHANNEL DMA1_Channel7
 
/* Definition for USARTx's DMA Request */
#define USARTx_TX_DMA_REQUEST DMA_REQUEST_4
 
/* Definition for USARTx's NVIC */
#define USARTx_DMA_TX_IRQn DMA1_Channel4_5_6_7_IRQn
#define USARTx_DMA_TX_IRQHandler DMA1_Channel4_5_6_7_IRQHandler
 
#define USARTx_Priority 0
#define USARTx_DMA_Priority 0

where am I wrong?

Thanks in advance

This topic has been closed for replies.

2 replies

Tesla DeLorean
Guru
March 1, 2019

If it is using DMA, those settings are probably wrong.

Make sure there aren't any secondary references to USART2

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
ErosS
ErosSAuthor
Associate
March 1, 2019

Hello, thank you for your answer!

I checked there are no other references to UART2 in the project.

It's like there's some Clock / DMA / Interrupt setting that works on UART2 that can not be applied to UART1 even if the data sheet would not look like:

0690X000006DwMrQAK.jpg