2026-02-05 9:45 AM
Hello,
I am working with an STM32MP135f-dk device running Linux and trying to evaluate the possibility of using the USART peripheral in synchronous mode (TX/RX + CK).
From a hardware point of view, the STM32 USART clearly supports synchronous operation. However, when using the standard STM32 USART Linux kernel driver, the peripheral is only exposed as a /dev/ttySTM* device and operates strictly in asynchronous (UART) mode.
As far as I can see, the current driver does not enable or drive the CK clock signal, which makes true synchronous USART communication impossible under Linux, even though the underlying hardware is a USART.
My questions are:
1. Is this limitation expected by design in the current STM32 Linux USART driver?
2. Has anyone successfully implemented synchronous USART on STM32 under Linux, for example by: Extendimg the existing driver, writing a custom kernel driver, or using an alternative ?
2026-02-05 10:25 AM
Regarding 1.: yes
/dev/tty* seem to support only async mode, see https://wiki.st.com/stm32mpu/wiki/USART_internal_peripheral "4. Software frameworks and drivers":
Linux®: serial/tty framework; however, the Linux® kernel supports only the UART Asynchronous mode (Synchronous mode not supported)
So another driver will be required...
2026-02-05 11:59 PM
2026-02-06 2:38 AM
Hi,
I'm not SW expert, so, I don't know if USART synchronous Linux driver (and associated framework) exists.
Maybe try to use SPI instead of USART for synchronous communications.
Otherwise, build you own custom driver.
Regards.
2026-02-06 2:45 AM
Maybe have a look to
https://wiki.st.com/stm32mpu/wiki/USART_internal_peripheral#Software_frameworks_and_drivers
which mention optee driver for USART synchronous for smartcard communication.