The telemetry data is fairly simple. On each 8 byte packet sent by the remote, the RF module responds with 8 bytes. Out of this 8 bytes, only bytes 3 and 4 are relevant.
For example: FE 00 00 12 EA 00 00 00. This is a sample telemetry data. Only bytes 12 and EA are important.
The first 4 bits (in the above case: 1) represent the telemetry value, where:
1 - current RX voltage
2 - current RPM
3 - maximum RPM
4 - not used (0 for value)
5 - not used (0 for value)
6 - not used (0 for value)
7 - current temperature
8 - maximum temperature.
The next 12 bits are the actual value for each of the telemetry index.
1: min value 1F0 - corresponds to 3.1V
max value 5F2 - corresponds to 9.8V
formula: value = voltage * 155 + 10
2: min value 0 - corresponds to 0 RPM
max value 2FF - corresponds to 31620 RPM
formula: value = RPM / 60
3: same as index 2
4, 5 and 6: always 0
7: min value is 7 - corresponds to 246 C
max value is 624 - corresponds to 1 C
the relation is not linear. I think it follows the thermistor characteristic. I guess I will make a lookup table for this one.
I also managed to make the first RX. It's 25x30 mm, it has a RFM22B as a RF transceiver and it's driven by a Freescale Cortex M0+ (in QFN32 package).
Here are some pictures with the RX. The plug and the 4 wires are only for programming, they will be gone once the software is done and stable enough. I was also thinking of adding a serial bootloader for easy firmware upgrading via the RX/TX pins which are exposed on the telemetry.
And a video with the entire assembly running for the first test:
Leave your questions and comments below.