Hi, Ich verwende ein STM32F767 Nucleo-144 board mit einem STM32F767ZIT6 Prozessor. Mit CubeIDE konfiguriere ich SPI1 als I2S input und pumpe die Daten über den DMA2/Stream0 in einen kleinen 8x16Bit circular buffer. Die clock vom SPI1 ist ~ 3MHz. Ich habe die HAL_I2S_RxHalfCpltCallback() und HAL_I2S_RxCpltCallback() Routinen aufgesetzt. In beiden Routinen toggle ich einen GPIO und bekomme ein ~23.8kHz Rechteck signal. Das geht alles wunderbar. Aber: Das Rechteck Signal hat zwei verschiedene Arten von Jitter. Erstens einen konstanten jitter ~ 100ns, der von der unterschiedlich langen Reaktionszeit des uC auf den Interrupt stammt. Zweitens ist manchmal für Bruchteile von Sekunden das Tastverhältnis des Rechtecks um ~ 330ns geändert. 330ns ist der Kehrwert der 3MHz clock. Wie werde ich den 330ns Jitter los, woher kommt der? Ich habe den HAL_DMA_IRQHandler() bis auf die Knochen abgespeckt. Ich habe auch die Interrupt Prioritäten ohne Erfolg geändert. THX Cheers Detlef
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.