Forum: Mikrocontroller und Digitale Elektronik CRC Berechnung LTC6804


von ODS (Gast)


Lesenswert?

Ich stelle hier die CRC Berechnung für den LTC6804 zur Verfügung.

CRC15.c
1
uint16 Crc15( uint16 u16InCrc, uint8 u8InData )
2
{
3
  uint8 u8Index;
4
  uint16 u16Data;
5
  uint16 u16Eor;
6
  
7
  u8Index = 8;  
8
  u16Data = u16InCrc ^ (uint16)((uint16)(u8InData) << 7);
9
        
10
  do{
11
    u16Eor = u16Data & 0x4000 ? 0x4599 : 0;
12
    u16Data = (uint16)(u16Data << 1);
13
    u16Data ^= u16Eor;
14
  }while(--u8Index);
15
  
16
  return u16Data;
17
}
18
19
uint16 Crc15Block(uint16 u16Crc, puint8 pu8Data, uint8 u8Length)
20
{
21
  if(u8Length)do{
22
          u16Crc = Crc15( u16Crc, *pu8Data++ );      
23
  }while(--u8Length);
24
    
25
  u16Crc = (u16Crc & 0x7FFF) << 1;
26
  return u16Crc;
27
}

CRC15.h
1
#ifndef __CRC15_h
2
#define __CRC15_h
3
4
#include "SewDTyp.h"
5
6
#ifndef CRC15_C
7
#define CRC15_EXT extern
8
#else
9
#define CRC15_EXT
10
#endif
11
12
#define CRC_INIT 0x0010
13
#define CRC_CORRECT 0//CRC_VALUE
14
15
CRC15_EXT uint16 Crc15Block( uint16 u16Crc, puint8 pu8Data, uint8 u8Length ); 
16
17
#endif

von old man (Gast)


Lesenswert?


von ODS (Gast)


Lesenswert?

Aber nicht für den LTC6804 ;), der nutzt das CRC15 verfahren. Alle 
anderen Vorgänger nutzen noch die CRC8.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.