All of lore.kernel.org
 help / color / mirror / Atom feed
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] Documentation about RS485 serial communications
Date: Sun, 15 Aug 2010 23:19:06 +0100	[thread overview]
Message-ID: <20100815221906.GA24153@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <4C686411.3060500@oracle.com>

On Sun, Aug 15, 2010 at 03:02:57PM -0700, Randy Dunlap wrote:
> On 08/14/10 05:50, Claudio Scordino wrote:
> > diff --git a/Documentation/serial/serial-rs485.txt b/Documentation/serial/serial-rs485.txt
> > new file mode 100644
> > index 0000000..93b029e
> > --- /dev/null
> > +++ b/Documentation/serial/serial-rs485.txt
> > @@ -0,0 +1,126 @@
> > +                        RS485 SERIAL COMMUNICATIONS
> > +
> > +1. INTRODUCTION
> > +
> > +   EIA-485, also known as TIA/EIA-485 or RS-485, is a standard defining the
> > +   electrical characteristics of drivers and receivers for use in balanced
> > +   digital multipoint systems.
> > +   This standard is widely used for communications in industrial automation
> > +   because it can be used effectively over long distances and in electrically
> > +   noisy environments.
> > +   Even though the data is transmitted over a 2-wire twisted pair bus, all
> > +   EIA-485 transceivers interpret the voltage levels of the differential
> > +   signals with respect to a third common voltage. Without this common
> > +   reference, a set of transceivers may interpret the differential signals
> > +   incorrectly.
> > +   See [1] for more information.

There are devices on the market which are fully isolating RS485
transceivers which just take the A/B connections, measuring the
differential voltage, and provide you with the TXD/RXD TTL signals
for your UART.

Also note that [1] appears a little confused about the number of pins
required for RS485 - it says two, and then lists three pins.  I don't
think you can use this as being supportive of the requirement for three
connections - and as there are these fully isolating transceivers...

> > +4. USAGE FROM USER-LEVEL
> > +
> > +   From user-level, RS485 configuration can be get/set using the previous
> > +   ioctls. For instance, to set RS485 you can use the following code:
> > +
> > +	#include <linux/serial.h>
> > +
> > +	/* Driver-specific ioctls: */
> > +	#define TIOCGRS485      0x542E
> > +	#define TIOCSRS485      0x542F
> > +
> > +	/* Open your specific device (e.g., /dev/mydevice): */
> > +	int fd = open ("/dev/mydevice", O_RDWR);
> > +	struct serial_rs485 rs485conf;
> > +
> > +	/* Set RS485 mode: */
> > +	rs485conf.flags |= SER_RS485_ENABLED;
> > +
> > +	/* Set rts delay before send, if needed: */
> > +	rs485conf.flags |= SER_RS485_RTS_BEFORE_SEND;
> > +	rs485conf.delay_rts_before_send = ...;
> > +
> > +	/* Set rts delay after send, if needed: */
> > +	rs485conf.flags |= SER_RS485_RTS_AFTER_SEND;
> > +	rs485conf.delay_rts_after_send = ...;
> > +
> > +	ioctl (fd, TIOCSRS485, &rs485conf);

Example code really should do things right, such as check for error
conditions - otherwise people will copy'n'paste this and assume that
the ioctl never fails.

> > +
> > +	/* Use read() and write() syscalls here... */
> > +
> > +	/* Close the device when finished: */
> > +	close (fd);
> > +
> > +5. REFERENCES
> > +
> > + [1]	http://en.wikipedia.org/wiki/Rs485
> > + [2]	include/linux/serial.h

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Randy Dunlap <randy.dunlap@oracle.com>
Cc: "Claudio Scordino" <claudio@evidence.eu.com>,
	"Philippe De Muyter" <phdm@macqel.be>,
	"Wolfram Sang" <w.sang@pengutronix.de>,
	"Linux Kernel" <linux-kernel@vger.kernel.org>,
	"Nicolas Ferre" <nicolas.ferre@atmel.com>,
	"Alan Cox" <alan@lxorguk.ukuu.org.uk>,
	hskinnemoen@atmel.com,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	"Rick Bronson" <rick@efn.org>,
	"John Nicholls" <john@thinlinx.com>,
	"Sebastian Heutling" <Sebastian.Heutling@who-ing.de>,
	"Ryan Mallon" <ryan@bluewatersys.com>,
	"Bernhard Roth" <br@pwrnet.de>,
	"Konrad Mattheis" <mattheis@ukma.de>,
	Elektrolot <elektrolot@wp.pl>,
	"Prchal Jiří" <jiri.prchal@aksignal.cz>,
	gregkh@suse.de, "Andrew Morton" <akpm@linux-foundation.org>
