Bei meinem STM32H7 Projekt habe ich gerade ein problem bez SPI6 als slave. Gegenstelle ist ein FPGA welches mit 50MHz taktet und dabei NSS über die gauer von 2 sCLK (dauer - sck clockt während dieser zeit nicht) hoch hält bevor der nächste 16 bit transfer startet. Im code habe ich versuchsweise: HAL_SPI_TransmitReceive_IT(&hspi6, &SPI6send, &SPI6recv, 1); im init und dann die in der ISR: void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi){ if(hspi==&hspi6){ HAL_SPI_TransmitReceive_IT(&hspi6, &SPI6send, &SPI6recv, 1); }} Welches als STM master bei SPI1 auch so funktioniert, nur halt bei SPI6 slave nicht. HAL_SPI_TransmitReceive_IT sollte doch bei slave auch funktionieren, einfach die Daten werden bereitgestellt und wenn der Master dann den TX abgeschlossen hat interrupt. Bedenken habe ich, dass die NSS =1 zeit nicht genügt für die ISR, anyway sollte doch zumindest jeden 2. Transfer ausführern. Die ISR wird jedoch nie bez SPI6 aufgerufen.
Gem. https://i.stack.imgur.com/zxkMI.jpg sind nur 29MHZ drinn. Ok funktioniert aber mit 12.5MHz ebenfalls nicht. Verstehe ich NSS setup sowie hold time korrekt, dass diese sich ohne sck beziehen, die Zeit jedoch mindestens 2 sowie 1 Periode der max frequenz (29MHz) sind? Weiter noch ein signaltap vom FPGA, systemclk ist 100MHZ. So wie ich das sehe ist dies korrekt und alle Anforderungen des STMs sind erfüllt?
Ich erhalte HAL Error code 132 = HAL_SPI_ERROR_OVR sowie HAL_SPI_ERROR_UDR
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.