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.