A SeaTalk protocol converter

Wouter van Ooijen (wouter@voti.nl)

SeaTalk is a propriateatry bus used for networking Autohelm/Raytheon marine equipment so that all devices on a ship can share their data. The protocol is not disclosed by the manufacturer, but Thomas Knauf has decoded the protocol. The SeaTalk protocol is just asynchronous serial at 4800 baud, but it uses the parity bit to flag the start of a message.

Hans van Veldhuizen wanted to interface his ST1000+ autopilot to his home-made board computer, but this board computer can not handle the parity bit. Hence we made a PIC-based protocol converter. Hans was only interested in one of the messages from the ST1000+ (the compass reading, message starts with 0x9C), so the PIC just waits for that particular message (recognised by a 0x9C byte with the parity set), reads the data, and sends out the data in a format that the board computer can handle.


The picture shows how it all looked on my workbench. Bottom up: the ST1000+ autopilot, the PIC on a breaboard, and the board computer. The circuit is too simple to show here: just the 16f84 with the Xtal, caps, MCLR pull-up and the power decoupling cap. Actually only the components on the right side of the breadboard are relevant, the left side is a 12c508 dice (not my design) I was working on.

The SeaTalk serial bus uses 0..+12V. I just fed that level to a PIC pin via a 10k resistor. For real work some interface will be needed.

The standard Jal asynchronous serial libraries can not handle parity or different polarity for sending and receiving, so the program contains a modified copy of those libraries. The program assumes a 16f84 at 4 MHz, because that is what Hans had at hand. The code can easily be changed to run at 10 MHz.


  Jal source (Jal 04-33)
  hex file.


  2001-05-03 first version