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.

MSPM0G3507: Using CRC calculation : different instances

Part Number: MSPM0G3507

Dear,

I would like to create new routines, capable of handling different instances for calculating the CRC.

My question is: can I:

1.

uint a = CRC->CRCOUT;

2.

do another second CRC calculation and then continue the first calculation

3.

CRC->CRCSEED = a;

and continue the first calculation

  • Hi John, 

    I am not entirely clear on what your goal is here or the intended behavior. Could you provide a bit more information to describe your intended use case and the steps you want to use to achieve it?

    In the mean time, it may help to take a look at some of our CRC examples, found in [SDK Install Path]\mspm0_sdk_2_00_00_03\examples\nortos\LP_MSPM0G3507\driverlib. These should help  to show the basic functionality of our existing CRC library. You can also look at the CRC source code under [SDK Install Path]\mspm0_sdk_2_00_00_03\source\ti\driverlib to get another view of the functionality we offer. Finally, try taking a look at section 22 of the device TRM which explains the CRC module's functionality in detail.

  • Dear Dylan,

    Actually, the question is if I can suspend a CRC calculation C1 on a string 'S', so as to do another second CRC calculation C2 at first.

    Afterwards resume the first calculation C1.

    :

    When suspending the CRC calculation C1 of the string 'S', I would store the CRCOUT into a variable 'a

    Then do the other second CRC calculation C2. 

    After this second calculation C2, I would bring the CRCSEED equal to the 'a' = CRCOUT of the first calculatjon C1.

     

    In the TRD, I can't find anything that conflicts this...

    Hope this is more clear.

    Thank you and best regards,

    John

  • Hi John,

    Thank you for clarifying the behavior here.

    So this depends on what you mean by suspend the CRC calculation. There certainly are places to suspend the calculation inside of the 

    DL_CRC_calculateBlock32() function, or other DL_CRC_calculateBlock functions. You could implement some method to pause it, and give the CRC engine another different value. However, if your intention is to stop the calculation of the CRC while it is being calculated by the CRC accelerator hardware, this is not possible. We do not offer a suspend or pause mechanism for that peripheral. Looking at the TRM though,  it appears that the CRC is a single-cycle calculation with the accelerator, so I do not see why you couldn't just ignore the calculated value, feed it the new input, read that, then feed it the old value again. This would be faster than any software switching mechanism I can currently think of.
  • Thank you, I will try.