armstm32cortex-mstm32cubeideusart

stm32l431 apply in RS485 : DEDT[4:0] isn't work


when i not waiting the TC but not work as expect: enter image description here

when i wait for the TC as work as expect: enter image description here

why the first case won't work? Shouldn't the DEDT (Driver Enable Delay Time), which refers to the duration of the high level, be automatically inserted by the hardware after the shift register has completed its transmission? Does the TDR directly transfer data to the shift register without waiting for DEDT?


Solution

  • DEDT functionality is related to RS485 and DE pin/signal. The purpose of DEDT is not to insert delays between individual transmitted frames (bytes), but to add a delay at the end of a whole message, before deasserting DE, so that the RS485 transmitter is not switched off immediately after the last frame's stopbit - this may be needed for some RS485 installations.

    If you need inter-character delay, use 1.5 or 2 stopbits. If you need longer delay, you have to use some different technique, e.g. transmit using timer-triggered DMA (in that case, if you use also DE and want it to be continuous, you'd need to handle it "manually").

    JW