Subject: Re: [PATCH] Documentation about RS485 serial communications
Date: Sun, 15 Aug 2010 23:19:06 +0100	[thread overview]
Message-ID: <20100815221906.GA24153@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <4C686411.3060500@oracle.com>

On Sun, Aug 15, 2010 at 03:02:57PM -0700, Randy Dunlap wrote:
> On 08/14/10 05:50, Claudio Scordino wrote:
> > diff --git a/Documentation/serial/serial-rs485.txt b/Documentation/serial/serial-rs485.txt
> > new file mode 100644
> > index 0000000..93b029e
> > --- /dev/null
> > +++ b/Documentation/serial/serial-rs485.txt
> > @@ -0,0 +1,126 @@
> > +                        RS485 SERIAL COMMUNICATIONS
> > +
> > +1. INTRODUCTION
> > +
> > +   EIA-485, also known as TIA/EIA-485 or RS-485, is a standard defining the
> > +   electrical characteristics of drivers and receivers for use in balanced
> > +   digital multipoint systems.
> > +   This standard is widely used for communications in industrial automation
> > +   because it can be used effectively over long distances and in electrically
> > +   noisy environments.
> > +   Even though the data is transmitted over a 2-wire twisted pair bus, all
> > +   EIA-485 transceivers interpret the voltage levels of the differential
> > +   signals with respect to a third common voltage. Without this common
> > +   reference, a set of transceivers may interpret the differential signals
> > +   incorrectly.
> > +   See [1] for more information.

There are devices on the market which are fully isolating RS485
transceivers which just take the A/B connections, measuring the
differential voltage, and provide you with the TXD/RXD TTL signals
for your UART.

Also note that [1] appears a little confused about the number of pins
required for RS485 - it says two, and then lists three pins.  I don't
think you can use this as being supportive of the requirement for three
connections - and as there are these fully isolating transceivers...

> > +4. USAGE FROM USER-LEVEL
> > +
> > +   From user-level, RS485 configuration can be get/set using the previous
> > +   ioctls. For instance, to set RS485 you can use the following code:
> > +
> > +	#include <linux/serial.h>
> > +
> > +	/* Driver-specific ioctls: */
> > +	#define TIOCGRS485      0x542E
> > +	#define TIOCSRS485      0x542F
> > +
> > +	/* Open your specific device (e.g., /dev/mydevice): */
> > +	int fd = open ("/dev/mydevice", O_RDWR);
> > +	struct serial_rs485 rs485conf;
> > +
> > +	/* Set RS485 mode: */
> > +	rs485conf.flags |= SER_RS485_ENABLED;
> > +
> > +	/* Set rts delay before send, if needed: */
> > +	rs485conf.flags |= SER_RS485_RTS_BEFORE_SEND;
> > +	rs485conf.delay_rts_before_send = ...;
> > +
> > +	/* Set rts delay after send, if needed: */
> > +	rs485conf.flags |= SER_RS485_RTS_AFTER_SEND;
> > +	rs485conf.delay_rts_after_send = ...;
> > +
> > +	ioctl (fd, TIOCSRS485, &rs485conf);

Example code really should do things right, such as check for error
conditions - otherwise people will copy'n'paste this and assume that
the ioctl never fails.

