The Distributed Systems Interface(DSI) is a flexible and powereful bus protocol designed to interconnect multiple remote sensor and actuator devices to a central control module.
the principal target application for the network is automotive safety system, Airbag ECU
You can learn the concept of DSI3 and CRC algorithms through this page, and get a DSI3 calculator that reflected DSI3's independent CRC algorithm and made it into a table sheet to speed up the processing.
AND This is to inform you that I have referred to DSI consortium's specification and NXP trasceiver datasheet. I'll leave a link at the bottom of the page.
DSI3 CRC do not use the same polynomials and algorithms as other CRC. In DSI3 Command and Response Mode, Make a 32-bit crc input by shifting valid 24-bit data 8 times.
and from the MSB, put input_command_bit[] to the CRC method. The CRC method is described below in the C language.
CRC[7] = CRC_old[6];
CRC[6] = CRC_old[5];
CRC[5] = CRC_old[7] ^ CRC_old[4];
CRC[4] = CRC_old[3];
CRC[3] = CRC_old[7] ^ CRC_old[2];
CRC[2] = CRC_old[7] ^ CRC_old[1];
CRC[1] = CRC_old[7] ^ CRC_old[0];
CRC[0] = CRC_old[7] ^ input_command_bit;
And the calculator could be reprogrammed by making a table sheet containing 512 total cases of the above method. you can get the code though CRC_DSI_with_table.c and the CRC method is CRC_table.c