Hi.

I'm trying to calculate CRC on STM32F303 using CRC peripheral. I check the correctness of calculation with this on-line application: https://ghsi.de/CRC/ But I have problems, when I want to calculate CRC above more than 32 bits.

If I write to CRC->DR register 32 bits it returns the same as on-line app.

For example:

- Init value: 0x00000000

- Polynomial: 0x97

- Input data: 0xA5A5A5A5

Here I get CRC value of 0x5A. And the same result I get with on-line app.

But if I want to calculate CRC above 40 bits, I don't get the same value anymore.

For example:

- Init value: 0x00000000

- Polynomial: 0x97

- Input data: 0xA5A5A5A5CC

Write CRC->DR = 0xA5A5A5A5 returns 0x5A. Above that I write CRC->DR = 0xCC. And I get

Then I use on-line app. And I write input data as: 0xA5A5A5A5CC. It returns

I have set REV_OUT and REV_IN in CR register to 0.

Do you have any advice? Thanks

I'm trying to calculate CRC on STM32F303 using CRC peripheral. I check the correctness of calculation with this on-line application: https://ghsi.de/CRC/ But I have problems, when I want to calculate CRC above more than 32 bits.

If I write to CRC->DR register 32 bits it returns the same as on-line app.

For example:

- Init value: 0x00000000

- Polynomial: 0x97

- Input data: 0xA5A5A5A5

Here I get CRC value of 0x5A. And the same result I get with on-line app.

But if I want to calculate CRC above 40 bits, I don't get the same value anymore.

For example:

- Init value: 0x00000000

- Polynomial: 0x97

- Input data: 0xA5A5A5A5CC

Write CRC->DR = 0xA5A5A5A5 returns 0x5A. Above that I write CRC->DR = 0xCC. And I get

**0xFF**.Then I use on-line app. And I write input data as: 0xA5A5A5A5CC. It returns

**0x44**, which is not the same as uC returns. Obviously, I'm doing something wrong.I have set REV_OUT and REV_IN in CR register to 0.

Do you have any advice? Thanks

*((uint8_t *)&CRC->DR) = 0xCC;