mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SJA1000 und AT91RM9200


Autor: Fabian Henze (flyser)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (1am3r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Fabian Henze (flyser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-/

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/applicationnot...

Gruss Otto

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Fabian Henze (flyser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (1am3r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (1am3r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: WernerB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.