You asked for it...
..it's a little complicated.
The pioneer IP bus uses a 2 wire differential signal for communication.
An equal level on both lines is a logical low while a high is encoded as a
voltage difference of some 100mV.
I think a CANbus tranceiver should work here.
The data transfer is initiated by either the cd changer or the radio.The initiator
generates a high pulse ( ca. 170us ) and a following low pulse ( ca 20us ).
Then the data transfer starts, a 1 is encoded as a high-low sequence with
a duration of ap. 20us for both levels and a 0 consists of a 33us high and
a 7us low pulse.
The data is now transfered in bytes with MSB first, the 8th bit is an odd
parity bit.At the end of the 3rd and all following Bytes there is an additional
bit inserted after the parity where the receiver acknowledges the transfer.
This is done by holding the data lines in a high state after the initiator
sets them low.If this ack is missing the transfer is stopped.
The timings may vary because the real data is encoded in the pulse to space
The first 3Bytes seem to be some kind of device address.The changer I used
transfered a 0x88,0x68,0x00 here while the radio sended 0x88,0x08,0x06.
The next 4 bits were always high. After that a size byte and then size bytes
were transfered. The last byte in the transfer is a checksum generated adding
the values of all data beginning with the 4bit sequence ( = 0x0F ).
In the following part I only will write the raw data excluding size and cheksum
Each command transfered was first answered by some acknowledge packet consisting
of a single 0xA1.
(which looks like: 0x88 0x08 0x06 0xF 0x02 0xA1 0xB2 -> 0xB0 is the checksum
For now I just figured out some very basic things like the fields where time,
track and disc number are encoded and also some
key codes the radio sends. There are many more fields in the packets where
i still don't know the meaning of.
(I just got the radio from a friend for some days and so I couldn't do so
much more on it ... however .. if somebody is intrested in some
more information and is wiling giving me a radio and a changer for some weeks
I'll try to do some more .... )
I have also designed a small circuit using a AT90S2313 controller which can
be used for logging the transfer through the pc serial port and also
to send commands.
The following packet sended by the changer contained the time disc and track
ready and disc blink
load and disc blink
eject and disc blink
cdt: bit0: (1:cdtext),(0:normal)
The text information was encoded within this packet
text seqence number
Recommend link: Vitaliy's Page @ http://www.vitat.spb.ru/
with IP bus interface on AVR basis and more IP bus informations
Some transfer log files