Probleme mit dem MCP2517FD

Gast #7273849
Lesenswert?

Hallo,
hat Jemand von euch lesenden mit dem Bauteil schon mal gearbeitet?
Gigantische Probleme seit Tagen mit dem Chip.
Nur um ein Beispiel zu nennen:
Lese Register aus. Inhalt 0x18.
Lese noch mal aus, 0x98 auf einmal.
Und so immer wieder, fast mit jedem Register. Irgendwelche Randomzahlen 
drin.
An der Auswertung kann es nicht lieger, der Logikanalyzer passt mit auf.

Und sonst ist das Datenblatt kompletter Müll, leider.
Deren API möchte ich aus mehreren Gründen nicht benutzen. Erst mal 
scheint die mir sehr ineffizient, zweitens funktioniert die (bei mir) 
nicht, drittens blicke ich da nicht durch, bzw kann die nicht verfolgen 
- kann eben nicht programmieren.

Möchte im Can Classic Mode erst mal benutzen, bevor es an CANFD geht.
Wegen größerer Datenmenge soll am Ende CANFD sein.

Habe aktuell keine konkrete Frage, bin einfach nur verwirrt.
Software Reset mit 0x00 0x00 scheint auch nicht wirklich einen Rest 
durchzuführen.
An der Hardware wird es wohl nicht liegen. Wie gesagt, habe einen 
Logikanalyzer parallel dran.

Eine konkrete Frage hätte ich vielleich doch. Muss man den internen Ram 
benutzen und initialisieren? Vorausgesetzt ich möchte keine verschickten 
Nachrichten etc. speichern.

Schreibe gerne meinen Initialisierungscode rein, bavor einer fragt.
Warum Initialisierung aktuell so ist, wie die ist- ist egal.
Das ist mittlerweile verbastelt alles :(
1
Microchip_SW_Reset();                           // SW Reset
2
Microchip_Reg_Write8(0x03, 0x04);               // Request Configuration mode, REQOP
3
Microchip_Reg_Write8(0xE00, 0x01);              // Pll Enable (clock input 4Mhz)
4

5
Orig_Reg_Value = Microchip_Reg_Read8(0);
6
CLEAR_BIT(Orig_Reg_Value, 5);                   // Delete ISOCRCEN bit 
7
Microchip_Reg_Write8(0, Orig_Reg_Value);        
8

9
// Setup timings nominal 500Kb
10
Microchip_Reg_Write8(0x04, 15);                 // sjw
11
Microchip_Reg_Write8(0x05, 15);                 // TSEQ2
12
Microchip_Reg_Write8(0x06, 62);                 // tseq1
13
Microchip_Reg_Write8(0x07, 0);                  // brp
14
// Setup timings data 500Kb
15
Microchip_Reg_Write8(0x08, 7);                  // sjw
16
Microchip_Reg_Write8(0x09, 7);                  // TSEQ2
17
Microchip_Reg_Write8(0x0A, 30);                 // tseq1
18
Microchip_Reg_Write8(0x0B, 1);                  // brp
19

20
Microchip_Reg_Write8(0x0E, 0x02);               // TDCMOD Auto
21
Microchip_Reg_Write8(0x0D, 62);                 // TDCO
22

23

24
// Setup TX FIFO
25
Microchip_Reg_Write8(0x53, 0);                  // Payload size 8 bytes, Fifo size 1
26
Orig_Reg_Value = Microchip_Reg_Read8(0x50);
27
SET_BIT(Orig_Reg_Value, 7);
28
Microchip_Reg_Write8(0x50, Orig_Reg_Value);     // Buffer is TX Buffer
29
Microchip_Reg_Write8(0x52, 0x61);               // Prio 1
30

31

32
//DRV_CANFDSPI_EccEnable();
33

34
DRV_CANFDSPI_RamInit(0xFF);                     
35

36
Microchip_Reg_Write8(0x03, 0x06);               // OP Mode Can Classic

Ist da überhaupt etwas richtig?
Danke schön
Gast #7273856
Lesenswert?

Beispiel:
OP Mode auslesen. Siehe Bild.
Was davor geschah:
1. Strom an
2. kurz warten.
3. SW Reset 0x00 0x00 und kurz warten
4. Request Configuration mode Reg 3, 0x04 und kurz warten
Paar Mal OP Mode auslesen.
Ein mal war 0x98 dazwischen, dann nur noch 0x00 als Status.
Configurationsmode angeblich verlassen. Warum? Durch was? Wieso das 
denn?

Kann diese Prozedur mehrmals wiederholen, es kommt immer was anderes 
raus.

LG
Angehängte Dateien:
Gast #7273871
Lesenswert?

>Mit welcher Frequenz taktest du den MCP?
mit 4 Mhz aus externer Quelle.
PLL Bit ist aktiviert, somit ist mein SYSCLK 40Mhz (hoffentlich)

>Welche Frequenz hat Dein SPI-Takt?
5Mhz.
Danke, das ist ein sehr guter Hinweis.
Microchip_Reg_Write8(0xE00, 0x01);
Wird gleich zu Anfang gemacht.
Aber wann wird es übernommen?
Ich stelle kurz 1Mhz zum Testen ein.

>Zitat aus dem Datenblatt
Dieses Datenblatt.... :(
Persönliche Seite #7273876
Lesenswert?

Not schrieb:
>>Mit welcher Frequenz taktest du den MCP?
> mit 4 Mhz aus externer Quelle.
> PLL Bit ist aktiviert, somit ist mein SYSCLK 40Mhz (hoffentlich)
>
>>Welche Frequenz hat Dein SPI-Takt?
> 5Mhz.
> Danke, das ist ein sehr guter Hinweis.
> Microchip_Reg_Write8(0xE00, 0x01);
> Wird gleich zu Anfang gemacht.
> Aber wann wird es übernommen?
> Ich stelle kurz 1Mhz zum Testen ein.
>
>>Zitat aus dem Datenblatt
> Dieses Datenblatt.... :(

PLLEN ist per default "0", also keine PLL und somit 4 MHz SYSCLK...

Du müsstest wohl während der Initialisierung des MCPs deinen SPI-Bus 
deutlich langsamer takten.
Gast #7273882
Lesenswert?

Vielen Dank für Deine Antwort, hat mir sehr geholfen.

Habe gerade auf 1Mhz gestellt.
das Teil antwortet nun wenigstens immer gleich :(

Ich werde mich melden, wenn ich noch Probleme bekomme.
Schönes Wochenende

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren