It depends on your initial conditions, and whether you are chaining together multiple regions, sectors or blocks. The hardware only resets to 0xFFFFFFFF when you direct it too, the register itself is a linear feedback construct and accumulative in nature (actually more like a remainder from a long division), it will clear if you feedback the current value on itself.
crc = 0xFFFFFFFF; // Initial reset state, may be something else crc = CrcSTM32(crc, Data[0]); crc = CrcSTM32(crc, Data[1]); .. crc = 0xFFFFFFFF; // Initial reset state, may be something else crc = CRC32WideFast(crc, 512, Block0); crc = CRC32WideFast(crc, 512, Block1); .. For two iterations of the block crc, you get the value for 1024 bytes total. You could do it as 8 blocks of 128 bytes too, or 1 block of 1024 bytes, the value computed should be the same.
Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
It is giving me some CRC computed value ...0x200004f0.
If I create other project with same above setting and do the the same procedure, I am getting different CRC computed value even if I pass the same data.
The CRC computed value coming for data 'START' should be same in both the project if I am not wrong.
Please provide your inputs if I am doing something wrong.
Can I directly use HAL_CRC_Calculate() function in my project or not ?