Hallo zusammen, ich versuche gerade, einen L6474-Schrittmotortreiber in Betrieb zu nehmen, da das Teil ja laut Datenblatt ja sowohl klein als auch fein ist. Ein wenig bringt mich die SPI-Schnittstelle allerdings ins Grübeln, um genau zu sein: Das Register TVAL (im Datenblatt auf Seite 33, 34 und 35 beschrieben). Hier das Datenblatt: http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/57/28/bd/09/23/1f/47/1f/DM00043117/files/DM00043117.pdf/jcr:content/translations/en.DM00043117.pdf Es ist 7 Bit breit. Was soll das? Natürlich drängt sich die Frage auf: Was passiert, wenn ich es mit 8 Bit lese/schreibe? Wenn das Register wirklich 7 Bit breit ist, und der SPI mit MSB first schreibt und liest, würde ich erwarten, daß es letzte gelesene Bit immer 0 ist. Lese ich unmittelbar nach dem Reset das Register aus, ergeben sich 0x29, wie es das Datenblatt sagt. Bei einem 7-Bit-Register, das mit 8 Pulsen gelesen wird, hätte ich allerdings 0x52 erwartet. Schreibe ich '0x07' über den SPI mit dieser Registeradresse, werden auch '7' wieder ausgelesen, d.h. das letzte Bit wird nicht abgeschnitten. Also ist dieses 7-Bit-Register wohl eher ein 8-Bit-Register mit führender Null. So weit, nicht erstaunlich. Nur: Warum steht im Datenblatt, das Register sei 7 Bit breit? Ist das ein Fehler im Datenblatt, oder wird hier irgendeine mir unbekannte Notation stillschweigend vorausgesetzt? Viele Grüße W.T.
"The integrated 8-bit serial peripheral interface (SPI) is used for a synchronous Serial communication between the host microprocessor (always master) and the L6474 (always slave)." Ich würde das so interpretieren: Es werden immer ganze 8-Bit-Bytes übertragen. Bei 7-Bit-Register werden nur Bits 0 - 6 verwendet, D7 wird ignoriert. > After each byte transmission, the CS input must be raised Damit ist immer ein Byte gemeint, also MSB = Bit7 und LSB = Bit0. Es gibt ja mehrere Register mit krummen Bitzahlen (z.B. 22).
In der Beschreibung von SetParam und GetParam auf Seite 44-45 steht es auch indirekt: The number of bytes composing the VALUE argument depends on the length of the target register (see Table 16). The number of bytes composing the command response depends on the length of the target register (see Table 16). Wobei Tabelle 16 falsch ist, gemeint ist wohl Tabelle 9.
OK, also geht der SPI (wie erwartet) immer von ganzen Bytes aus, und die Information, daß es sich bei der "Registerbreite" um den Teil eines komplett übertragenen Bytes handelt, habe ich tatsächlich überlesen. Sie war mir wohl zu subtil.
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.