SeaTalk Technical Reference Part 1: How SeaTalk works
SeaTalk uses three wires, connected in parallel to all devices on the
- +12V Supply, red
- GND Supply, grey
- Data Serial Data, yellow:
0V=Space/Data=0, 4800 Baud, pullup circuit in each device, talker pulls
down to 0V (wired OR). For connection to a
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.
in the parity bit of most UARTs. Not compatible with NMEA0183 but well
suited for the multiprocessor communications mode of 8051-family
(bit SM2 in SCON set).
1 Stop bit (+12V)
Composition of Messages
Each datagram contains between 3 and 18 characters:
- Type of command (the only byte with the command-bit set)
- Attribute Character, specifying the total length of the datagram
least significant nibble:
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
- First, mandatory data byte
- - 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
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.
There is no master on the bus. Every device has equal rights and is
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
idle-bus-waiting-time. This allows messages from other devices with a
priority to be transmitted first. The different waiting times of all
make data collisions (two or more devices start talking at exactly the
same moment) very rare. Since each device also listens to its own
it will recognize when its message is garbled by a second talker. In
case it abandons the remaining characters of the datagram. It waits for
the bus to become free again and then retransmits the whole message.
listeners this means that messages which are shorter than expected are
invalid and have to be cancelled totally.
Some characters are repeated with all bits inverted for noise or
error detection. Example: 0xA2 is followed by 0x5D. The sum of both
must always be 0xFF. The listing below shows repeated bytes in small
(example: ZZ zz).
Numerical values are transmitted binary coded and with least
data first. Example: 0x13 0x57 means 0x5713 = 22291
Some values are put together by certain bits of a byte or nibble.
meaningful bits can be isolated by a bitwise AND operation (&).
(U & 0x3) filters the least significant two bits of U.
The "distance to destination" value (ZZZ in command 0x85) uses a
factor of 1/10 or 1/100 nm depending on the shift indicator bit (LSBit
Return to Top of Page
2 Part 3