74
Controller Area Network (CAN) Lecture 5.1

Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

Embed Size (px)

Citation preview

Page 1: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

Controller Area Network(CAN)

Lecture 5.1

Page 2: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

Reference

MSCANBlock GuideV02.14

S12MSCANV2.pdf

Page 3: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

PIM_9C32

Block Diagram

CAN module

Page 4: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 5: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

PCA82C250 / 251CAN Transceiver

Page 6: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 7: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 8: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 9: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 10: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 11: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 12: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 13: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 14: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 15: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 16: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

0.4 Mbps3m

=2(15ns + 150ns) = 330ns

Bit time =2500ns

Page 17: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

2 4MHz

250ns 2500/250 = 10

330/250 = 210 2

7 so PROP_SEG = 3, PHASE_SEG1 = 3 and PHASE_SEG2 = 3

RJW = 3

Page 18: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

320x10

= 0.015

32(127)

= 0.0118

21033331.18%

Page 19: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 20: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 21: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 22: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 23: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

BSET CANCTL1,#$80 ;turn on CAN

$141

Page 24: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;place CAN in init modeCAN_INI BSET CANCTL0,#$01

BRCLR CANCTL1,#$01,CAN_INI

$141

Page 25: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$140

Page 26: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;Bus clock, listen offLDAA #$C0STAA CANCLT1

$141

Page 27: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$141

Page 28: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$140

Page 29: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;CSWAI,WUPE,TIME,SLPRQ offBCLR CANCTL0,#$2E

$140

Page 30: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$140

;CSWAI,WUPE,TIME,SLPRQ offBCLR CANCTL0,#$2E

Page 31: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

1 3 + 3 = 6 3

Page 32: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

1 0

$142

Page 33: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

1 0 0 0 0 0 0 1

MOVB #$81,CANBTR0

Prescale = 2

$142

Page 34: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$143

Page 35: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

TSEG2 = 3

0 1 0 3 Tq clock cycles

0 0 1 0

$143

Page 36: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

0 0 1 0 0 1 0 1

0 1 0 1 6 Tq clock cycles

TSEG1 = 6

MOVB #$25,CANBTR1

$143

Page 37: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

ID = 127 ID = 1

IDR0 = $00IDR1 = $18IDR2 = $00IDR3 = $FE

IDR0 = $00IDR1 = $18IDR2 = $00IDR3 = $02

Page 38: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$150

$151

$152

$153

Page 39: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$158

$159

$15A

$15B

Page 40: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$154

$155

$156

$157

Page 41: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$15C

$15D

$15E

$15F

Page 42: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

MOVB #$00,CANIDAC

$14B

Page 43: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$FFFF0001$FFFF0001

$001800FE

ID = 127

Page 44: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$FFFF0001$FFFF0001

$00180002

ID = 1

Page 45: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;Acceptance & Mask registers

MOVW #$0018,CAN0IDA0 ; ID = $0018MOVW #$00FE,CAN0IDA2 ; ID = $00FEMOVW #$FFFF,CAN0IDM0 ; filter = $FFFFMOVW #$0001,CAN0IDM2 ; filter = $0001MOVW #$0018,CAN0IDA4 ; ID = $0018MOVW #$0002,CAN0IDA6 ; ID = $0002MOVW #$FFFF,CAN0IDM4 ; filter = $FFFFMOVW #$0001,CAN0IDM6 ; filter = $0001

Page 46: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

BCLR CANCTL0,#$01

EXIT CAN INIT MODE

$140

Page 47: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;wait for syncSYNC BRCLR CANCTL0,#$10,SYNC

$140

Page 48: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 49: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

LDAB DLRANDB #$0F

Page 50: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 51: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$14B

Page 52: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$146

Page 53: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$146

;wait for an available transmit registeragain BRCLR CANTFLG,#$07,again

Page 54: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$14A

Page 55: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$146

$14A

LDAA CANTFLG ; read 00000110STAA CANTBSEL ;write 00000110 <fill TX foreground buffer>LDAA CANTBSEL ; read 00000010STAA CANTFLG ;send data out TX1

Page 56: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
Page 57: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

