Forum: Mikrocontroller und Digitale Elektronik CAN Komunikation Evalboard MCBSTM32C zu STM32F103VDT6


von Ma B. (drumstick)


Lesenswert?

Hallo,

Ich habe ein Eval-Board MCBSTM32C mit dem Prozessor STM32F107VCT und 
eine Elektronik mit dem Prozessor STM32F103VDT6, die über eine 2 
Drahtleitung miteinander kommunizieren. Widerstände angeschlossen. Das 
alles klappt gut bei einer Baudrate von 50kbit/s , bei 100kbit/s und bei 
125kbit/s , da später Daten auf einem Desktoptool angezeigt werden 
sollen ist die Baudrate von 250kbit/s Vorgabe. Ich habe die 
Kommunikation mit einem Peak-Interface und mit dem Tool PCAN-View 
getestet und festgestellt, dass es am Eval-Board liegen muss. Mit der 
Elektronik war eine Baudrate von 250kbit/s möglich. Der CAN Treiber auf 
dem Board kann mit einer Baudrate bis 1Mbit/s betrieben werden.

Kennt sich jemand aus mit dem EvalBoard und mit CAN?

Ich arbeite mit dem uVision 4.70 von Keil und programmiere in c.

Vielen Dank und Gruss!

M. B.

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

M. B. schrieb:
> getestet und festgestellt, dass es am Eval-Board liegen muss. Mit der
>
> Elektronik war eine Baudrate von 250kbit/s möglich. Der CAN Treiber auf
>
> dem Board kann mit einer Baudrate bis 1Mbit/s betrieben werden.

Hast du mal den Reg-Satz genau angeschaut.
Da ist ein Zusatz Timing-Register, was default Null ist.
Mit dem kann man das "Quata-Timing" anpassen (tunen), für die 
Bit-Trigger.
 Das sind ja ca. 12 Steps: 2+ (3*3) +1 --____.____.____> .
 Dazu ist das Register ja extra gemacht worden.

Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

can_bus.PNG
CAN_EVAL_BRD_1.PNG
Hilfsmittel: Scope.
Diverse R-C (pf) Tief-Pass via der beiden Pole CAN-H/L [-R-C-] to_GND.


Rauf/Runter via Transceiver Comperator-Pin (REF-SPG)

Signal Conditioning mit Choke Coils.(L). usw.
######################################################################## 
################
Test-JIG:
Die Tranceiver Band-Breite respectiv der Variation 
Kabel-länge+Drill-pair's  solo testen.

Damit kannst du das jeweilige Derivat System im via Arbitration-lost 
IRQ,
Error Counter...
und Band-Breite testen & validieren.

Viel Erfolg.

Gruss Holger.

von Ma B. (drumstick)


Angehängte Dateien:

Lesenswert?

Hallo,

vielen Dank für den Tipp. Aber das mit dem Reg-Satz habe ich noch nicht 
verstanden bzw. welches Du genau meinst? Ich habe mal meine 
Registerübersicht im .png angehängt.


Mit dem KO messe ich ganz merkwürdige Zeiten. Wenn ich die Baudrate auf 
250kbit/s eingestellt habe, messe ich eine Zeit von 27.4us pro Bit!?

Danke und Gruss

M.B.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Zero hat einen Thread über das Bit-Timing mit 80 % Quata-Timing.
http://knowledgebase.nxp.com/showthread.php?t=2829&page=2
Bei den CAN Registern nicht CPU Registern. (siehe Bild. )
Gruss Holger.

von Holger H. (holger-h-hennef) Benutzerseite


Angehängte Dateien:

Lesenswert?

Zitat:
Can someone help me understand this so I know what to set the BT 
register?

#1 With CANCLKDIV=1 and CANBRPE=1 we still have 12MHz to calculate CANBT 
#2
 We select a nice (TSEG1_val + TSEG2_val +3) sum of 6:
Result:
BRP 24
TSEG1 6
TSEG2 1
Sample Point 87,5%
Register: BTR 0x0557

Siehe Bild u. Thread
Das sind 3 Register. nur für das Timing bzw.
#1: TSJW (1-4)
#2: TSEG1 (2-16)
#3: TSEG2 (1-8)
 zustaendig.
############################################
CANBT
CANCLKDIV=1
CANBRPE = EXTENDER =1
---------------------------------------------
Guss Holger

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

M. B. schrieb:
> 250kbit/s eingestellt habe, messe ich eine Zeit von 27.4us pro Bit!?


##########################################
Deine single-Bit-Zeit is ja extrem lang für gewünschte 0.25* 1Mbit.
Du hast sicher einen Vorteiler als Teiler via Basis-Master-Clock da 
drin.
Hint:
Das FreeScale Doku. hat ein extrem Beispiel 8Mhz-MCU-Clock via 1Mbit 
Can-Rate, da ist das
also ganz eng mit der CAN-Bit-Zeit via Master-Clock.
 SJW  nur auf 1 gesetzt. Und Sample nur 1 mal (sonst 3 mal )
 ( SJW = "SYNC JUMP Wide)"
http://cache.freescale.com/files/microcontrollers/doc/app_note/AN1798.pdf
Hier der SJW = (SYNC JUMP Wide bzw. Resync JUMP WIDE )
######################################################################## 
##############
Das 8 Bit Register hat 3 Time-Stufen ---b7:b0
Bit-0..bis Bit 2 hat die Bewerung je bit-pos. mit 1*16* + 0*8 +1*4 . = 
16+4= 20 bingo>.

 Bei dem Doku PCA82C200T.pdf ist das zu BIT posing-via jeweilig 
bit-Value zu sehen.

How to determine SJW value ? R_SESYNC-J_UMP-W_IDE
Hint:
http://www.datasheetcatalog.org/datasheet/philips/PCA82C200T.pdf
Gruss Holger.

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.