Electronic – UART signal is “rounded”

serialstm32uart

I am trying to debug a UART driver for the STM32F405. It does not work above a certain baud rate (about 50 kBd). I connected it to a logic analyzer with analog capability, and I saw that the signal is rounded; it takes time for the signal to rise. It seems that at higher baud rates the signal does not rise high enough for it to be read.

How can I allow the UART to function at higher speeds? I'm not sure if this is a hardware problem, or if it can be corrected in software.

Screenshot of logic analyzer, MCU transmitting at 38400 baud.
A screenshot of the Saleae Logic program showing that the serial signal rises slowly, and does not quite reach to same level as longer signals

Screenshot of logic analyzer, MCU transmitting at 115200 baud.
A screenshot of the Saleae Logic program showing that the serial signal rises slowly, with peaks not reaching nearly as high as full signal level.

More details:

  • I am reading the serial connection with a FTDI chip connected to my desktop.
  • I sniffed this connection with a Saleae Logic 8 connected to the same lines as the FTDI.
  • In the screenshots shown, the board is sending "testing" over the serial.
  • The MCU is part of an OpenPilot Revolution flight controller.

Best Answer

Check that the GPIO pin for UART TX is configured for alternative output push pull mode. It looks like it is configured for alternative output open drain.