A.P.Richelieu <aprichelieu@gmail.com> wrote:> Atmel (now Microchip) ARM products has a serial port which supports > handling the RS-485 direction in hardware. It also has an interrupt > which is triggered after a programmable delay has occured without any > receied characters. >Similar for recent STM32 U(s)arts. -- Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt --------- Tel. 06151 1623569 ------- Fax. 06151 1623305 --------- (Phone also available during "mobile work")
Linux embedded and direction control of RS485 transceiver
Started by ●March 23, 2021
Reply by ●May 9, 20212021-05-09
Reply by ●May 10, 20212021-05-10
Il 09/05/2021 13:24, A.P.Richelieu ha scritto:> Den 2021-03-24 kl. 00:06, skrev pozz: >> I have an half-duplex RS485 bus with 10-20 different nodes. Some of >> them are 8-bit MCU based, one of them could be Linux embedded. >> >> It's half-duplex, so it's important for the transmitter node to >> disable the driver as soon as the last transmitted bit is shifted out. >> >> Many small low-cost MCU has interrupt on transmission complete, so the >> delay of disabling the driver is usually on the order of microseconds. >> >> Some new Cortex-M MCUs have an automatic control of external RS485 >> transceiver, so the delay is really zero. >> >> What happens in Linux embedded systems? Many of them are based on NXP >> i.MX CPUs and it seems they aren't able to control the RS485 direction >> in hardware, but some code is needed. This approach could increase the >> delay of disabling the driver in the order of milliseconds. >> >> Is it possible that a powerful CPU isn't able to control RS485 driver >> in hardware? > > Atmel (now Microchip) ARM products has a serial port which supports > handling the RS-485 direction in hardware. It also has an interrupt > which is triggered after a programmable delay has occured without any > receied characters.I know SAM D family MCUs has a nice SERCOM peripheral with RS485 direction in hardware. But my discussion was for Linux embedded, so MPUs (Cortex-A).