2008-10-27 21 views
5

Estoy trabajando con un dispositivo que requiere que genere un CRC de 16 bits.CRC preestablecido y residuo

La hoja de datos del dispositivo dice que necesita el siguiente CRC Definición:

 
CRC Type Length Polynomial   Direction Preset  Residue 
CRC-CCITT 16 bits x16 + x12 + x5 + 1 Forward FFFF (16) 1D0F (16) 

donde preestablecido = FFFF (16 bits) y Residuo = 1D0F (16 bits)

me buscó un algoritmo CRC y encontró este enlace: http://www.lammertbies.nl/comm/info/crc-calculation.html

Tiene ambos en él. CRC-CCITT (0xFFFF) CRC-CCITT (0x1D0F)

¿Cuál es la diferencia entre el valor predefinido y el residuo?

+0

Boost tiene una buena aplicación de la Convención, si está utilizando C++. –

Respuesta

0

La diferencia está en lo que hace el algoritmo con los dos valores. Acabo de mirar un algoritmo CRC y parece bastante simple.

El preajuste es el valor con el que comienza y el residuo se XOR con el valor al final.

Ahora, la razón para elegir valores particulares para presets y residuos, que no sé.

0

Algo no está bien aquí.

Está buscando un CRC de 16 bits, pero ha especificado un Preset y Residuo de 24 bits. Publique un enlace a la hoja de datos del dispositivo que está mirando.

La mejor fuente de información CRC es, por cierto, es Ross Williams' guide to CRC.

edición: Ah, ja, veo el preset "24-bit" fue sólo el formato de la tabla.

4

Inicializa el registro CRC con el preset antes de introducir su mensaje.

El residuos es lo que se debe dejar en el registro CRC después de la alimentación a través de un mensaje, además de su correcta CRC.

Si solo desea enviar un mensaje, no verá el valor de residuo. Pero cuando el dispositivo ejecuta su mensaje + CRC a través del algoritmo CRC nuevamente, verá un valor final de 0x1D0F si no hubiera errores de transmisión.


También puede demostrar esto a usted mismo sin involucrar el dispositivo. Esto puede ayudarlo a confirmar que su algoritmo está haciendo algo que, al menos, se parece a un CRC.

  • Primero, calcule el CRC para su mensaje.
  • Agregue su mensaje y ese CRC, luego pase todo a través de un nuevo cálculo CRC (recuerde restablecer primero al valor preestablecido)
  • Si todo fue bien, su registro CRC debe contener el valor de residuo.

La mejor explicación CRC que he encontrado está aquí:

http://www.repairfaq.org/filipg/LINK/F_crc_v31.html#CRCV_001

Cuestiones relacionadas