1

[Update] This question was correctly closed several years ago. However, nowadays, it could be asked on https://hardwarerecs.stackexchange.com/ - I just wanted to make others aware of this very helpful site.


I need to connect to serial port on a system bus which uses 9 data bits.

Is there an off the shelf card which will handle that? Obviously it would need to come with driver software to return 9 (actually 16, with 7 unused) bits for each character sent on the serial bus.

5
  • 1
    Which serial adapters have you tried already? Can you provide some context as to why you need this? Specific abilities your are expecting (beyond 'return 9-bits') Apr 11, 2012 at 23:08
  • as far as I know serial means bits are sent one after another, are you maybe looking for a parallel solution? (I have to add that I am just getting into this topic) [1] en.wikipedia.org/wiki/Serial_communication [2] en.wikipedia.org/wiki/Parallel_communication
    – Baarn
    Apr 11, 2012 at 23:09
  • 1
    How critical is the application? 8 bit buses often have a 9th bit for parity which you could usurp as an extra data bit. You'll want to provide a lot more detail about what you are up to...
    – Paul
    Apr 11, 2012 at 23:23
  • +1 "Which serial adapters have you tried already?" None "Can you provide some context as to why you need this?" No need (and commercal confidential)- just 9 data bits is all. "Specific abilities your are expecting (beyond 'return 9-bits')" None - just 9 data bits inplace of the more common 8. Apr 12, 2012 at 1:59
  • Walter, Nope, not parallel. @Paul +1 There are kudlges which use the parity bit as a 9th data bit, but they tricky to implement (I have researched). I will not implement. I might - in extremis - purchase usch a solution, but strongly prefer a full 9 bits data plus start/stop/parity. Apr 12, 2012 at 2:02

1 Answer 1

2

There are USARTs that can send & receive 9 bits of data (with or without parity) per character. But I have only seen them as an integrated device that is part of a microcontroller or System-on-a Chip (SoC). I've seen 9-bit capable USARTs on Atmel ARM and AVR SoCs. The typical 8250 or 16550 type of UART (that are considered PC-compatible devices) are not capable of 9-bit characters, and are limited to 8 bits per character.

However there are various kludges to use 8 data bits plus the parity bit to simulate a 9-bit character.

Use The PC's UART With 9-Bit Protocols

Can I Do 9-bit Serial Communication Instead of 7 or 8 bits?

One scheme for transmission is to reconfigure the UART parity (to ODD or EVEN) before each byte transmission, according to the 9th data bit and the parity of the lower 8 bits. Receiving a 9-bit character is a bit trickier, as each character's 9th bit has to be derived from the parity of the received 8 bits plus whether or not there was a parity error for that byte. This scheme should be done at the device driver level, and may significantly reduce data throughput.

ADDENDUM

I am looking for a natie 9-bit card + driver for Windows.

Then this is technically a shopping question, which is not allowed on SU.

However I did find exactly what you are asking for (and it's not cheap):

Sealevel 7205e : Low Profile PCI Express RS-232, RS-422, RS-485 Serial Interface

The 7205e low-profile PCI Express serial interface provides two serial ports configurable for RS-232, RS-422 or RS-485. Each serial port utilizes a 16C950 UART with 128-byte Tx/Rx FIFOs that enables data rates to 921.6K bps for reliable high-speed communications in data intensive applications. This high-performance UART includes 9-bit framing support and is fully software compatible with legacy 16550 applications. In addition, the 14.7456 oscillator and UART's flexible clock prescalar supports the widest range of standard and non-standard baud rates.

6
  • +1 I am using an Atmel UC3 wth native 9 bit support & need to handle the communication on a PC. So, I am looking for a natie 9-bit card + driver for Windows. Walter, Nope, not parallel. @Paul +1 There are kudlges which use the parity bit as a 9th data bit, but they tricky to implement (I have researched). I will not implement. I might - in extremis - purchase usch a solution, but strongly prefer a full 9 bits data plus start/stop/parity. – Mawg just now edit Apr 12, 2012 at 2:03
  • 1
    @Mawg - added PCIe board solution to answer.
    – sawdust
    Apr 12, 2012 at 2:32
  • +1 Wow, you weren't joking "not cheap" $260!! I will keep googling, I think :-) Apr 12, 2012 at 3:45
  • 1
    @Mawg - Use those low-cost adapters with caution. Apparently they use the MCS9901CV UART. A manufactuer's datasheet for the actual chip does not mention 9-bit capability, only the standard 5, 6, 7 & 8-bit data lengths. asix.com.tw/… A press release by MOSCHIP claims 9-bit data capability, but I can't find a datasheet that actually supports that marketing claim. 9-bit data length does not seem to be a capability of any of the 16C450 / 550 / Extended 550 / 650 UARTs.
    – sawdust
    Apr 12, 2012 at 11:08
  • 1
    The 16950 (or 16C950) UART is the chip you want for 9-bit data. dcd.pl/workspace/documentation/gen/d16950_ds.pdf
    – sawdust
    Apr 12, 2012 at 11:42

Not the answer you're looking for? Browse other questions tagged .