SPI-Treiber SPI-Order MSB

in SPIoutLong möglicher Fehler ?

golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

SPI-Treiber SPI-Order MSB

 · 
Gepostet: 08.04.2016 - 22:52 Uhr  ·  #1
all,
ich habe bisher die ganzen SPI-Ein/Ausgaben fast immer mit Bitbanging gemacht. Der Prozessor war da meist schnell genug. Nun wollte ich doch bei einem Projekt die volle Geschwindigkeit. Da ist mir aufgefallen, daß es bei SPI-Order MSB und SPIOutLong für mich einen Fehler gibt.

Wenn ich im Beispiel SPIOutLongD($01400005) mache, wird bei Order LSB das Longword korrekt ausgegeben, das ergibt dann $A0000280 . Bei Order MSB sollte es $01400005 sein, es wird aber $05004001 gesendet. Oder verstehe ich da was falsch ?

golf


// über SPI-Treiber

Import SPI_D;

SPIorderD = MSB; // SPIorderD = LSB;
SPImodeD = 0;
SPIprescD = 1;
SPI_SSD = PortD, 4;

....

HL := $01400005;
SPIoutLongD(HL);



// über Bit-Bang

excl (AD4350LE); // // LE auf Low

HL := $01400005; // InitAD4350ArrayFrac1[1];
bitz:=31; // Bitzähler, 32 relevante Bits werden gesendet
repeat
AD4350Data := bit(HL,(bitz));
incl (AD4350Clk);//
excl (AD4350Clk);//
dec (bitz);
until bitz=255;

incl (AD4350LE); // LE auf High
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 09.04.2016 - 09:35 Uhr  ·  #2
All,
meine gewünschte Ausgabe läßt jedenfalls mit dem SPI-Treiber doch lösen. Ich habe das nun so geschrieben und dann funktioniert mein Frequenzgenerator wieder wie gewünscht. In gleicher Art sind dann auch 24-Bit SpiOuts lösbar...

HL := $01400005; //InitMax2870ArrayFrac1[1];

excl (Max2870LE); // LE auf Low
SPIoutD(@HL+3,1);
SPIoutD(@HL+2,1);
SPIoutD(@HL+1,1);
SPIoutD(@HL,1);
incl (Max2870LE); // LE auf High

Anghängt hab ich mal 3 Bilder des Projekts, ein Frequenzgenerator, der mit dem MAX2870 bis 6,4 Ghz in 1 kHz Schritten einstellbar ist. Steuerbar über LAN mit dem einwandfrei funktionierendem Wiznet5200 Treiber oder auch über USB. Für das verwendete billige FR4-Material bin ich mit dem Frequenzgang zufrieden.

golf
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
AVRfan
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 69
Beiträge: 16
Dabei seit: 11 / 2009
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 09.04.2016 - 14:18 Uhr  ·  #3
Hallo Golf,

tolles Projekt.
Zu SPI-order:
das betrifft nur das einzelne Byte beim Senden.
msBit zuerst oder lsBit zuerst.

Fan
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 989
Dabei seit: 09 / 2007
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 09.04.2016 - 15:25 Uhr  ·  #4
Hallo Golf,
positives liest man ja selten :)

Zitat
einwandfrei funktionierendem Wiznet5200 Treiber
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 09.04.2016 - 16:17 Uhr  ·  #5
Hallo AVRFan,
ok, dann habe ich das doch falsch verstanden. Ich dachte, wenn da ein Longword gesendet wird, daß sich das MSB dann auf das Longword bezieht und nicht nur auf Einzelbytes. So werden die mir bekannten ICs auch programmiert. Aber was solls, ich hab eine funktionierende Lösung gefunden und die Hardware läuft wie geplant.

Hallo Miparo,
ja, als ich das gelesen hab mit der Unterstützung für den W5200, hab ich da gleich welche bestellt und in dem Projekt nun getestet. Der W5200 gefällt mir besser als der W5100. Ich verwende den Treiber ohne Processes, funktionierte hier auf Anhieb, danke.

golf
Nambela1987
 
Avatar
 
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 14.10.2016 - 15:16 Uhr  ·  #6
Zitat geschrieben von golf

All,
meine gewünschte Ausgabe läßt jedenfalls mit dem SPI-Treiber doch lösen. Ich habe das nun so geschrieben und dann funktioniert mein Frequenzgenerator wieder wie gewünscht. In gleicher Art sind dann auch 24-Bit SpiOuts lösbar...

HL := $01400005; //InitMax2870ArrayFrac1[1];

excl (Max2870LE); // LE auf Low
SPIoutD(@HL+3,1);
SPIoutD(@HL+2,1);
SPIoutD(@HL+1,1);
SPIoutD(@HL,1);
incl (Max2870LE); // LE auf High

Anghängt hab ich mal 3 Bilder des Projekts, ein Frequenzgenerator, der mit dem MAX2870 bis 6,4 Ghz in 1 kHz Schritten einstellbar ist. Steuerbar über LAN mit dem einwandfrei funktionierendem Wiznet5200 Treiber oder auch über USB. Für das verwendete billige FR4-Material bin ich mit dem Frequenzgang zufrieden.

golf


Hi golf, I'm Nambela, greeting from Indonesia, would you like to share the pcb layout and schematic?. Thank a alot.

Nambela
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: SPI-Treiber SPI-Order MSB

 · 
Gepostet: 26.10.2016 - 06:47 Uhr  ·  #7
Hallo Nambela,
sorry, it´s no open source project. i designed it for a company.
but it´s a easy design. pcb 0.8 mm Fr4, rf-track 1.397 mm. at the output a 4x splitter and a AD8319 for power measurement. this all was for a BITE-system.

golf
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 14 · Cache Hits: 14   125   139 · Page-Gen-Time: 0.036471s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI