SeaTalk Technical Reference Part 1: How SeaTalk works
Hardware-Interface
SeaTalk uses three wires, connected in parallel to all devices on the
bus:
- +12V Supply, red
- GND Supply, grey
- 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:
- Type of command (the only byte with the command-bit set)
- Attribute Character, specifying the total length of the datagram
in the
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
characters - 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
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