2.8.7.5 Receive CRC Checker

The ATA8510/15 implements a highly configurable hardware CRC checker for the received data payload. The CRC checker can be activated independently for path A and path B of each service in the eepServices.RXBC1.RXCEx variables.

Address Service0

Name

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x0125

RXBC1

RXMSBB

RXCBLB[1:0]

RXCEB

RXMSBA

RXCBLA[1:0]

RXCEA

If enabled, all bits that are received after the SOT event are transferred to the CRC checker with the option to skip up to 255 bits at the beginning.

The success of the CRC check is stored in the TESRA.CRCOA hardware register bit for path A and TESRB.CRCOB for path B until the next receiver start-up or path restart. The bits can be read with the “Read SRAM Register” SPI command from address 0x096 and 0x095 for path A and path B, respectively. If CRCOx is ‘1’, the CRC check was successful for the corresponding path.

The usage of the receive CRC checker is bound to the following conditions:

  • The CRC checker is available only in buffered receive mode and not in transparent receive mode.
  • The data payload of the telegram must be concluded by a well-defined code violation to keep arbitrary bits at the end of the telegram from disturbing the checksum. Ideally, the telegram length EOT condition (see Telegram Length) is used to define the number of received data bits.

The CRC checker cannot be used if the “Stay in RX after EOT” option is set (eepServices.rxSetPathx[1].RXTEHx = 1) because the checksum is reset at every receiver start-up phase and every path restart (compare Figure 2-24).

CRC Length

The CRC checker can be configured to a 4-bit, 8-bit or 16-bit polynomial. The CRC length can be set independently for path A and path B of each service in the eepServices.RXBC1.RXCBLx[1:0] variables.

Address Service0

Name

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x0125

RXBC1

RXMSBB

RXCBLB[1:0]

RXCEB

RXMSBA

RXCBLA[1:0]

RXCEA

CRC Polynomial

The coefficients of the CRC polynomial can be independently configured for path A and path B of each service in the eepServices.RXCPx[0].RXCPLx (low byte) and eepServices.RXCPx[1].RXCPHx (high byte) variables. The LSB corresponds to the X0 coefficient and is always set to ‘1’ by the hardware regardless of the EEPROM setting.

Address Service0

Name

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x0117

RXCPA[0]

RXCPLA[7:0]

0x0118

RXCPA[1]

RXCPHA[7:0]

0x011E

RXCPB[0]

RXCPLB[7:0]

0x011F

RXCPB[1]

RXCPHB[7:0]

If the CRC length is set to 4 or 8, only the corresponding number of LSBs are relevant.

CRC Init Value

The CRC checksum can be preloaded with an initialization value that can be independently configured for path A and path B of each service in the eepServices.RXCIx[0].RXCILx (low byte) and eepServices.RXCIx[1].RXCIHx (high byte) variables.

The orientation of the checksum is always MSB-first.

Address Service0

Name

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x0119

RXCIA[0]

RXCILA[7:0]

0x011A

RXCIA[1]

RXCIHA[7:0]

0x0120

RXCIB[0]

RXCILB[7:0]

0x0121

RXCIB[1]

RXCIHB[7:0]

If the CRC length is set to 4 or 8, only the corresponding number of LSBs is relevant.

CRC Skip Bits

Up to 255 bits at the beginning of the data payload can be omitted by the CRC checker. The number can be configured independently for path A and path B of each service in the eepServices.RXCSBx variables.

Address Service0

Name

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

0x011B

RXCSBA

RXCSBA[7:0]

0x0122

RXCSBB

RXCSBB[7:0]