Skip to content
Greg edited this page Feb 25, 2016 · 2 revisions

Welcome to the KISS_OSD wiki!

Protocol

the serial connection is 8bit 115200baud full duplex you can get the datas at serial1 (RX/TX pins next to the USB port) the FC will only answer to requests of on the serial, as long as there is no USB plugged in.

to request the telemetry data simply write 0x20 to it. the replay function lookes like this:

// GUI viewable variables

serial_send_byte(5); // startByte
serial_send_byte(154); // BytesNum the byte count that will be sent

serial_send_floats(RXcommands,8); // 16
serial_send_byte(Armed); // 17
serial_send_word((uint16_t)(LiPoVolt*100)); // 19
serial_send_words(GyroXYZ,3); //25
serial_send_words(ACCXYZ,3); // 31

serial_send_word((int16_t)(angle[0]*100)); // 33
serial_send_word((int16_t)(angle[1]*100)); // 35
serial_send_word((int16_t)(angle[2]*100)); // 37

serial_send_word(I2C_Errors); // 39
serial_send_word(calibGyroDone); //41
serial_send_byte(failsave); //42
serial_send_word((uint16_t)debug*1000); //44
serial_send_byte(0); //45

serial_send_floats(GyroRaw,3); //51
serial_send_floats(ACCRaw,3); //57

serial_send_floats(ACCtrim,2); // 61
serial_send_floats(ACCAng,2); // 65
serial_send_byte(mode); // 66
serial_send_word((uint16_t)debug1*1000); //68
serial_send_words(PWMOutVals,6); // 80
serial_send_word((uint16_t)debug2*1000); //82
serial_send_byte(idleTime);//83

serial_send_words(ESC_Telemetrie[0],5); // 93
serial_send_words(ESC_Telemetrie[1],5); // 103
serial_send_words(ESC_Telemetrie[2],5); // 113
serial_send_words(ESC_Telemetrie[3],5); // 123
serial_send_words(ESC_Telemetrie[4],5); // 133
serial_send_words(ESC_Telemetrie[5],5); // 143
serial_send_byte(MaxTemp); // 144
serial_send_word(MinVolt); // 146
serial_send_word(MaxAmps); // 148
serial_send_word(usedMAH); // 150
serial_send_word(MaxRPMs); // 152
serial_send_word(MaxWatt); // 154


serial_send_byte(checkSum); // endByte 

the channel order is throttle, roll, pitch, yaw, aux 1234

gyro and acc datas are send X,Y,Z//0,1,2

the ESC's telemetry is for each ESC

  • 0: temperature in 1°C,
  • 1: voltage in 0.01V
  • 2: current in 0.01A
  • 3: consumption in 1mah
  • 4: erpm in 100erpm

the checksum becomes useless as there are too many bytes now. i will add a real CRC in future. if you still want to use it, it is the average of all bytes send (excluding the two start bytes and its self)

floats are used *1000 so (float)1.0f == (int16_t)1000

16bit wariables are sent with high byte first

Clone this wiki locally