Hallo, ich habe kurz eine prinzipielle Frage zu SPI. Wenn ich an einen Slave mehrere Bytes senden will, macht es dann einen Unterschied ob ich nach jedem Byte die /SS Leitung wieder auf HIGH gebe und beim nächsten Byte wieder auf LOW, oder die /SS Leitung während des ganzen Datenstroms auf LOW lasse? Es handelt sich übrigens um ein einfaches uC Netzwerk. Danke, Mathias
Salve, Du definierst damit halt die Rahmenlänge. Wenn /SS auf inaktiv (high) geht, verwirft das SPI im AVR seinen Empfangspuffer. Das sollte man vor jedem Paket machen, um sicherzustellen, daß Sender und Empfänger synchron laufen. Wenn Du wirklich nur byteweise sendest, kannst Du jedes Byte rahmen. Wenn Du rel. kurze Pakete sendest (immer am Stück), dann wäre ein Rahmen pro Paket zweckmäßig. Da Du von "mehreren Bytes" sprichst, nehme ich an, Du verwendest Pakete. Da bietet es sich an, das ganze Paket zu rahmen. Also /SS aktiv ziehen, Bytes nacheinander senden, /SS wieder inaktiv ziehen (natürlich erst wenn der Transfer abgeschlossen ist). Mark
genau genommen ist es ein uC Netzwerk mit 6 Slave- uC's. Jede Minute sende ich dann 16Byte an jeden der Slaves
Slave Select macht nur das, wie der Name es schon sagt: einen Slave auswählen. Ob du dann zwischen den einzelnen bytes die /SS leitung high ziehst ist deine sache, wichtig ist nur, dass der master und der slave das selbe protokoll verwenden.
Manche "fertigen" Slaves reseten den SPI-Interpreter wenn CS auf high geht. Kann also sein, dass CS fuer ein Packet lang low bleiben muss.
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.