ich quäle mich mit stm. ich habe einen enc38j60 am stm32f429-board. Schreiben ins DR-Register funktioniert mit: spiENC->DR = value; Nach meinem Verständnis müsste ich jetzt das SR abfragen bis TXE==1 ist: while (!(spiENC->SR & SPI_I2S_FLAG_TXE));//not ok das klappt jedoch nicht. Anscheinend korrekte Ergebnisse bekomme ich nur mit while (SPI_I2S_GetFlagStatus(spiENC, SPI_I2S_FLAG_BSY));//ok Direkte ABfrage bsy klappt auch nicht: // while ((spiENC->SR & SPI_I2S_FLAG_BSY));//not ok auch // while (SPI_I2S_GetFlagStatus(spiENC, SPI_I2S_FLAG_TXE) == RESET); liefert ein anderes Ergebnis. Kann mir jemand die STM-Systematik erklären, warum ich das SR-Register nicht direkt abfragen kann, sondern die merkwürdige Funktion SPI_I2S_GetFlagStatus benutzen muss?
Die Periperial Library wird als Source code ausgeliefert: Use the source, Luke! Das TXE Flag kann bei SPIs mit FIFO anderes Verhalten als BUSY haben. Das wäre dann immer 1 solange der FIFO nicht voll ist. Näheres steht im Handbuch für die entsprechende STM Familie.
:
Bearbeitet durch User
Jim Meba schrieb: > Die Periperial Library wird als Source code ausgeliefert: Use the > source, Luke! danke für den Hinweis. SPI_I2S_SendData(spiENC,value); --- funktion aus der stm-lib --- bringt kein brauchbares Ergebnis. Die Erklärung im manual -Seite 872- zur Unterscheidung von bsy und txe bzgl. Hardware- bzw. Softwarereset hilft auch nicht weiter.
Grundschüler schrieb: > Kann mir jemand die STM-Systematik erklären, warum ich das SR-Register > nicht direkt abfragen kann, sondern die merkwürdige Funktion > SPI_I2S_GetFlagStatus benutzen muss? Entweder benutzt du die lib und liest die Anleitung dazu oder du schreibst dir deinen SPI Treiber selber. Bei Benutzung der Lib ist mein Verdacht, dass du keinen direkten Zugriff auf die Register hast, sondern die Funktionen benutzen musst.
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.