Download - Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf
![Page 1: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/1.jpg)
Controller Area Network(CAN)
Lecture 5.1
![Page 2: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/2.jpg)
Reference
MSCANBlock GuideV02.14
S12MSCANV2.pdf
![Page 3: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/3.jpg)
PIM_9C32
Block Diagram
CAN module
![Page 4: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/4.jpg)
![Page 5: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/5.jpg)
PCA82C250 / 251CAN Transceiver
![Page 6: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/6.jpg)
![Page 7: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/7.jpg)
![Page 8: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/8.jpg)
![Page 9: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/9.jpg)
![Page 10: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/10.jpg)
![Page 11: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/11.jpg)
![Page 12: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/12.jpg)
![Page 13: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/13.jpg)
![Page 14: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/14.jpg)
![Page 15: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/15.jpg)
![Page 16: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/16.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/17.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/18.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/19.jpg)
![Page 20: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/20.jpg)
![Page 21: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/21.jpg)
![Page 22: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/22.jpg)
![Page 23: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/23.jpg)
BSET CANCTL1,#$80 ;turn on CAN
$141
![Page 24: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/24.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/25.jpg)
$140
![Page 26: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/26.jpg)
;Bus clock, listen offLDAA #$C0STAA CANCLT1
$141
![Page 27: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/27.jpg)
$141
![Page 28: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/28.jpg)
$140
![Page 29: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/29.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/30.jpg)
$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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/31.jpg)
1 3 + 3 = 6 3
![Page 32: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/32.jpg)
1 0
$142
![Page 33: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/33.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/34.jpg)
$143
![Page 35: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/35.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/36.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/37.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/38.jpg)
$150
$151
$152
$153
![Page 39: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/39.jpg)
$158
$159
$15A
$15B
![Page 40: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/40.jpg)
$154
$155
$156
$157
![Page 41: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/41.jpg)
$15C
$15D
$15E
$15F
![Page 42: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/42.jpg)
MOVB #$00,CANIDAC
$14B
![Page 43: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/43.jpg)
$FFFF0001$FFFF0001
$001800FE
ID = 127
![Page 44: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/44.jpg)
$FFFF0001$FFFF0001
$00180002
ID = 1
![Page 45: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/45.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/46.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/47.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/48.jpg)
![Page 49: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/49.jpg)
LDAB DLRANDB #$0F
![Page 50: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/50.jpg)
![Page 51: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/51.jpg)
$14B
![Page 52: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/52.jpg)
$146
![Page 53: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/53.jpg)
$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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/54.jpg)
$14A
![Page 55: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/55.jpg)
$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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/56.jpg)
![Page 57: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/57.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/58.jpg)
$144
![Page 59: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/59.jpg)
$144
![Page 60: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/60.jpg)
$144
![Page 61: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/61.jpg)
$144
![Page 62: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/62.jpg)
$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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/63.jpg)
$140
![Page 64: Controller Area Network (CAN) Lecture 5.1. Reference MSCAN Block Guide V02.14 S12MSCANV2.pdf](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/64.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/65.jpg)
; 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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/66.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/67.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/68.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/69.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/70.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/71.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/72.jpg)
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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/73.jpg)
;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](https://reader037.vdocuments.site/reader037/viewer/2022110206/56649d005503460f949d2db4/html5/thumbnails/74.jpg)
;display dataldx #R_DATAldab R_DL
mn1 jsr out1bytjsr outcrlfdecbbne mn1
BRA again
END