Navigation: Home =>Profil=>SeaTalk=>Part1
Stand: 01.02.2009

SeaTalk Technical Reference Part 1: How SeaTalk works


SeaTalk uses three wires, connected in parallel to all devices on the bus:
  1.  +12V    Supply, red
  2.  GND    Supply, grey
  3.  Data     Serial Data, yellow: +12V=Idle/Mark=1, 0V=Space/Data=0, 4800 Baud, pullup circuit in each device, talker pulls down to 0V (wired OR). For connection to a RS232 receiver voltage levels must be inverted.

Serial Data Transmission

11 bits are transmitted for each character:
  • 1  Start bit (0V)
  • 8  Data Bits (least significant bit transmitted first)
  • 1  Command bit, set on the first character of each datagram. Reflected in the parity bit of most UARTs. Not compatible with NMEA0183 but well suited for the multiprocessor communications mode of 8051-family microcontrollers (bit SM2 in SCON set).
  • 1  Stop bit (+12V)
  • Composition of Messages

    Each datagram contains between 3 and 18 characters:
    1. Type of command (the only byte with the command-bit set)
    2. Attribute Character, specifying the total length of the datagram in the least significant nibble:

    3.       Most  significant 4 bits: 0 or part of a data value
            Least significant 4 bits: Number of additional data bytes = n  =>
            Total length of datagram = 3 + n  characters
    4. First, mandatory data byte
    5. - 18.  optional, additional data bytes

    No datagrams or devices carry addresses. This eliminates the need for an initialization or arbitration phase on the bus. Events (such as a keystroke) are published as soon as they occure. Measured data is repeatedly transfered, typically about once per second. So the current values are always available to all devices on the bus and there is no need (and with the exception of command A4 no way) to request a particular information.

    Collision Management

    There is no master on the bus. Every device has equal rights and is allowed to talk as soon as it recognizes the bus to be idle (+12V for at least 10/4800 seconds). Low priority messages use a longer or randomly selected idle-bus-waiting-time. This allows messages from other devices with a higher priority to be transmitted first. The different waiting times of all devices make data collisions (two or more devices start talking at exactly the same moment) very rare. Since each device also listens to its own transmission it will recognize when its message is garbled by a second talker. In this case it abandons the remaining characters of the datagram. It waits for the bus to become free again and then retransmits the whole message. For listeners this means that messages which are shorter than expected are invalid and have to be cancelled totally.

    Data Coding

    Some characters are repeated with all bits inverted for noise or transmission error detection. Example: 0xA2 is followed by 0x5D. The sum of both bytes must always be 0xFF. The listing below shows repeated bytes in small letters (example: ZZ zz).

    Numerical values are transmitted binary coded and with least significant data first.  Example: 0x13 0x57 means 0x5713 = 22291

    Some values are put together by certain bits of a byte or nibble. The meaningful bits can be isolated by a bitwise AND operation (&). Example: (U & 0x3) filters the least significant two bits of U.

    The "distance to destination" value (ZZZ in command 0x85) uses a scaling factor of 1/10 or 1/100 nm depending on the shift indicator bit (LSBit of Y).

    Return to Top of Page    Overview     Part 2     Part 3