Forum: Mikrocontroller und Digitale Elektronik SPI testen


von Jörg (Gast)


Lesenswert?

Hallo

ich will mit einem Freund zusammen an einem AVR einen CANtreiber MPC2515 
per SPI betreiben. Nach intensivem Studium der Datenblätter und 
verschiedener Programme in C und BASCOM, haben wir verstanden was der 
der CANtreiber für Befehle braucht bzw wie dieser antwortet.

wir setzen den negCS auf LOW
schreiben den Befehl auf MOSI, evtl auch noch eine Adresse
lesen dann die Daten auf MISO
und setzen den negCS wieder auf high

das SPIinterface wird softwareseitig konfiguriert.


wir senden einen READbefehl für ein Register an den CANtreiber. Egal 
welches Register wir adressieren, wir bekommen immer 255 (ein Byte &hFF) 
zurück. Wir haben die Variablen in der Software getestet, Leitungen 
geändert.... uns fällt nichts mehr ein
Sogar als wir den CANtreiber aus dem Sockel gezogen haben, hat unser AVR 
uns den Wert 255 zurückgeliefert. Aber auf dem Interface tut sich was 
(Burst mit Scope sichtbar gemacht).

Hat jemand eine Idee?
Wir sind zum Schluss gekommen das nicht der CANtreiber das Problem sein 
kann (der wurde ja zum Schluss von der Platine genommen), sondern das es 
am SPIinterface liegt. Gibt es Möglickeiten den SPI zu "testen"? Mit 
einer Testschaltung oder ich weiss nicht wie - einen Logikanalyser haben 
wir leider nicht zur Verfügung.

vielen Dank für eure Hilfe
Jörg

von Klaus (Gast)


Lesenswert?

Entweder alles noch einmal GANZ GENAU durchsehen oder ein Oszi bzw. 
LogicAnalyser besorgen.
Helfen können aber auch Beispielprogramm für den/diesen SPI Baustein 
oder den/diesen uP mit SPI Nutzung.

Es gibt (manchmal) verschiedene Initialisierungen bzgl. der aktiven 
Pegel bzw. der Clk Flanke ; ich glaube 4 mögliche Modi. Modus 00 ist 
dann der gängiste.
Die Anzahl der Clk müssen exakt stimmen für den angeschlossenen 
Baustein.
/CS Pegel ; manchmal muss /CS nach dem Befehlswort kurz de-aktiviert und 
dann wieder aktiviert werden etc.

Situation bzgl. "Pull up" klären. Sind "open collector" bzw. "open 
drain" Ausgänge dabei  --> Dann Pullup zwingend erforderlich.

Erstmal einen "einfachen" SPI-Baustein anschliessen, das wäre z.B. ein 
74HC595 Schiebregister (Ausgabe).

Schwierig ohne Oskar. LED's über Treiber ranhängen und ganz lange 
Wartezeiten nach JEDER Portausgabe. Dann das blicken beobachten und 
mitzählen.


von A.K. (Gast)


Lesenswert?

Geht auch ohne Logikanalysator. Indem man die Pins manuell bedient und 
ganz simpel mit LED oder Multimeter sieht was ankommt. Per Programm im 
Controller, mit der seriellen Schnittstelle - es tun aber auch 2 
entprellte Drucktaster und eine LED.

Ich hatte den 2515 auch erst man an BASCOM dran, testhalber, und es 
lief. Nur muss man eben den SPI-Modus korrekt einstellen.

von Jörg (Gast)


Lesenswert?

Hallo A.K.


kannst du mal deine Pinbelegung und das Program online stellen oder mir 
mailen (wird meine Mailadresse hier angezeigt? Ich gebe diese zumindest 
an). Ich denke zwar das wir alles richtig gemacht haben, aber lieber 
doppelt prüfen als einmal vermuten.

Danke soweit schonmal

cu
Jörg

von Jörg (Gast)


Lesenswert?

@Klaus

also ich weiss das der MCP2515 mit dem Modus 0,0 und 1,1 arbeitet. 
Vielleicht muss ich da nochmal nachlesen was der AVR rausschiebt. wurde 
aber an anderer Stelle nicht explizit erwähnt.

Was mich aber in diesem Zusammenhang wundert ist, das der AVR den Wert 
255 per SPI einliest. Ist das irgendein Defaultwert - für default hätte 
ich &h00 erwartet.
Oder das es einen Error gegeben hätte, weil das SPIinterface nicht 
sauber läuft.

cu
Jörg

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
Noch kein Account? Hier anmelden.