ID_SMSG dw $0018 ;CAN ID registersdw $0002

S_DATA db $41 ;CAN DATA db $42db $43db $44db $45db $46db $47db $48

S_DL db 8 ;CAN DATA LengthPRIO_MSG db 0 ;CAN Priority register

LDX #ID_SMSG ;X -> CAN IDsLDY #CANTXFG ;Y -> TX foreground buffer

MOVW 2,X+,2,Y+ ;transmit IDsMOVW 2,X+,2,Y+

LDAB #10loop1 MOVB 1,X+,1,Y+ ;move 10 bytes to TX FG buffer

DECBBNE loop1

Page 58: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$144

Page 59: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$144

Page 60: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$144

Page 61: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$144

Page 62: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$144

;wait for new messageself2 BRCLR CANRFLG,#$01,self2

BSET CANRFLG,#$01 ;clr RXF BSET CANCNTL0,#$80 ;clr RXFRM

Page 63: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

$140

Page 64: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;CAN RX foreground buffer thru +$16FCANRXFG: EQU $160

Page 65: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

; Move data from foreground buffer to RX bufferLDX #R_ID ;X -> CAN IDsLDY #CANRXFG ;Y -> RX foreground buffer

MOVW 2,Y+,2,X+ ;receive IDsMOVW 2,Y+,2,X+

LDAB 8,Y ;B = no. of data bytesloop1 MOVB 1,Y+,1,X+ ;move data bytes to rx buffer

DECBBNE loop1

ORG $800;RX BufferR_ID rmb 4 ;CAN ID registersR_DATA rmb 8 ;CAN receive data buffer R_DL rmb 1 ;CAN DATA Length

Page 66: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;Example of a CAN TransmitterCANCTL0: EQU $140 ;CAN control register 0CANCTL1: EQU $141 ;CAN control register 1CANBTR0: EQU $142 ;CAN bus timing register 0CANBTR1: EQU $143 ;CAN bus timing register 1CANRFLG: EQU $144 ;CAN receiver flagsCANRIER: EQU $145 ;CAN receiver interrupt enablesCANTFLG: EQU $146 ;CAN transmit flagsCANTIER: EQU $147 ;CAN transmit interrupt enablesCANTARQ: EQU $148 ;CAN transmit message abort controlCANTAAK: EQU $149 ;CAN transmit message abort statusCANTBEL: EQU $14A ;CAN transmit buffer selectCANIDAC: EQU $14B ;CAN identfier acceptance control

Transmitter Example

Page 67: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

CANRERR: EQU $14E ;CAN Receive error counterCANTERR: EQU $14F ;CAN Transmit error counterCANIDA0: EQU $150 ;CAN Identifier acceptance register 0CANIDA1: EQU $151 ;CAN Identifier acceptance register 1CANIDA2: EQU $152 ;CAN Identifier acceptance register 2CANIDA3: EQU $153 ;CAN Identifier acceptance register 3CANIDM0: EQU $154 ;CAN Identifier mask register 0CANIDM1: EQU $155 ;CAN Identifier mask register 1CANIDM2: EQU $156 ;CAN Identifier mask register 2CANIDM3: EQU $157 ;CAN Identifier mask register 3CANIDA4: EQU $158 ;CAN Identifier acceptance register 4CANIDA5: EQU $159 ;CAN Identifier acceptance register 5CANIDA6: EQU $15A ;CAN Identifier acceptance register 6CANIDA7: EQU $15B ;CAN Identifier acceptance register 7CANIDM4: EQU $15C ;CAN Identifier mask register 4CANIDM5: EQU $15D ;CAN Identifier mask register 5CANIDM6: EQU $15E ;CAN Identifier mask register 6CANIDM7: EQU $15F ;CAN Identifier mask register 7CANRXFG: EQU $160 ;CAN RX foreground buffer thru +$16FCANTXFG: EQU $170 ;CAN TX foreground buffer thru +$17F

Page 68: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

ORG $800

ID_SMSG dw $0018 ;CAN ID registersdw $0002

S_DATA db $41 ;CAN DATA db $42db $43db $44db $45db $46db $47db $48

