It is possible to transmit "RS232" serial data directly at 600 to 9600bps baud between a pair of BiM1 transceivers in half duplex mode.
The data must be "packetised" with no gaps between bytes. i.e. The data must be preceded by >10ms of preamble (55h or AAh) to allow the data slicer in the BiM1 to settle, followed by one 00h and one FFh bytes to allow the receive UART to lock, followed by a unique start of message byte, (01h), then the data bytes and finally terminated by a CRC or check sum. The receiver data slicer provides the best bit error rate performance on codes with a 50:50 mark:space average over a 5ms period, a string of FFh or 00h is a very asymmetric code and will give poor error rates where reception is marginal. Only 50:50 codes may be used at data rates above 1kbps.
Radiometrix recommend 3 methods of improving mark:space ratio of serial codes, all 3 coding methods are suitable for transmission at 10kbps:
Bit rate , Max 10kbps , Min 250bps Redundancy (per bit) 100% (Bi-phase)
Each bit to be sent is divided in half, the first half is the bit to be sent and the second half, it's compliment. Thus each bit has a guaranteed transition in the centre and a mark:space of 50:50 . This is Bi-phase or Manchester coding and gives good results, however the 100% redundancy will give a true throughput of 5kbps.
Another variation of this code is to encode a '1' as a long bit with one transition and '0' as a short bit with two transition or vice versa. Each encoded bit starts with a guaranteed transition to reverse the voltage level even if stream of 00h/FFh is encoded. This is called Differential Manchester Encoding. This encoding method is easier to decode as the decoder has to sample encoded bit several times and if the sample value is more than 75% of a long bit period, then it is decoded as '1' and if there was transition then it is decoded as '0' or vice versa.
Bit rate , Max 10kbps, Min 2.4kbps Redundancy (per byte) 100%
Each byte is sent twice; true then it's logical compliment. e.g. even bytes are true and odd bytes are inverted. This preserves a 50:50 balance.
A refinement of this simple balancing method is to increase the stagger between the true and the inverted data streams and add parity to each byte. Thus the decoder may determine the integrity of each even byte received and on a parity failure select the subsequent inverted odd byte. The greater the stagger the higher the immunity to isolated burst errors.