2021-03-10 03:53 AM
Hi all
I used STM32F429 connected with LTE module by USART3,but I can only set the baudrate 230600. If I set 460800 or 921600,MCU can't transmit or receive data from LTE.
How can I set the baudrate over 230600??
void uart_init()
{
UART3_Handler.Instance=USART3;
//UART3_Handler.Init.BaudRate=921600;
//UART3_Handler.Init.BaudRate=460800;
UART3_Handler.Init.BaudRate=230400;
UART3_Handler.Init.WordLength=UART_WORDLENGTH_8B;
UART3_Handler.Init.StopBits=UART_STOPBITS_1;
UART3_Handler.Init.Parity=UART_PARITY_NONE;
UART3_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;
UART3_Handler.Init.Mode=UART_MODE_TX_RX;
HAL_UART_Init(&UART3_Handler);
}
Regards,
2021-03-10 03:59 AM
Should be capable of several Mbaud.
You got transceivers or level shifters in the path?
2021-03-10 04:42 AM
I am sure that the LTE module uart can reach 3000000
and no, I connect the STM32 board and LTE module directly.
2021-03-10 11:58 AM
Very probable that ST's buggy bloatware is incapable of keeping up with such speeds. Implement something sane like this:
2021-03-10 12:03 PM
Get a scope on the signals and check the timing.
Check HSE_VALUE is correct.
Many cellular modems use 1.8V signalling, no idea the make/model involved here, or specifics about board.
I'd back off on the slew-rate (SPEEDR) none of the previously mentioned speeds exceed 5 MHz, no need to put 100 MHz edges on things.
Check integrity, and ringing issues, use series resistors if necessary.
Check if you're getting Noise or Framing Errors, or Over/Underruns.