An ADC can return sensible channel values while every frame fails the host’s CRC calculation. The polynomial may be correct and the implementation still wrong because it covers the wrong bits, uses the wrong initial state, or computes over software integers after padding has been removed. The transmitted representation is the starting point.

Define the protected bit stream

The ADS131M04 documentation specifies CRC behavior together with configurable communication word lengths. It explicitly includes relevant padding in coverage and describes command-specific behavior on CRC failure. Review input and output checks separately; their protected fields and consequences need not be identical.

For a board implementation, write a frame map showing each wire word, the meaningful bits, the padding, and the position of the received CRC. Record polynomial selection, seed, bit order, and any final transformation exactly as documented. A general-purpose software library named CRC-16 may implement a different convention despite using a familiar polynomial.

Use captured frames as test vectors

Save a raw logic-analyzer capture and transcribe a small set of complete frames before applying sign extension or scaling. Include a negative channel code, a zero code, a near-full-scale code, and a register response. Compute the expected CRC with an independent reference implementation. If the converter changes word length, treat the transition itself as a separate case.

Failure pattern Check first
Every frame fails Seed, polynomial, bit order, and coverage boundary
Only negative values fail Host sign extension or byte conversion
Only longer words fail Padding coverage and alignment
Only commands fail Response latency and command-specific frame length

Verify the response to a real error

In a controlled bench test, deliberately alter a protected bit and confirm that the intended status or host rejection occurs. Test a command separately from conversion data, since command side effects may not be cancelled by every CRC failure. Read configuration back where necessary and prevent a failed frame from silently becoming a valid engineering value.

Use SPI phase and first-bit checks before debugging mathematics on incorrectly sampled data, and transaction-byte mapping principles as a related approach for another bus checksum. Preserve the raw vectors with the driver so changes to DMA packing or word size cannot silently invalidate protection.

Move from reading to a build-ready project

Use the fabrication and assembly checklists to prepare drawings, production files and test requirements.

Open the DFM checklist