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: SimpleRangeDemo_MKW01_EU_CRC_DataWhitening.zip