Hallo, Ich habe einen AT91RM9200 (ARM920T), der über den Platform Bus an einen SJA1000 (Schaltung ist im Anhang) angeschlossen ist. Wie man der Schaltung entnehmen kann, ist der Chip-Select des SJA an CS2 angeschlossen und damit in den Speicherbereich ab 0x30000000 eingeblendet. Außerdem wird Daten- und Adressleitung über das Adressbit 2 umgeschaltet (also 0x04). Ich habe nun versucht über die u-boot Befehle mw und md die Register des SJA1000 zu schalten, habe damit aber leider keinen Erfolg... Wenn ich nach dem Starten von u-boot irgendein Register im Speicherbereich des SJA1000 auslesem, bekomme ich den Wert 0xd4 zurück. Alle weiteren Leseversuche geben 0x30 zurück, auch bei anderen Registern. Schreibzugriffe scheinen keinerlei Änderung zu bewirken. Auch die Initialisierung des SJA1000 über folgende Befehle bringt keine Besserung: mw.b 30000000 0x0 ; mw.b 30000004 0x1 ; mw.b 30000000 0x1F ; mw.b 30000004 0xc7 ; mw.b 30000000 0x8 ; mw.b 30000004 0xFA ; mw.b 30000000 0x6 ; mw.b 30000004 0x41 ; mw.b 30000000 0x7 ; mw.b 30000004 0x1c ; mw.b 30000000 0x0 ; mw.b 30000004 0x0 Hier nochmal ein Beispiel um Status Register auszulesen (Nicht dass ich mich da schon vertan habe): mw.b 30000000 0x2 ; md.b 30000004 1 Fällt jemandem auf wo der Fehler liegen könnte? Grüße, Fabian Henze
Wie ich das sehe, liest und schreibst Du von bzw. an immer die selbe Adresse. Wichtig wäre es, den SJA1000 gemäß NXP-Appnote zu initialisieren (BTR, MODE usw.) und anschliessend das Reset-Flag zu löschen - erst dann ist der SJA "in Betrieb". Otto
Hast du in U-Boot den entsprechenden SMC konfiguriert? Ich könnte mir vorstellen, dass das Standard timing ein bisschen schnell für den SJA1000 sein könnte (Auch wegen datenbus breite usw...). Wenn du ein Oszi hast würde ich mal den NCS2 Pin beobachten ob sich da überhaupt was tut. Gruß, Michael
Otto schrieb: > Wie ich das sehe, liest und schreibst Du von bzw. an immer die selbe > Adresse. Wichtig wäre es, den SJA1000 gemäß NXP-Appnote zu > initialisieren (BTR, MODE usw.) und anschliessend das Reset-Flag zu > löschen - erst dann ist der SJA "in Betrieb". Die Befehle die ich oben zur Initialisierung des SJA1000 geschrieben habe, sollten doch dem entsprechen, was Du vorschlägst? Wenn ich keinen Fehler gemacht habe, dann sollten diese den SJA1000 bei 16MHz auf 250kbit im PeliCAN Modus einstellen. Michael K. schrieb: > Hast du in U-Boot den entsprechenden SMC konfiguriert? Ich könnte mir > vorstellen, dass das Standard timing ein bisschen schnell für den > SJA1000 sein könnte (Auch wegen datenbus breite usw...). Wenn du ein > Oszi hast würde ich mal den NCS2 Pin beobachten ob sich da überhaupt was > tut. > > Gruß, > Michael Nein, habe ich nicht. Ich bin aber gerade etwas ratlos wofür SMC stehen soll. Ich finde nur "Static Memory Controller". Versuche gerade mir einen Oszi zu organisieren, habe leider selbst keinen :-/
Hallo Fabian, ich kenne weder den von Dir verwendeten Controller, noch sagt mir "U-Boot" in diesem Zusammenhang etwas - was mir eben auffällt ist, dass Du m. E. immer an die selbe Adresse schreibst bzw. von dieser liest. Wie soll ein Zugriff in der Art: mw.b 30000000 0x0 auf die verschiedenen Register des SJA wirken ? http://www.nxp.com/acrobat_download/applicationnotes/AN97076.pdf Gruss Otto
> Du m. E. immer an die selbe Adresse schreibst bzw. von dieser liest. Laut Schaltplan wird auf Adresse 0x30000000 das ALE angesteuert, auf 0x30000004 werden Daten gelesen und geschrieben. > mw.b 30000000 0x2 ; md.b 30000004 1 Erkennt das Uboot die 30000000 als Hex- oder als Dezimalzahl? > Hier nochmal ein Beispiel um Status Register auszulesen... Der SJA1000 hat ein Register, auf der die Chip-ID fix abgelegt ist. Versuch doch erst mal, die auszulesen.
> Laut Schaltplan wird auf Adresse 0x30000000 das ALE angesteuert, auf > 0x30000004 werden Daten gelesen und geschrieben. 1. Wert also Adresse und der 2. die Daten OK - dann ziehe ich meinen Einwand zurück..... Otto
Genau, die in Registern geschrieben wäre das dann die Initialisierung: 0x00 = 0x01 0x1F = 0xc7 0x08 = 0xFA 0x06 = 0x41 0x07 = 0x1c 0x00 = 0x00 u-boot erkennt meines Wissens die 3000000 als hex zahl, sollte also stimmen. Der Versuch die chip id zu lesen bewirkt leider genau das selbe Ergebnis wie ich in meinem ersten Post geschrieben: erst 0xd4, danach 0x30. Grüße, Fabian
Fabian Henze schrieb: >... > Michael K. schrieb: >> Hast du in U-Boot den entsprechenden SMC konfiguriert? Ich könnte mir >> vorstellen, dass das Standard timing ein bisschen schnell für den >> SJA1000 sein könnte (Auch wegen datenbus breite usw...). Wenn du ein >> Oszi hast würde ich mal den NCS2 Pin beobachten ob sich da überhaupt was >> tut. >> >> Gruß, >> Michael > > Nein, habe ich nicht. Ich bin aber gerade etwas ratlos wofür SMC stehen > soll. Ich finde nur "Static Memory Controller". Versuche gerade mir > einen Oszi zu organisieren, habe leider selbst keinen :-/ Ja, den "Static Memory Controller" meinte ich. Damit kannst du das Timing des Bus Interfaces auf den SJA anpassen. Hmm, im DB vom SJA ist mir gerade aufgefallen, das es einen Motorola und einen Intel Modus gibt. Ist Pin 11 High (für Intel mode)? Weiter ist mir in den Diagrammen ab Seite 60 aufgefallen, das dort CS erst dann low wird, wenn die Adresse schon übertragen ist. Das ist aber bei obigen Schreib / Lese - Zugriffen auf jeden Fall nicht gegeben. Evtl bringt das den SJA durcheinander. Hab mit dem noch nichts gemacht, kann da also nicht viel dazu sagen. Gruß, Michael
Michael K. schrieb: >... > > Hmm, im DB vom SJA ist mir gerade aufgefallen, das es einen Motorola und > einen Intel Modus gibt. Ist Pin 11 High (für Intel mode)? > Weiter ist mir in den Diagrammen ab Seite 60 aufgefallen, das dort CS > erst dann low wird, wenn die Adresse schon übertragen ist. Das ist aber > bei obigen Schreib / Lese - Zugriffen auf jeden Fall nicht gegeben. Evtl > bringt das den SJA durcheinander. Hab mit dem noch nichts gemacht, kann > da also nicht viel dazu sagen. Vergiss den Teil, hab eben erst den Schaltplan entdeckt ;] Sorry Kann es mir nun nur noch durch das Timing erklären, stell dazu mal den SMC2 auf viele Wait-states (kannst du ja auch über die U-boot befehle mw und md machen) Gruß, Michael
Das erinnert mich an meine Anfangsprobleme mit den SJA1000... Ziehe einmal testhalber den TX1 Pin (14) des SJA1000 mit einem Widerstand auf ein definiertes Potenzial. Danach hat es bei mir geklappt.
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.