LiIon balancer LTC3300-1 Telecommunication Union CRC-4 standard

pavel PP pa-vep na atlas.cz
Středa Červenec 20 15:39:59 CEST 2022


Zdravím konferu.
Dle dokumentace jsem zbastlil active balancer s obvodem LTC3300-1, zatím v nějaké testovací verzi.
Řeším nyní CRC 4, který je nutný pro SPI komunikaci.
Dovoluji si požádat konferu, nemáte prosím někdo s tímto zkušenosti (nikdy jsem CRC neřešil),
zkouším to s online kalkulátory, např.
https://leventozturk.com/engineering/crc/ <https://leventozturk.com/engineering/crc/>> (tady vyšlo 1101 jak má)
https://www.lddgo.net/en/encrypt/crc <https://www.lddgo.net/en/encrypt/crc>>
ale pořád mi to vychází v nich jinak,
 
Příklad postupu z dokumentace vkládám do přílohy, napsal jsem i kód, který jsem sesmolil pro uvedenou hodnotu,
převedenou z 12bbit na 16bit 1100 0001 0000 0000 
x4 + x + 1 polynomial = 13hexa
vůbec mi není jasné odkud se vzala hodnota 110101101011 v příklad (a) přílohy nahoře
 
CRC mi vyšlo jak má 1101 bez negace ale když dám jinou hodnotu zase výjde 1101 
 
S pozdravem Pavel
 
        static uint crcM;
        static uint shift = 0x800;
        static byte MyCRC4_ITU(uint crcDiv)
        {
            uint divisor13or0 = 0xD6B;
            uint cmd12bit = crcDiv >> 4;
            byte crcShift;
            crcM = crcDiv; crcM >>= 11;
            uint meziDel = 0x13 ^ cmd12bit;
 
            crcM = (divisor13or0 & 0x800) == 0x800 ? (byte)(((byte)0x13) ^ crcM) : (byte)(((byte)0x00) ^ crcM); // 1 0 0 1 1
            //    800     400     200     100       80      40      20      10      8       4       2       1
            //              0       0       1        0       0       0       0      0       0       0       0
            //Res XOR   10110    01010   10101   01100   11000   10110   01010   10100   01110   11100   11110
            //             16        A      15       C      18      16       A      14       E      1C      1E
 
            //XOR  13      13     0       13      0       13      13      0       13      0       13      13    = 0xD6B
 
            for (int i = 0; i < 11; i++)
            {
                crcM <<= 1;
                shift >>= 1;
                divisor13or0 <<= 1;
                crcShift = (byte)(crcM = (byte)((crcDiv & shift) == 0 ? crcM : crcM | 1));
                crcM = (divisor13or0 & 0x800) == 0x800 ? (byte)(((byte)0x13) ^ crcM) : (byte)(((byte)0x00) ^ crcM);
 
                //crcM = (byte)(crcM & 0x0FF);
                Console.WriteLine("shift" + Convert.ToString(shift, 16) + "\tAdterShift:" + Convert.ToString(crcShift, 16) + "\tRes:" + Convert.ToString(crcM, 16));
            }
            return (byte)crcM;
        }
 
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220720/45b5e0b3/attachment-0001.htm>
------------- další část ---------------
A non-text attachment was scrubbed...
Name: CRC4-APP.gif
Type: image/gif
Size: 97816 bytes
Desc: CRC4-APP.gif
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220720/45b5e0b3/attachment-0001.gif>


Další informace o konferenci Hw-list