University of LeicesterPLUMERef: PLM-COMS-DataInter-117-2

Date: 07/08/2009

COMS Data Interface Document

P. Peterson

Date / Updated Reference Number / change
? / PLM-COMS-DataInter-117-1 / first version issued
07/08/2009 / PLM-COMS-DataInter-117-2 / TXPSUEN should not be grounded.

System Information:

A total of 8 connections perform all electronic and software interface on the LRT Transceiver and PIC modem complex. These are:

RADRXD Outputs serial data

RADTXD Serial data input

RSSI VoltageReceived signal strength indicator

RAD+Transmitter power supply

+5V5 Volt Supply

TXPSUEN10 Volt Supply


TXP[1]Transmitted power

We will be using all of these apart from TXPSUEN. This should be disconnected. The 5V supply and 0V are self explanatory, but 0V does need to be a common ground with the MCU input. RAD+ needs to be at 5V for the LRT 470 that we are using.

Electronic Interface:

Communication through RADRXD and RADTXD operates at 9600baud, and each serial character consists of: a start bit, 8 data bits, a 9th bit used to differentiate between commands and data, and a stop bit. Definitions of commands below will omit the start and stop bits. Communications are half duplex and a handshake is returned after every command or data byte received. Commands are sent through RADTXD, output is received on RADRXD.

Command Syntax:


SendXMPL = c,000b,000a = hex value where appropriate

where a = 1st bit, b = 3rd bit, c = 9th bit

This is to be input at RADTXD

ReturnsRTNXMPL = n,nnnn,nnnn

where n0 to n8 may have varying values and follow the order given above i.e. right to left.

This is the expected output at RADRXD

Basic Commands:

Wake and Sleep:

SendWAKE = 1,1111,1111 = 111

(The system will wake to any RADTXD input)

ReturnsWAKAK = 1,0000,0010 = 102

SendSLEEP = 1,1000,0000

The system is now asleep


When awake and when TXP = 0 then any incoming data will return:

DATA = 0,dddd,dddd = 0dd

Where d's represent the data bits.


SendTXSTT = 1,101a,aaaa

where when a4 = 0 , [a0,a3] = 5ms * [0 to 16]

when a4 = 1, [a0,a3] = 80ms * [0 to 16]

Time given is the delay before transmit dataaccepted.

This is to allow:

Raise TXP from 0V to 5V to give a proportional output power.

ReturnsLast received data character then

ACK = 1,0000,0000 = 100


Send0,dddd,dddd = any data

Modulates and transmits data


Sendmore data


SendTXEND = 1,0010,0000 = 120

Ends transmit mode

TXP should now be dropped to 0V

Returns ACK




SendENQ = 1,010a,aaaa

When [a0,a4] = 0,0000

ReturnRQD = 1,0000,0001


Data = 0,bbbb,bbbb

b0 = 1 = channel busy

b1 = 1 = data carrier detected

b2 = 1 = transmitter on

b3 = 1 = test mode on

b4 = 1 = synchroniser out of lock

b5 = 1 = rx buffer overflow

b6 = 1 = tx buffer overflow

b7 = 1 = power on reset status[2]

When [a0,a4] = 0,0001

Return8bit identifier of radio.

When [a0,a4] = 0,0010

ReturnCode version in radio.[3]


SendTEST = 1,011n,nnnn

where n corresponds to the test number to be run from 1 to 4.

The system will switch into a test mode:

1 = Transmit continuous zero tone.

2 = Transmit continuous one tone.

3 = Transmit continuous carrier.

4 = Transmit 50Hz square wave.

SendTEST, n = 0

The system will return to normal operation.



To set the transmission and reception frequencies, baud rate and modulation modes, it is necessary to set 6 parameters. These must be input in the order specified below and as a single operation. Misconfiguration will result in an error[4] and requires the entire operation to be carried out again.


TX Divider + Offset = TX Freq (Hz) / 6250

e.g. for 435MHz, Tx Div + Offset = 6960010 = 10FE016

RX Divider + Offset = RX Freq + I.F. Freq(Hz) / 6250

(I.F. = Intermediate Frequency[5])

The Dividers are inputted as two 8bit characters, *XPLL0 and *XPLL1. In the example above, the Tx Divider cannot be separated into two 8bit characters. We use the Offset, which is chosen to allow lower values to be input as the Tx/Rx PLL 0/1. The offset is an 8bit number, which is then multiplied by 256 [in hex, 01 becomes 0100].

For our example, in hex:10FE0 – 4000 = CFE0. So the input values would be:

TXPLL0 = 0CF = 0,1100,1111

TXPLL1 = 0E0 = 0,1110,0000

OFFSET = 040 = 0,0100,0000


SendCFG0 = 1,0000,0000


SendTXPLL0 = 0,aaaa,aaaa


SendCFG1 = 1,0000,0001


SendTXPLL1 = 0,aaaa,aaaa


SendCFG2 = 1,0000,0010


SendRXPLL0 = 0,aaaa,aaaa


SendCFG3 = 1,0000,0011


SendRXPLL1 = 0,aaaa,aaaa


SendCFG4 = 1,0000,0100


SendOFFSET = 0,aaaa,aaaa


SendCFG5 = 1,0000,0101


SendFFBAUD = 0,bbbb,bbbb

Where b0 = 1 = 1200 baud

b1 = 1 = 600

b2 = 1 = 300

b3 = 1 = 600

b7 = 1 = 2400[6]


SendCFG6 = 1,0000,0110


SendFFMODE = 0,cccc,cccc

Sets FSK Format.

Where c4 = 1 = 7bit

= 0 = 8bit

c5 = 1 = parity on

= 0 = parity off

c6 = 1 = odd parity

= 0 = even parity

c7 = 1 = 2 stop bits

= 0 = 1 stop bit[7]


The configuration is now complete.


Bits 4 to 7 of the data returned from an inquiry represent the device being in an error state. Bit 7 specifically implies that either the system has just reset due to power or watchdog timer. This state will also be flagged after an incomplete configuration.

The WAKAK character should only be seen after waking the device. If output at any other time, this indicates an error.

Error diagnosis and handling procedures need to be a focus of any future test plan.


IF Frequencies = 45MHz , 455KHz from LRT Manual.

Page 1 of 10

[1]TXP is the connection from Pin 6 of the transceiver.

[2] b4 to b7 represent errors, these will be discussed in more detail below.

[3]The radio identifier and code version are not described further in the manual. I am unsure of the format.

[4] Discussed below.

[5]Values for IF are given in LRT manual. I am unsure which to use, and of what sign. Listed below.

[6]These are given for the M1 modem, all functions are apparently identical to the M2, except obviously these baud rates are incorrect. This will need testing.

[7]These are also given for the M1 modem, there may be different options for GMSK settings.