> > +
> > +	/* Use read() and write() syscalls here... */
> > +
> > +	/* Close the device when finished: */
> > +	close (fd);
> > +
> > +5. REFERENCES
> > +
> > + [1]	http://en.wikipedia.org/wiki/Rs485
> > + [2]	include/linux/serial.h

  reply	other threads:[~2010-08-15 22:19 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-29  7:16 [PATCH] atmel_serial: Atmel RS485 support v2 Claudio Scordino
2010-03-29  7:16 ` Claudio Scordino
2010-03-29 19:44 ` Ryan Mallon
2010-03-29 19:44   ` Ryan Mallon
2010-03-30  9:07   ` Claudio Scordino
2010-03-30  9:07     ` Claudio Scordino
2010-03-30 19:37     ` Ryan Mallon
2010-03-30 19:37       ` Ryan Mallon
2010-04-08  7:58       ` Claudio Scordino
2010-04-08  7:58         ` Claudio Scordino
2010-04-08  9:01         ` Russell King - ARM Linux
2010-04-08  9:01           ` Russell King - ARM Linux
2010-04-08 10:13         ` Alan Cox
2010-04-08 10:13           ` Alan Cox
2010-04-08 13:16           ` Claudio Scordino
2010-04-08 13:16             ` Claudio Scordino
2010-04-08 13:42             ` Alan Cox
2010-04-08 13:42               ` Alan Cox
2010-05-26 13:18             ` Nicolas Ferre
2010-05-26 13:18               ` Nicolas Ferre
2010-05-27  8:37               ` Claudio Scordino
2010-05-27  8:37                 ` Claudio Scordino
2010-05-27  9:57                 ` Nicolas Ferre
2010-05-27  9:57                   ` Nicolas Ferre
2010-05-27 10:29                   ` Wolfram Sang
2010-05-27 10:29                     ` Wolfram Sang
2010-05-28 15:05                     ` Claudio Scordino
2010-05-28 15:05                       ` Claudio Scordino
2010-08-11  9:26                     ` [PATCH] Documentation about RS485 serial communications Claudio Scordino
2010-08-11  9:26                       ` Claudio Scordino
2010-08-11 10:02                       ` Philippe De Muyter
2010-08-11 10:02                         ` Philippe De Muyter
2010-08-11 15:32                       ` Randy Dunlap
2010-08-11 15:32                         ` Randy Dunlap
2010-08-11 19:58                         ` Claudio Scordino
2010-08-11 19:58                           ` Claudio Scordino
2010-08-14 12:50                         ` Claudio Scordino
2010-08-14 12:50                           ` Claudio Scordino
2010-08-15 22:02                           ` Randy Dunlap
2010-08-15 22:02                             ` Randy Dunlap
2010-08-15 22:19                             ` Russell King - ARM Linux [this message]
2010-08-15 22:19                               ` Russell King - ARM Linux
2010-10-19 12:28                               ` Claudio Scordino
2010-10-19 12:28                                 ` Claudio Scordino
2010-10-19 14:29                                 ` Grant Edwards
2010-10-19 14:29                                   ` Grant Edwards
2010-10-19 14:29                                   ` Grant Edwards
2010-10-19 15:27                                   ` Alexander Stein
2010-10-19 15:27                                     ` Alexander Stein
2010-10-19 17:22                                     ` Grant Edwards
2010-10-19 17:22                                       ` Grant Edwards
2010-10-20  7:36                                       ` Nicolas Ferre
2010-10-20  8:00                                       ` Alexander Stein
2010-10-20  8:00                                         ` Alexander Stein
2010-10-20 18:56                                         ` Alan Cox
2010-10-20 18:56                                           ` Alan Cox
2010-10-24 11:29                                       ` Claudio Scordino
2010-10-24 11:29                                         ` Claudio Scordino
2010-10-28 15:10                                         ` Chris Down
2010-10-28 15:31                                           ` Claudio Scordino
2010-10-28 16:30                                             ` Chris Down
2010-11-10  9:17                                         ` Nicolas Ferre
2010-11-10  9:17                                           ` Nicolas Ferre
2010-11-10 17:28                                           ` Greg KH
2010-11-10 17:28                                             ` Greg KH
2010-11-11 10:22                                             ` Claudio Scordino
2010-11-11 10:22                                               ` Claudio Scordino
2010-11-16 14:30                                               ` Pavel Machek
2010-11-16 14:30                                                 ` Pavel Machek
2010-11-16 14:30                                                 ` Pavel Machek
2010-11-16 14:58                                                 ` Tosoni
2010-11-16 15:52                                                   ` Grant Edwards
2010-11-16 15:23                                                 ` Grant Edwards
2010-11-16 15:23                                                   ` Grant Edwards
2010-11-16 15:28                                                 ` Alexander Stein
2010-11-16 15:28                                                   ` Alexander Stein
2010-11-16 16:13                                                 ` Matt Schulte
2010-11-16 16:13                                                   ` Matt Schulte
2010-11-16 16:28                                                   ` Grant Edwards
2010-11-16 18:41                                                     ` Matt Schulte
2010-11-16 18:41                                                       ` Matt Schulte
2010-11-16 18:41                                                       ` Matt Schulte
2010-11-16 19:29                                                       ` Grant Edwards
2010-11-16 17:20                                                   ` Alan Cox
2010-11-16 17:20                                                     ` Alan Cox
2010-11-16 18:03                                                     ` Grant Edwards
2010-11-16 20:04                                                       ` Alan Cox
2010-11-16 20:04                                                         ` Alan Cox
2010-11-30 19:19                                                         ` Pavel Machek
2010-11-30 19:19                                                           ` Pavel Machek
2010-05-28  9:42                   ` [PATCH] atmel_serial: Atmel RS485 support v2 Haavard Skinnemoen
2010-05-28  9:42                     ` Haavard Skinnemoen
2010-05-28 13:54                     ` [PATCH] MAINTAINERS: some Atmel drivers change maintainer Nicolas Ferre
2010-05-28 13:54                       ` Nicolas Ferre
2010-05-28 13:31                       ` Haavard Skinnemoen
2010-05-28 13:31                         ` Haavard Skinnemoen
2010-06-11  7:23                       ` Nicolas Ferre
2010-06-11  7:23                         ` Nicolas Ferre
  -- strict thread matches above, loose matches on Subject: below --
2010-08-11 20:20 [PATCH] Documentation about RS485 serial communications Randy Dunlap
2010-08-11 20:23 ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100815221906.GA24153@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.