Luis Antonio Burgos Lopez

Adding functionality to KW0x devices by implementing CRC and Data Whitening in Software

Discussion created by Luis Antonio Burgos Lopez Employee on Oct 3, 2014

When communicating to other vendor’s devices there might be the case where the CRC and Data Whitening algorithms implemented by hardware are not compatible between devices, to overcome this limitation a SW-based implementation can be used.


The attached firmware in this publication contains a Packet Error Rate (PER) application based on KW01, where CRC IBM and Data Whitening IBM are implemented by software to be compliant with a competitor’s device:  TI’s CC1110. CRC and Data Whitening are disabled in hardware by writing to the corresponding registers of the KW0x transceiver, and instead of using the HW-based CRC and Data Whitening they are computed in SW. 

PER application displays a menu to run it via Serial port (UART). To identify the boards TX toggles all its Leds twice and RX toggles all its leds once. First run RX PER to configure transceiver into reception mode and then run TX PER to start the packets sending. MRB-KW01 and TWR-RF-MRB are used for this application.


Modify next lines to:

- Change between TX and RX:                         #define           gDeviceType_c                               gTxNode_c   or    gRxNode_c                   (ApplicationConf.h)

- Change the number of packets:                      #define           PerTotalPackets_c                         20                                                              (main.c)

- Change time delay on packets sending          #define          gDelayBetweenPacketsInMs_c      1000                                                           (ApplicationConf.h)


For TX:

First CRC IBM is computed and it´s included to the end of the payload, then Data Whitening IBM is applied to the payload and the packet is transmitted.


For RX:

The packet is received (refer to PhyISR.c)  and Data Whitening IBM  is applied to decrypt the data, then  CRC IBM is applied and validated. If it´s a valid CRC PacketsReceived variable is incremented and the Reception process continues to a successful reception, else the receiver detects the CRC error and drops the package, then continues to listen to the next one.

Original Attachment has been moved to: