UC-2000
Inductive transmission protocol

The UC-2000 watch communicates with the accessories
(UC-2100 keyboard, UC-2200 BASIC computer, UC-2301 interface etc.)
using an inductive transmission system.
I used a digital sampling oscilloscope to analyze the
communication between the watch and a UC-2100 keyboard.

The communication is asynchronous bit-serial half-duplex.
Each byte is transmitted in the following way:
First comes the start bit. This bit is always 0.
Then comes the 8 data bits, bit 0 (LSB) first.
Then comes the parity bit. Even parity is used, i.e. the
parity bit is 1 if an even number of data bits is 1.
Then comes the stop bit. This bit is always 1.

The bitrate is 2048 bits per second.
A 0-bit is transmitted as 16 periods of a 32768Hz square wave.
A 1-bit is transmitted as 'no activity'.

Until the watch replies, every keypress on the keyboard
results in the transmission of the byte 0xA5.
If the watch is in transmit mode, it replies with 0x13
after about 10ms. The keyboard then retransmits the
correct key code (for number and letter keys the standard
ASCII code). From now on the keyboard transmits the
correct key code, exactly one byte at each keypress.

Special key codes are for example the contrast control
codes: 0x12 for CNT+ and 0x1F for CNT-. Other special
key codes are used for entering MEMO A and B, CALC mode
and so on. Here is what I have mapped so far:

0x00 ?
0x01 ?
0x02 print to screen
0x03 write less than 256 bytes to memory (from given start address to page end)
0x04 data upload (write a 256 byte page to memory, 8 pages total)
0x05 data download (get a 256 byte page from memory, 8 pages total)
0x06 Memo A Input mode
0x07 Memo B / Schedule Input mode
0x08 Cursor left
0x09 Cursor right
0x0A Cursor up
0x0B Cursor down
0x0C End
0x0D Return
0x0E Page up
0x0F Page down
0x10 CAL mode
0x11 declares the data in memory as executable program
0x12 Contrast up
0x13 ACK from watch
0x14 Set Cursor/blink attribute
0x15 STOP (?)
0x16 NACK from watch
0x17 ?
0x18 ?
0x19 ?
0x1A ?
0x1B ?
0x1C Leave Transmit mode
0x1D ?
0x1E ?
0x1F Contrast down
0xA5 init (alive check, is answered with 0x13)
most of the rest is treated as normal characters
 

Back

Home

mail