Forum: Mikrocontroller und Digitale Elektronik STM32H7 SPI6 Full duplex Slave + NSS


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von MAX M. (maxmax123)


Angehängte Dateien:

Lesenswert?

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.

von MAX M. (maxmax123)


Angehängte Dateien:

Lesenswert?

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?

von MAX M. (maxmax123)


Lesenswert?

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
Noch kein Account? Hier anmelden.