CANBUS

When attaching a CANBUS adaptor type EMCBK33 to CN3 using a 10 way IDC cable, the connector is fitted to the backside of the module and the following set up is required to match the default settings in the adaptor. 

 
						
					setup(AS1)
					{
						baud=38400;		//num = 110 to 115200. Any value can be set to allow trimming for deviating clocks i.e. 38450
						data=8;			//num = 5, 6, 7, 8
						stop=1;			//num = 1, 15, 2  - note 15 is 1.5 bits
						parity=N;		//first letter of Odd, Even, None, Mark, Space
						rxi=C;			//set receive buffer interface as active (Y), a command processing source (C) or disable (N). Default = N
						encode=sr;		//set s=ASCII, w=UNICODE, m=UTF8 or use sr, wr and mr specifying raw data bytes.
						flow=H;			//none, hardware RTS/CTS or DTR/DSR, software XON XOFF
					}					
					
The default receive address for the adaptor is ID=155h with 11bit or 29bitID
packets accepted (2.0a or 2.0b spec)
All bytes are received on AS1 with 1 to 8 bytes of data.
The transmit ID is also 155H. with data sent via AS1 with data length  of 1.

Connection to an iSMART TFT is shown below.
       

Data Sheet

Operating modes

Communication with the EMCBK33A can be in binary or text format. The factory default mode is binary (this is the only mode available in the v1 product). When the operating mode is changed the mode is stored in EEPROM.
In binary mode every CAN data message received with the configured receive ID is processed and the data bytes extracted from the packet and sent in raw binary format to the target device. Each byte received from the target device is sent on the CAN bus with the configured transmit ID as a single 1 byte packet. Although an ID mask can be set to allow the reception of messages from a range of CAN ID’s the CAN ID itself is not communicated to the target.
Text mode allows more flexibility and maintains all information about the CAN packet when transferring to / from the target device. A disadvantage of text mode is more bytes are transferred on the target side as messages are sent as ASCII text (ASCII HEX for ID and data values). Depending on the CAN bitrate and async baud rate this can lead to a limited throughput of data. Using receive ID filtering with appropriate mask values can help by limiting the range of ID’s accepted. Text mode is preferred when using the EMCBK33A with the iSMART TFT modules because processing of the incoming data on the async port AS1 can be triggered on <CR> and the preceding text packet analyzed using a series of CALC commands to determine packet type, ID, length, payload data, etc. Transmission is also more flexible as a CAN message can be sent with any ID on the fly using the same, easy to read text format.

Binary mode

Configuration

Default settings are CAN ID = 155h, both 11 bit and 29 bit ID CAN messages received, 11 bit CAN messages transmitted, CAN bit rate of 1Mbit/s, asynchronous baud rate = 38400, SPI mode 0 (fixed 1Mhz clock speed). When a configuration command is received the new configuration settings are stored in EEPROM and the controller performs an internal reset and the new settings are used immediately. Only a small selection of settings are available if configured using the internal jumper links.

Changing the configuration via the CAN bus

Setup via the CAN bus is achieved by sending a single CAN message with ID=0h (either 11 or 29 bit ID accepted). The data length of all CAN configuration messages must be 8 bytes (unused parameter bytes at the end of the packet must be sent but can be any value). The format of the 8 data bytes is as follows :-

Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8
‘C’ ‘f’ type param1 param2 param3 param4 param5

If a message is received via CAN with an ID of 0h that does not match this format no further messages with ID of 0h are processed until the controller is powered OFF / ON.

Changing the configuration via the asynchronous interface

Setup via the asynchronous interface is achieved by sending a configuration sequence at the currently selected baud rate. Unlike setting via the CAN bus the packet length depends on the configuration type.

Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 – Byte n
1Bh ’C’ ‘f’ type param1 paramn

Configuration commands – [1Bh] is sent first when sending the configuration via the asynchronous interface.

‘A’ Set Async baud rate

Set the asynchronous baud rate

[1Bh] 43h 66h 41h baud

Baud -
4800 00h
9600 01h
19200 02h
38400 03h
57600 04h
115200 05h

‘B’ Set CAN bit rate

Set the CAN bit rate from a range of common values. Different bit rates are possible by using the custom option.

[1Bh] 43h 66h 42h rate
[1Bh] 43h 66h 42h rate [b1] [b2] [b3]

Rate -
20K 00h
50K 01h
100K 02h
125K 03h
200K 04h
250K 05h
500K 06h
1M 07h
Custom FFh (uses b1, b2 and b3 to create non-standard bit rate – contact us for details)

‘C’ Set CAN receive / transmit modes and select either Async / SPI mode

Set either asynchronous or SPI mode. Set whether 11 bit or 29 bit ID will be used for CAN transmit. Set the CAN receiver to accept 11 bit, 29 bit or both formats.

[1Bh] 43h 66h 43h mode

Mode -
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
A/S - - - - CANTX CANRX2 CANRX1

A/S 0=Async, 1=SPI
CANTX 0=11 bit CAN transmit mode, 1=29 bit CAN transmit mode
CANRX 01=11 bit CAN receive mode, 10=29 bit CAN receive mode, 11=both 11 and 29 bit CAN receive mode


‘Y’ Enter text mode – controller is reset after this command

After this command is sent the controller operates in text mode.

‘Z’ Reset controller to factory defaults


‘R’ Set CAN receive ID (11 bit)

Specify the 11 bit ID to use for CAN receive.

[1Bh] 43h 66h 52h 00h [b1] [b2]

b1 11 bit ID (bits 10-8)
b2 11 bit ID (bits 7-0)

‘R’ Set CAN receive ID (29 bit)

Specify the 29 bit ID to use for CAN receive.

[1Bh] 43h 66h 52h 01h [b1] [b2] [b3] [b4]

