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