Connectors

The Vcc pin takes about 250 mA. The VFD HV pin takes about 9 mA when all segments are on.

Protocol

The UART settings are 19200 baud 8N1.

The communication appears to consist of <STX> <type|dlen> <data>{dlen} <ETX> packets where type is the high nybble of the second byte and dlen its low nybble giving the number of data bytes following it.

Writing to Display

Messages of type 9 are used to write to byte arrays that the on-board microcontroller uses to drive the VFD.

Message 0x02 0x9<len> <addr> <data_0>...<data_len-2> 0x03 writes the data bytes to array at the given address. Each of the three multiplexed data sets are 16 bytes long. Set 0 is at address 0x00, 1 at address 0x10, and 2 at address 0x20. Since one write is limited to 14 bytes of data the main board CPU writes each set with two writes: first 8 bytes to 0x[0-2]0 and then 8 bytes to address 0x[0-2]8. The first data byte of each set (0x[0-2]0) selects the grid and it is 0xC0, 0x3C, or 0x03 for sets 0, 1, and 2, respectively. The set 1 appears to contain largest number of segments and is probably for that reason allocated 4 outputs, while two other sets use 2 outputs. The rest (120) bits select the segments (1 on, 0 off)

Mapping of the segments

Zoom into the image to see the set (grid group) and segment mapping. Note that segment numbers map to bits in the messages so that bytes 0-6 are in the first message for the set and bytes 7-15 in the second. Bits are numbered so that msb is 0 and lsb is 7. Byte number is the segment number divided by 8 and the bit number is the remainder of the segment number when divided by 8.

Simple Display Driver

A display test program with a simple driver class is in tf5100ui-vfd-test.py

Special Display Controls

The display can be controlled also with shorter messages than full groups. The message 0x91 is special so that it can be used to clear the display (0x02 0x91 0x00 0x03) or it can be used to set groups of segments (like 0x02 0x91 0x01 0x03) up to turning all segments on with 0x02 0x91 0xff 0x03.

After clearing the display the bytes driving the grids (0x00, 0x10, and 0x20) have been set correctly. Then one can write to all other bytes or ranges of bytes any segment driving values with 0x20 0x9<L> <addr> <value>+ 0x03, where L is number of bytes -1, addr is the address of the first byte and value-bytes give the patterns (+ indicates like in regexp one or more values).

Real-Time Clock

The time from the real time clock can be read with message 0x02 0x10 0x03. The device responds with 0x00 0x02 0x13 <hr> <min> <sec> 0x03.

The whole real-time clock calendar can be read with message 0x02 0x30 0x03. To that the device responds with a 5-byte data that contains year, month, day, week day, hours, minutes, and seconds. The message looks like 0x00 0x02 0x25 <year[6:0]|month[3]> <month[2:0]|day[4:0]> <weekday[2:0]|hours[4:0]> <minutes> <seconds> 0x03. The year is 0..99, month 1..12, day 1..28..31 depending on month and leap year, weekday 0..6, hours 0..23, minutes and seconds 0..59.

This same message can be sent to the device to set the real-time clock to any allowable value. Incorrect dates appear to be adjusted to the next valid one. The device responds with 0x00 0x02 0x30 0x03.

If the real-time clock battery is dead the response to 0x02 0x30 0x03 is 0x00 0x02 0x15 ... (time response 0x1L , not calendar+time, 0x2L) with the calendar data invalid (year 101, month and day both 6, or other garbage), but the time is valid, counting up from the power-on.

The data sheet of the chip mentions that it has auto-calendar up to 2099, but it appears the week-day is not automatically calculated but updated for every day roll-over, and 00 is taken as a leap-year even though 2000 was not one. Remember Y2K?

The Buttons

The device has 5 buttons with the following behavior:

The IR Receiver

As indicated in IRDB the protocol of the Topfield digibox remote controller is the basic NEC protocol. Code scan with +25 years old Sony RM-V11 universal remote was able to generate such codes, but, obviously, no matching key-mapping is available in it. The device number is 32.

Code 0xF5 (in the waves above) maps to power-button and causes the Topfield UI device to turn off and on, with the same protocol as when the power button is pressed. All other codes send a message 0x00 0x02 0x61 <code> 0x03, where the code is the raw NEC message command code.

Power On/Off

The state of the device can be controlled with 0x31 messages. The device is turned off, to display the clock, with message 0x02 0x31 0x01 0x03 and on with message 0x02 0x31 0x06 0x03. When turning on the clock display is frozen to the value it had at that time. The display clear message 0x02 0x91 0x00 0x03 can be used to clear it. Message 0x02 0x32 0x01 0x20 0x03 can be used to turn on the power indicator if one wishes to imitate the power button behavior.

The message 0x02 0x80 0x03 appears to be a query for power-on reason. The device responds with 0x00 0x02 0x81 <reason> 0x03, where reason 0x00 is the power button, 0x01 is the IR power-on message, and 0x03 the power-on message via the serial line.