2024-06-26 01:57 PM - last edited on 2024-06-26 02:01 PM by SofLit
I have been trying to transmit and receive from putty through the USB virtual com (CN1) of the core board, I tried with different baud rates and the result is always the same, garbage arrives at the putty, and I am not receiving anything either, it is my configuration and tks in advance =
static void MX_USART3_UART_Init(void)
{ huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_MSBFIRST_INIT;
huart3.AdvancedInit.MSBFirst = UART_ADVFEATURE_MSBFIRST_ENABLE;
if (HAL_UART_Init(&huart3) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
{
Error_Handler();
}
if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
{
Error_Handler();
}
}
Call to send
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //
{
if(htim->Instance == TIM1)
{
cada2segundos();
}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART3) {
HAL_GPIO_TogglePin(GPIOB, LD1_Pin);
}
}
void cada2segundos(void)
{
HAL_GPIO_TogglePin(GPIOE, LD2_Pin);// ambar
HAL_UART_Receive_DMA(&huart3, rx_buffer,RX_BUFFER_SIZE);
uint8_t mensaje[] = "Hola de nuevo";
HAL_UART_Transmit_IT(&huart3, mensaje, sizeof(mensaje) - 1);
}
Solved! Go to Solution.
2024-06-26 04:34 PM
The problem was the clock configuration, I had done some tests with the callback at different mhz.
Tks (i´m new in stm32 family)
2024-06-26 02:07 PM
Show the MSP code that initializes the clocks and the GPIOs
NUCLEO-H753ZI
Should be using USART3 PD8 / PD9 provided SB12 and SB19 are intact
Serial is typically LSB first!!
huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_MSBFIRST_INIT; // ??
2024-06-26 02:10 PM
Hello and welcome to the community.
First I suggest you to read these recommandations about how to pot a thread on this community: https://community.st.com/t5/community-guidelines/how-to-write-your-question-to-maximize-your-chances-to-find-a/ta-p/575228
Secont I'm wondering why are you using a timer to send your string at this level? What about the periodicity of the timer IT?
Did you try to send the string once? I suggest you to inspire from this "printf" example over UART: https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Projects/STM32H743I-EVAL/Examples/UART/UART_Printf
2024-06-26 02:14 PM
//****************************************************************************
void USART3_Init(uint32_t BaudRate) // TX/RX VCP NUCLEO-H753ZI
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
UART_HandleTypeDef UartHandle = {0};
__USART3_CLK_ENABLE();
__GPIOD_CLK_ENABLE();
/* UART RX/TX GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*## Configure the UART peripheral ######################################*/
/* Put the USART peripheral in the Asynchronous mode (UART Mode) */
/* USART3 configured as follow:
- Word Length = 8 Bits
- Stop Bit = One Stop bit
- Parity = NO parity
- BaudRate = 115200 baud
- Hardware flow control disabled (RTS and CTS signals) */
UartHandle.Instance = USART3;
UartHandle.Init.BaudRate = BaudRate;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
#ifdef UART_ONE_BIT_SAMPLE_DISABLE
UartHandle.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
#endif
if (HAL_UART_Init(&UartHandle) != HAL_OK)
{
/* Initialization Error */
Error_Handler();
}
HAL_NVIC_SetPriority(USART3_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(USART3_IRQn);
}
//****************************************************************************
2024-06-26 04:34 PM
The problem was the clock configuration, I had done some tests with the callback at different mhz.
Tks (i´m new in stm32 family)