I made a device with a stm32f107 and sim800l gsm module . Module is in data mode(PPP) and I'm using LWIP library . My MCU clocks at 72MHz .
My problem is that I get frame error and noise error when gsm module wants to send data. I tried to lower my baud rate step by step. Started from 115200 and at last I used 1200 bps(!!) but problem still exist and even its getting worst.
The funny thing is that I use a uart debug port to monitor my log and at the moment I get frame and noise error I get garbage in my terminal too.
here is my uart configuration
~~~
GSM_UART_Handler.Instance = GSM_USART;
GSM_UART_Handler.Init.BaudRate = baudrate;
GSM_UART_Handler.Init.Mode = UART_MODE_TX_RX ;
GSM_UART_Handler.Init.OverSampling = UART_OVERSAMPLING_16;
GSM_UART_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
GSM_UART_Handler.Init.Parity = UART_PARITY_NONE;
GSM_UART_Handler.Init.StopBits = UART_STOPBITS_1;
GSM_UART_Handler.Init.WordLength = UART_WORDLENGTH_8B;
HAL_UART_Init(&GSM_UART_Handler);
__HAL_UART_ENABLE_IT(&GSM_UART_Handler,UART_IT_IDLE);
HAL_UART_Receive_DMA(&GSM_UART_Handler,DMA_Buffer,DMA_BUFFER_SIZE);
so here are my questions
How does MCU detect noise error?!
Is it possible my main clock source(crystal 8MHZ) deviate when GSM is in transmit mode? How can I see the deviation?(oscilloscope or Logic analyzer )?
May problem disappear if I lower my overall clock frequency (maybe 36 MHz)?