Anbei zwei Diagramme die mit unten stehenem Code enstanden. Zunächst werden nur Nullen gesendet. Dann wird eine bestimmte Zahl gesendet. Das Diagramm, dass beim Senden der Nullen aufgenommen wurde zeigt, dass der Ausgang zwischen der Übertragung zweier Byte auf High springt. Auch nach der Übertragung des zweiten Byte springt der Ausgang auf High (diagram1.png). Dieser Effekt behindert die Datenübertragung mit manchen Chips. Was ist falsch?
lspisettings(0) = &H8
lspisettings(1) = &H1
lspisettings(2) = &H4
lspisettings(3) = 250
ret = IowKitWrite(iohandle, 1, lspisettings(0), 64)
iowrite(2) = ClearBit(iowrite(2), 0)
ret = IowKitWrite(iohandle, 0, iowrite(0), 8)
lspidata(0) = &H9
lspidata(1) = 2
lspidata(2) = 0
lspidata(3) = &H0 'Hbyte
lspidata(4) = &H0 'Lbyte
ret = IowKitWrite(iohandle, 1, lspidata(0), 64)
ret = IowKitRead(iohandle, 1, lspidata(0), 64)
iowrite(2) = SetBit(iowrite(2), 0)
ret = IowKitWrite(iohandle, 0, iowrite(0), 8)
iowrite(2) = ClearBit(iowrite(2), 0)
ret = IowKitWrite(iohandle, 0, iowrite(0), 8)
lspidata(0) = &H9
lspidata(1) = 2
lspidata(2) = 0
lspidata(3) = lwert(1) 'Hbyte
lspidata(4) = lwert(0) 'Lbyte
ret = IowKitWrite(iohandle, 1, lspidata(0), 64)
ret = IowKitRead(iohandle, 1, lspidata(0), 64)
iowrite(2) = SetBit(iowrite(2), 0)
ret = IowKitWrite(iohandle, 0, iowrite(0), 8)
seltsames Verhalten bei zweimaliger SPI-Übertragung
Moderator: Guido Körber
-
- Posts: 97
- Joined: Wed Aug 03, 2011 3:46 pm
- Contact:
seltsames Verhalten bei zweimaliger SPI-Übertragung
- Attachments
-
- diagram2.png (111.84 KiB) Viewed 7759 times
-
- diagram1.png (106.74 KiB) Viewed 7759 times
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: seltsames Verhalten bei zweimaliger SPI-Übertragung
Hallo Herr Zantis,
da ist nicht wirklich was falsch, der Pegelwechsel passiert weil das Nachladen des Senderegisters im IOW56 nicht beliebig schnell geht und kein Doublebuffering in der Hardware vorhanden ist, damit geht die Leitung kurzzeitig auf Idle bis das nächste Byte kommt. Die SPI Slaves sollten den Zustand der Datenleitung zwischen den Taktflanken ignorieren, das ist ein Protokollfehler auf der Slave-Seite und zwar einer für den man Aufwand treiben muss damit der passiert.
da ist nicht wirklich was falsch, der Pegelwechsel passiert weil das Nachladen des Senderegisters im IOW56 nicht beliebig schnell geht und kein Doublebuffering in der Hardware vorhanden ist, damit geht die Leitung kurzzeitig auf Idle bis das nächste Byte kommt. Die SPI Slaves sollten den Zustand der Datenleitung zwischen den Taktflanken ignorieren, das ist ein Protokollfehler auf der Slave-Seite und zwar einer für den man Aufwand treiben muss damit der passiert.