2019-03-01 06:28 AM
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
2019-03-01 08:04 AM
If it is using DMA, those settings are probably wrong.
Make sure there aren't any secondary references to USART2
2019-03-01 08:23 AM
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: