Communication over the SB-Bus takes place in full duplex mode with a speed of 9600 Baud, 8 data bits, no parity, and 1 stop bit. I know, 9600 Baud is not very fast by today's standards. But keep in mind that we're communicating with small micro controllers, which won't necessarily be able to go much faster.
All Slaves can only receive data coming from the Master.
It is not possible for Slaves to communicate among them selves.
Therefore communication is always initiated by the Master.
All Slaves talk back to the Master over the same line. To avoid chaos Slaves are only allowed to speak when they are spoken to. A more technical term is that a Slave may only send something when it is selected by its own address.
All commands are given in "plain English". This allows the devices to be controlled by a human, operating a terminal emulation program on the Master computer.
Even though each character is sent as an 8-bit byte, we use only 7-bits ASCII for communication.
The extra 8th bit is used to distinguish data characters from address bytes.
Whenever bit b7 of the character sent by the Master is 0 it is a normal ASCII data byte. When bit b7 sent by the Master is 1 the character is interpreted as an address byte. This way we can have up to 128 different addresses.
A selected, or addressed, Slave reports its status by sending one of 3 prompts to the Master.
There is a prompt for the OK status, one for the Syntax Error status and one for the Execution Error status.
Whenever a Slave receives its own address from the Master it responds by sending the OK status prompt and then waits for a command from the Master.
After executing a command the Slave may respond with some messages, and finally it will send one of the 3 status prompts back to the Master. A Slave may never send more data after sending one of the three status prompts until it receives the next command.
My way of keeping this site alive.