S_DL db 8 ;CAN DATA LengthPRIO_MSG db 0 ;CAN Priority register

Page 69: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

ORG $4000

;Initialize CAN port

main BSET CANCTL1, #$80 ;enable CAN

;place CAN in init modeCAN_INI

BSET CANCTL0,#$01 ;Initialization ModeBRCLR CANCTL1,#$01,CAN_INI

LDAA #$C0STAA CANCTL1 ;use bus clock, turn off listen mode

MOVB #$81,CANBTR0 ;3Tq Synch and baud rate prescaler =2MOVB #$25,CANBTR1 ;1 samp, tseg1=6, tseg2=3 ;MOVB #$00,CANIDAC ;two 32bit acceptance filters

BCLR CANCTL0,#$01 ;Leave initialization mode

;wait for syncSYNC BRCLR CANCTL0,#$10,SYNC

Page 70: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;Check to make sure some buffer is emptyagain BRCLR CANTFLG, #$07, again

BCLR CANCTL0,#$2E ;CSWAI,WUPE,TIME,SLPRQ off

;select next available buffer as transmit bufferLDAA CANTFLGSTAA CANTBEL

LDX #ID_SMSG ;X -> CAN IDsLDY #CANTXFG ;Y -> TX foreground bufferMOVW 2,X+,2,Y+ ;transmit IDsMOVW 2,X+,2,Y+

LDAB #10loop1 MOVB 1,X+,1,Y+ ;move 10 bytes to TX fore buffer

DECBBNE loop1

LDAA CANTBEL ;read next available TX bufferSTAA CANTFLG ;send data over CAN bus

BRA again ;send them all again

Page 71: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;Example of CAN Receiver

ORG $800

R_ID rmb 4 ;CAN ID registersR_DATA rmb 8 ;CAN receive data buffer R_DL rmb 1 ;CAN DATA Length

outa equ $FF4Fout1byt equ $FF52outcrlf equ $FF5B

Receiver Example

Page 72: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

ORG $4000main BSET CANCTL1, #$80 ;enable CAN

;place CAN in init modeCAN_INI

BSET CANCTL0,#$01 ;Initialization ModeBRCLR CANCTL1,#$01,CAN_INILDAA #$C0STAA CANCTL1 ;use bus clock, listen mode offMOVB #$81,CANBTR0 ;3Tq Synch baud rate prescale=2MOVB #$25,CANBTR1 ;1 samp, tseg1=6, tseg2=3 ;MOVB #$00,CANIDAC ;two 32bit acceptance filters

;Acceptance & Mask registers MOVW #$0018,CANIDA0 ; ID = $0018MOVW #$00FE,CANIDA2 ; ID = $00FEMOVW #$FFFF,CANIDM0 ; filter = $FFFFMOVW #$0001,CANIDM2 ; filter = $0001MOVW #$0018,CANIDA4 ; ID = $0018MOVW #$0002,CANIDA6 ; ID = $0002MOVW #$FFFF,CANIDM4 ; filter = $FFFFMOVW #$0001,CANIDM6 ; filter = $0001

BCLR CANCTL0,#$01 ;Leave initialization mode

Page 73: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;wait for syncSYNC BRCLR CANCTL0,#$10,SYNC

BCLR CANCTL0,#$2E ;CSWAI,WUPE,TIME,SLPRQ off

;wait for new messageagain BRCLR CANRFLG,#$01,again

BSET CANRFLG,#$01 ;clr RXF BSET CANCTL0,#$80 ;clr RXFRM

;Move data from foreground buffer to RX bufferLDX #R_ID ;X -> CAN IDsLDY #CANRXFG ;Y -> RX foreground buffer

MOVW 2,Y+,2,X+ ;receive IDsMOVW 2,Y+,2,X+

LDAB 8,Y ;B = no. of data bytesANDB #$0F ;mask upper nibbleSTAB R_DL ;R_DL =no. of data bytes

loop1 MOVB 1,Y+,1,X+ ;move data bytes to receive bufferDECBBNE loop1

Page 74: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf

;display dataldx #R_DATAldab R_DL

mn1 jsr out1bytjsr outcrlfdecbbne mn1

BRA again

END