0% found this document useful (0 votes)
365 views

Contents CAN Projects With ARM and Arduino

This document discusses Controller Area Network (CAN) bus, which is a vehicle bus standard used in automotive applications. It describes various automotive bus systems including CAN bus, LIN bus, MOST, Byteflight, and others. It then focuses on CAN bus, providing details of its physical layer structure, frame formats, error detection methods, and applications in automotive systems and industry. The document is intended to teach readers about CAN bus and its use in automotive and embedded projects.

Uploaded by

fenix1233
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
365 views

Contents CAN Projects With ARM and Arduino

This document discusses Controller Area Network (CAN) bus, which is a vehicle bus standard used in automotive applications. It describes various automotive bus systems including CAN bus, LIN bus, MOST, Byteflight, and others. It then focuses on CAN bus, providing details of its physical layer structure, frame formats, error detection methods, and applications in automotive systems and industry. The document is intended to teach readers about CAN bus and its use in automotive and embedded projects.

Uploaded by

fenix1233
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Controller Area Network

Projects with ARM and Arduino

Prof Dr Dogan Ibrahim


Near East University

an Elektor Publication
LEARN DESIGN SHARE

CAN Arduino Dogan.indd 3 30-05-16 13:06


Contents

Contents

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Chapter 1 • Automotive Bus Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.1 Vehicle Network Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.2 CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.3 LIN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.5 MOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.6 Byteflight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.7 Intellibus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

1.8 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.9 Comparison of Automotive Bus Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.10 A Brief History of CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

1.11 CAN in Automotive Industry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

1.12 The Basic Structure of a CAN Automotive System . . . . . . . . . . . . . . . . . . . . . . . 32

1.13 Advantages of CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

1.14 Disadvantages of CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

1.15 Properties of CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

1.16 The ISO/OSI Reference Model and CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

1.17 CAN BusISO/OSI Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

1.18 CANopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

1.19 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Chapter 2 • Structure of the CAN physical layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1 CAN Bus Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.2 CAN Bus Data Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.3 Cable Stub Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.4 CAN Bus Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.4 CAN Bus Signal Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.4.1 CAN_H Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.4.2 CAN_L Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.4.3 CAN Signal Waveform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

2.4.4 Bus Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

●5

CAN Arduino Dogan.indd 5 30-05-16 13:06


Controller Area Network - Projects with ARM and Arduino

2.4.5 Bus Transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.5 CAN Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.6 CAN Repeaters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.7 CAN PC Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

