cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F7508-DK UART Tx/Rx Stoppage

EAlta.1
Associate

With my STM32F7508-DK board, I am interfacing to a BLE board over UART without hardware flow control. Due to pin conflicts, RTS/CTS is not available on that board. My primary issue is when BLE board sends 10K text buffers, STM32F7508-DK UART stops Tx and Rx and never recovers.  

My baud rate is 115200, however, even 9600 bps is causing the same issue. If the BLE board adds 1 ms delay between its Tx, problem does not happen. Also, Tx-only or Rx-only comm does not have an issue. Polled, interrupt driven and DMA based drivers all display the same issue. Only high data rate simultaneous Tx/Rx has the issue.

In order to isolate the problem, I started a new project with only internal flash and internal RAM.  I created a loop with a polled read and does polled write to echo incoming chars. I feed the UART with an external data generator. If I use anything other than '0' for timeout, same problem is observed.  If I add delays to my transmitted characters, problem goes away. I am wondering if this issue is observed by the community and if there is a fix other than adding delays after Tx chars.

Here is my setup: 

STM32F7508-DK with STM32F750N8H6 7BA8M VQ Z PHL 7B 828

STM32CubeIDE

Version: 1.7.0

Build: 10852_20210715_0634 (UTC)

OS: Windows 10, v.10.0, x86_64 / win32

Java version: 11.0.10

STM32Cube_FW_F7_V1.16.1

1 REPLY 1
TDK
Guru

Sounds like you are getting an overrun. Check for that flag when the program is in the failed state.

Perhaps show your code. The issue is almost certainly in there. There aren't major errors in the hardware.

A robust method for handling UART reception is to use a circular buffer that is always active and poll occasionally for new data.

If you feel a post has answered your question, please click "Accept as Solution".