cancel
Showing results for 
Search instead for 
Did you mean: 

SPI CRC via DMA dosen't work

UlfS
Associate

Dear ST,

 

I use STM32F777 and try to receive SPI Data as a slave via SPI DMA. That works only pretty fine, when I don't activate the CRC Checksum calculation. I receive after the DMA threshold the expected data, but when I set: 

.CRCCalculation = SPI_CRCCALCULATION_ENABLE, 
The received data traped in a Error Callback from the SPI, always.
 
All my init values of the SPI are vaild, look like here:
.SPI_CONFIG = {.Mode = SPI_MODE_SLAVE,
                                                             .Direction = SPI_DIRECTION_2LINES_RXONLY,
                                                             .DataSize = SPI_DATASIZE_8BIT,
                                                             .CLKPolarity = SPI_POLARITY_LOW, // => CPOL = 1
                                                             .CLKPhase = SPI_PHASE_2EDGE, //=> CPHA = 0
                                                             .NSS =  SPI_NSS_SOFT, //SPI_NSS_HARD_INPUT,
                                                             .BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2,
                                                             .FirstBit = SPI_FIRSTBIT_MSB,
                                                             .TIMode = SPI_TIMODE_DISABLE,
                                                             .CRCCalculation = SPI_CRCCALCULATION_ENABLE, // ToDo activate CRC
                                                             .CRCPolynomial = CRC16_CCIT_ZERO, // ToDo activate CRC
                                                             .CRCLength =   SPI_CRC_LENGTH_16BIT,//, //ToDo activate CRC
                                                             .NSSPMode = SPI_NSS_PULSE_DISABLE},

Poly is 0x1021

Inti value is 0x0000

 

If I use the CRC HW Unit via SW, that works as well. But I still have to use the combination of DMA and CRC, because that part is on our application, very time critical. I still can not use the CPU instead.

1 REPLY 1

Disclaimer: I've never used the CRC facility in STM32 SPI.

> The received data traped in a Error Callback from the SPI, always.

What is "Error Callback from the SPI"?

Do you use some "library"? Which one? How? Why? Did you try your own code with possibly better control?

Have you tried using polled implementation?

> Dear ST,

While this forum is monitored by ST, it's primarily user-driven.

JW