This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR2155: BSL CRC calculation

Part Number: MSP430FR2155

Hi Champ,

I am asking for my customer.

How are the CHK and CHL in BSL Command calculated ?

I search for the information in below screenshot and want to make sure is TI BSL is calculated using the CRC-CCITT algorithm, correct ?

The customer tried to adjust the calculation, however it can't get the correct value. 

Is there any document or app note that describe any information about the range of fields for the calculation ? 

May I have your support on it ? 

Thanks and regards,


  • Hi

    Refer to the document for CRC check in BSL

  • Hi Allen,

    The document from you, I provided to the customer before. I am very new to MSP product.

    Since the doc. isn't described much about the calculation. We have tried various combinations, neither is correct.

    So may I know detailly how the CHK and CHL in BSL Command are calculated, is there a formula for it ?

    Thanks for any help.

  • Hi Allen and MSP experts,

    The customers are going to switch from execution mode to BSL mode and have their own switching procedure, so the BSL Scripter from us is available for the customer.

    Therefore, currently, the customers have written a BSL Update FW program by themselves, and they can enter the BSL and communicate normally.

    However,  when they want to add their FW Code, they don't know how to calculate the correct CHK and CHL.

    This is the problem, but there is no detailed description of the calculation of CRC.

    I would need you support on these questions please : 

    (1). The doc. shows that the MSP430 performs a 16-bit CRC check using the CCITT standard. Does 16-bit CRC mean that they have to combine the 8-Bits data into 16-Bits, and then put it into the CRC calculation?

    (2). Does the poly parameter of CCITT use 0x11021? If not, what is the poly parameter ?

    (3). Is the initCRC(initial CRC value) 0xFFFF?

    (4). Is XORout(the final XOR value) 0x0000?

    (5). Is Rev = True ?

    The customers currently tried various combinations of the above to calculate fixed packets, but can't get the value 0x62(CKH) and E8(CKL).

    I appreciate any comment and support. Thanks for all the help.


  • Hi

    It does mean the polynomial is 16 and the CRC result is 16bit.

    INT is 0xFFFF, XOROUT is 0x0000, the standard CRC16-CCITT is  0x1021. The data need to be  CRC calculated is the gray box data as you provide. The bit reversed is false.

**Attention** This is a public forum