Hallo, ich bin gerade dabei, Software SPI zu schreiben. Ich habe aber eine grundlegende Frage zur SPI Übertragung. Was passiert, wenn während der Übertragung(z.B nachdem 5 von 8 bits übertragen sind) ein Interrupt auftritt, der abgearbeitet wird und danach die Übertragung fortgesetzt wird? Ist das ein Problem? Die Interrupts möchte ich während der Übertragung wenn möglich nicht deaktivieren. Ich denke, es sollte kein Problem sein, da sich der Slave ja an den Flanken von SCK orientiert. Wenn nun mal eine Pause von sagen wir 10ms zwischen 2 bits stattfindet, müsste das egal sein. Ich hoffe, dass ich mich nicht irre. mfg Stefan
beim senden solange du die pegel auf der leitung hälst, Nein ! der empfänger muss dem clk des senders beim empfang der bits folgen könnnen, sonst gehen bits verloren.
Hallo, danke. Empfänger kann clk sicher folgen, so schnell ist software spi dann auch nicht Noch was anderes: was passiert, wenn CS auf low ist, die Pins SCK und MOSI vom Master aber keine definierten Pegel haben, also z.B high impedance sind? Es wurde gerade ein Byte gesendet, nun bleibt CS aber auf low, SCK und MOSI nehmen nun für einige Zeit einen hohen Ausgangswiderstand an, danach wird wieder weitergesendet (SCK und MOSI wieder low impedance). Muss ich Pullup bzw Pulldown verwenden, damit keine Probleme entstehen? Das ganze ist für folgende Anwendung: ich möchte bzw muss die Pins SCK und MOSI und MISO zwischendurch vom Bus trennen, CS muss aber auf low bleiben. Gibts sonst eine bessere Lösung für mein Problem? Das Trennen will ich mit einem 74HC125 machen. mfg Stefan
>Es wurde gerade ein Byte gesendet, nun bleibt CS aber auf low, SCK und >MOSI nehmen nun für einige Zeit einen hohen Ausgangswiderstand an, >danach wird wieder weitergesendet (SCK und MOSI wieder low impedance). >Muss ich Pullup bzw Pulldown verwenden, damit keine Probleme entstehen? Das hängt von deinem SPI Mode ab. Du solltest auf jeden Fall die SPI Leitungen nicht floaten lassen wenn CS low ist. Mir fällt im Moment aber auch keine Anwendung ein, wo man so etwas unglaublich dummes tun müsste ;)
Hallo, Ich brauche das für eine SD Karte. CS von der SD darf nicht auf high gehen während auf diese zugegriffen wird, und das braucht etwas Zeit die Sektoren zu lesen/schreiben. Damit ich aber auch zwischendurch mal Daten an ein anderes SPI Gerät schicken kann (auch zeitkritische Daten zu empfangen) darf ich nicht immer warten, bis die SD fertig ist. Eine Abhilfe wäre ein 2. SPI, z.B Software SPI, aber wenn ich alles am Hardware-SPI unterbringen kann, wäre das besser. Die SPI Pins von der SD wollte ich dann vom Bus trennen, sobald Daten an ein anderes Gerät geschickt werden, wenn das irgendwie geht. Wie könnte ich das sonst lösen? mfg Stefan
Dann brauchst du auf jeden Fall einen Pulldown an SCLK. Was am Dateneingang passiert dürfte der SD dann egal sein. Der Ausgang ist PushPull. Den kannst du einfach wegschalten.
Ok danke. Blöde Frage: Da hier ja Signale im MHz Bereich übertagen werden (max 8 MHz), muss der Pulldown besondere Eigenschaften erfüllen oder kann man da ruhig einen gewöhnlichen Widerstand nehmen? Anders gesagt: Kann der Widerstand bei hoher Frequenz seine Eigenschaften verändern? mfg Stefan
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.