2.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Chapter 3 • CAN Bus Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.1 Data Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.1.1 Start Of Frame (SOF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

3.1.2 Arbitration Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

3.1.3 RTF Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

3.1.4 Control Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

3.1.5. Data Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.1.6 CRC Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.1.7 ACK Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.1.8 End of Frame Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.2 Remote Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.3 Error Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3.4 Overload Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3.5 Extended CAN Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Chapter 4 • Error conditions on CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4.1 Bit Stuffing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4.2 CAN Bus Error Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.2.1 Bit Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.2.2 Bit Stuffing Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.2.3 CRC Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.2.4 Frame Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.2.5 ACK Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.3 CAN Bus Fault Confinement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

●6

CAN Arduino Dogan.indd 6 30-05-16 13:06


Contents

Chapter 5 • Data exchange on CAN bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.1 Data Exchange With Data Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.2 Remote Frames on the Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Chapter 6 • CAN Bus timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.1 Bit Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.2 Selection of Bit Timing Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.2.1 The Prop_Seg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.2.2 Oscillator Tolerance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Chapter 7 • CAN Bus controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7.1 The Basic Structure of a CAN Transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

7.2 The Basic Structure of a CAN Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

7.3 The MCP2515 CAN Controller (Without Built-in Transceiver) . . . . . . . . . . . . . . . 104

7.4 The MCP2515 CAN Controller (With Built-in Transceiver) . . . . . . . . . . . . . . . . . 105

7.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Chapter 8 • CAN Bus development tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.1 Hardware Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.1.1 CAN MicroMOD Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

8.1.2 mikroElektronika CAN Communication Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

8.1.3 The RCDK8C CAN Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

8.1.4 mikroElektronika CAN SPI Click Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

8.1.5 mikroElektronika CAN-1 board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

8.1.6 CAN Bus Monitor Demo Board . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

8.2 CAN Bus Analyzers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.2.1 Microchip Inc CAN Bus Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.2.2 CANdo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

8.2.3 PCAN Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

8.2.4 CAN-Bus-Tester 2 (CBT2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

8.2.5 BitScope Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

8.2.6 LAP-C Logic Analyzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

●7

CAN Arduino Dogan.indd 7 30-05-16 13:06


Controller Area Network - Projects with ARM and Arduino

8.3 CAN Bus Software Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.3.1 Keil Real-Time Library (RL-ARM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.3.2 mikroElektronika mikroC Pro for ARM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.3.3 STM32F2xx Standard Peripheral Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

8.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Chapter 9 • Architecture of ARM microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . 121

9.1 The STM32 Family of ARM Microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

9.2 The STM32F107VCT6 Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

9.2.1 Basic Features of the STM32F407VCT6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

9.2.2 Internal Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

9.2.3 The Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

9.2.4 Low Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

9.2.5 The Clock Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

9.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Chapter 10 • Programming ARM Microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . 141

10.1 mikroC STM32F407VCT6 Microcontroller Specific Features . . . . . . . . . . . . . . . . 141

10.2 The General Purpose Input-Output (GPIO) Library . . . . . . . . . . . . . . . . . . . . . 143

10.2.2 GPIO_Clk_Disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

10.2.4 GPIO_Set_Pin_Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

10.2.5 GPIO_Digital_Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

10.2.6 GPIO_Digital_Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

10.2.7 GPIO_Analog_Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

10.2.8 GPIO_Alternate_Function_Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

10.3 Memory Type Specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

10.4 PORT Input-Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10.5 Accessing Individual Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10.6 bit Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10.7 Interrupts and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10.7.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10.7.2 Interrupt Service Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

10.8 Creating a New Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

●8

CAN Arduino Dogan.indd 8 30-05-16 13:06


Contents

10.9 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

10.9.1 Setting Break Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

10.10 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

10.11 Other mikroC IDE Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

10.11.1 ASCII Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

10.11.2 GLCD Bitmap Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

10.11.3 HID Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

10.11.4 Interrupt Assistant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

10.11.5 LCD Custom Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

10.11.6 Seven Segment Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

10.11.7 UDP Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

10.11.8 USART Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

10.11.9 USB HID Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

10.11.10 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

10.11.11 The Library Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

10.12 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Chapter 11 • Clicker 2 for STM32 Development Board . . . . . . . . . . . . . . . . . . . . . . . 169

11.1 LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

11.2 Push-button Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

11.3 Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

11.4 mikroBUS Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

11.5 Programming the Microcontroller on the Clicker 2 for STM32 Board . . . . . . . . . 172

11.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Chapter 12 • mikroC Pro for ARM Built-IN CAN Bus functions . . . . . . . . . . . . . . . . . 177

12.1 STM32F407VGT6 Microcontroller Built-in CAN Controller Module . . . . . . . . . . . . 177

12.1.1 Message Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

12.1.2 Message Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

12.2 mikroC Pro for ARM CAN Bus Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

12.2.1 CANxSetOperationMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

12.2.2 CANxInitializeAdvanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

12.2.3 CANSetMask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

●9

CAN Arduino Dogan.indd 9 30-05-16 13:06


Controller Area Network - Projects with ARM and Arduino

12.2.4 CANSetFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

12.2.5 CANSetFilterScale16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

12.2.6 CANSetFilterScale32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

12.2.7 CANxRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

11.2.8 CANxWrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

11.2.9 CANSlaveStartBank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

Chapter 13 • CAN BUS projects using ARM Microcontrollers . . . . . . . . . . . . . . . . . . 185

13.1 PROJECT 1 – Remote LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

13.2 PROJECT 2 – Remote Temperature Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

13.3 PROJECT 3 – Remote DC Motor Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

13.4 PROJECT 4 – CAN Bus With 3 Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Chapter 14 • Using CAN Bus analyzers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

14.1 Using a Logic Analyzer as a CAN Bus Analyzer . . . . . . . . . . . . . . . . . . . . . . . . 245

14.2 Using the Microchip Inc CAN Bus Analyzer (APGDT002) . . . . . . . . . . . . . . . . . . 249

14.2.1 Connecting the CAN BUS Analyzer to the PC and CAN BUS . . . . . . . . . . . . . . 250

14.2.2 Example CAN Bus Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

14.2.3 Transmitting Data On the Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

14.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Chapter 15 • CAN SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

15.1 CAN SPI Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

15.1.1 CAN SPI Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

15.1.2 CANSPISetOperationMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

15.1.3 CANSPIGETOperationMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

15.1.4 CANSPIInitialize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

15.1.5 CANSPISetBaudRate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

15.1.6 CANSPISetMask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

15.1.7 CANSPISetFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

15.1.8 CANSPIRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

15.2 Project Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

Chapter 16 • Using Arduino with CAN Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

16.1 Arduino CAN Bus Shield . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

● 10

CAN Arduino Dogan.indd 10 30-05-16 13:06


Contents

16.2 CAN Bus Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

16.2.1 CAN.begin(Baud) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

16.2.2 CAN.checkReceive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

16.2.3 CAN.readMsgBuf(&msglen, msgbuf) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

16.2.4 CAN.getCanId() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.5 CAN.sendMsgBuf(msgID, ext, len, buf) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.6 CAN.checkError() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.7 CAN.init_Mask(num, ext, uiData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.8 CAN.init_Filt(num, ext, uiData) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.9 CAN.isRemoteRequest() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.2.10 CAN.isExtendedFrame() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

16.3 Include Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

16.4 Example CAN Bus System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

● 11

CAN Arduino Dogan.indd 11 30-05-16 13:06

You might also like