Hallo,
ich habe mehrere SPI-Slaves an einem SPI-Kanal, natürlich mit getrennten
CS-Pins.
Diese Slaves brauchen eine Weile um ihre Daten zu verarbeiten. In dieser
Zeit kann man prüfen ob sie fertig sind, indem man den CS-Pin auf low
stellt. Wenn am MISO dann ein "low" ausgegeben wird, kann man ihn
auslesen, bei einem "high" rechnet er noch.
Jetzt kann ich das leider momentan nicht testen, aber kann mir jemand
sagen ob ich problemlos am GPIO-Register (GPIOx->IDR) lesen kann ob der
MISO Pin high oder low ist, oder ist durch den alternate mode für SPI
der Pin komplett von dieser Funktion getrennt, so dass man vorher SPI
deaktivieren müsste und den Mode wieder zurückstellen (und später wieder
auf alternate mode stellen)?
Das SPI würde ich so einstellen, dass es auch wenn gerade nicht gelesen
wird den State behält ("Master Keep Io State Enable"), da ich sonst
öfter Probleme hatte.
RM0399, 12.3.12 Alternate function configuration: "When the I/O port is programmed as alternate function: ... •The Schmitt trigger input is activated •The weak pull-up and pull-down resistors are activated or not depending on the value in the GPIOx_PUPDR register •The data present on the I/O pin are sampled into the input data register every AHB clock cycle •A read access to the input data register gets the I/O state Figure 80 shows the Alternate function configuration of the I/O port bit."
Super, danke. Mir war fast klar, dass das irgendwo steht, habe es nur nicht gefunden. Dann funktioniert das ja wie geplant.
Ich denke bei fast allen uC's ist es möglich den Pin-Input zu lesen unabhängig der Funktion (sogar wenn der Pin als output konfiguriert ist).
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.