b1 29 bit ID (bits 28-24)
b2 29 bit ID (bits 23-16)
b3 29 bit ID (bits 15-8)
b4 29 bit ID (bits 7-0)

‘T’ Set CAN transmit ID (11 bit)

Specify the 11 bit ID to use for CAN transmit.

[1Bh] 43h 66h 54h 00h [b1] [b2]

b1 11 bit ID (bits 10-8)
b2 11 bit ID (bits 7-0)

‘T’ Set CAN transmit ID (29 bit)

Specify the 29 bit ID to use for CAN transmit.

[1Bh] 43h 66h 54h 01h [b1] [b2] [b3] [b4]

b1 29 bit ID (bits 28-24)
b2 29 bit ID (bits 23-16)
b3 29 bit ID (bits 15-8)
b4 29 bit ID (bits 7-0)

‘S’ Set SPI mode

Sets SPI parameters. SPI is currently operational in transmit only (EMCBK33A -> Module). Data order, polarity and phase can be set. Clock frequency is fixed at 1Mhz.

[1Bh] 43h 66h 53h mode

Mode
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - DORD POL PHASE

DORD 0=MSB sent first, 1=LSB sent first
POL 0=clock idle low, 1=clock idle high
PHASE 0=leading edge clock, 1=trailing edge clock


Example setup

Text mode (v2 only)

Overview

In text mode all communication between the EMCBK33A v2 and the target device is in the form of ASCII text packets.

Commands to controller

O<CR> Open the CAN channel (LED bright cyan) (stored in EEPROM, default = closed)

CAN messages can be sent and received. The bitrate must be set up before the CAN channel is opened.

C<CR> Close the CAN channel (LED dim cyan) (stored in EEPROM, default = closed)

No CAN messages can be sent or received.

Br<CR> Set standard CAN bit rate (stored in EEPROM, default = 1M)
r=0 20K
r=1 50K
r=2 100K
r=3 125K
r=4 200K
r=5 250K
r=6 500K
r=7 1M

This command should be sent while the CAN channel is closed.

bxxyyzz<CR> Sets custom CAN bit rate (stored in EEPROM)

Register 1 xx xddddddx d=divider
Register 2 yy xssxpppx ss=SJW, p=propogation
Register 3 zz xhhhHHHx h=phase2, H=phase1

Bitrate (bps) = 16000000 / [ (divider+1) x ( 1+ (p+1) + (h+1) + (H+1) ) ]

Example – 88.8Kbps

Divider (to derive TQ from master clock) = 8

xx x001000x
yy x10x111x
zz x100101x b104E4A<CR>

This command should be sent while the CAN channel is closed.

txxxl[data]<CR> Send a standard 11 bit data CAN message with ID of xxx, length l and optional data
Only valid if CAN channel is open.
Example t100410203040<CR> sends an 11 bit packet with ID of 100h and 4 data bytes 10h, 20h, 30h, 40h

Txxxxxxxxl[data]<CR> Send an extended 29 bit data CAN message with ID of xxxxxxxx, length l and optional data
Only valid if CAN channel is open.
Example T000012FE1F5<CR> sends a 29 bit packet with ID of 000012FEh and 1 data bytes F5h

rxxxl<CR> Send a standard 11 bit remote CAN message with ID of xxx and length l
Only valid if CAN channel is open.
Example r7FE3<CR> sends an 11 bit RTR packet with ID of 7FEh with length of 3

Rxxxxxxxxl<CR> Send an extended 29 bit remote CAN message with ID of xxxxxxxx and length l
Only valid if CAN channel is open.
Example r100000FE2<CR> sends a 29 bit RTR packet with ID of 100000FEh with length of 2

ixxx<CR> Set standard 11 bit receive ID (stored in EEPROM, default = 000)
Example i7FF<CR> sets 11 bit receive ID to 7FFh (see corresponding mask command for message filtering)

mxxx<CR> Set standard 11 bit receive MASK (stored in EEPROM, default = 000). Use in conjunction with receive ID to set up
receive filtering.

Ixxxxxxxx<CR> Set extended 29 bit receive ID (stored in EEPROM, default = 00000000)

Mxxxxxxxx<CR> Set extended 29 bit receive MASK (stored in EEPROM, default = 00000000)

Xn<CR> Enable / disable timestamp info on RX packets (0=disable, 1=enable) (stored in EEPROM, default = disabled)

Un<CR> Sets async baud rate (stored in EEPROM, default = 38400)
0=4800
1=9600
2=19200
3=38400
4=57600
5=115200

Q<CR> Return version information and current configuration

F<CR> Return CAN status flags in the form Fxx<CR>
bit 7 -
bit 6 timestamp enabled
bit 5 CAN enabled
bit 4 CAN initiated
bit 3 -
bit 2 -
bit 1 bus off error
bit 0 passive error

Y<CR> Enter binary mode – controller is reset after this command

Z<CR> Reset controller to factory defaults

Lrrggbb<CR> LED test - sets colour to RGB HEX values


Format of commands received

dxxxl[data][tttt]<CR> Standard data CAN message received with ID, length, optional data and timestamp data if enabled

Dxxxxxxxxl[data][tttt]<CR> Extended data CAN message received with ID, length, optional data and timestamp data if enabled

rxxxl[tttt]<CR> Standard remote CAN message received with ID, length and timestamp data if enabled

Rxxxxxxxxl[tttt]<CR> Extended remote CAN message received with ID, length and timestamp data if enabled


Example setup

For use in an 250Kbps 11 bit system. Filter so only packets with ID’s between 170h and 17Fh are received. Enable receive timestamp.

B5<CR> Set bitrate
i170<CR> Set ID
m7F0<CR> Set mask
X1<CR> Enable timestamp
O<CR> Open CAN channel