Top Banner
2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff AE
35

2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

Jan 04, 2016

Download

Documents

Stephany Cox
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

2L01I

Renesas Electronics America Inc.© 2012 Renesas Electronics America Inc. All rights reserved.

Class ID: 2L02I

CAN In A Day

Carl Stenquist, Staff AE

Page 2: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.2

Staff Applications Engineer Design of CAN API for R8C, M16C, R32C, SH, RX Manage & support CAN drivers & middleware Development & support USB class driver and sample apps

Previous Experience CAN truck electronics, Stoneridge Electronics, Sweden. 6 years designing and supporting CAN firmware applications for

Renesas MCUs.

MScEE, Chalmers University of Technology, Sweden.

Carl Stenquist

Page 3: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.3

Renesas Technology & Solution Portfolio

Page 4: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.4

Microcontroller and Microprocessor Line-up

Wide Format LCDs Industrial & Automotive, 130nm 350µA/MHz, 1µA standby

44 DMIPS, True Low Power

Embedded Security, ASSP

165 DMIPS, FPU, DSC

1200 DMIPS, Performance1200 DMIPS, Superscalar

500 DMIPS, Low Power

165 DMIPS, FPU, DSC

25 DMIPS, Low Power

10 DMIPS, Capacitive Touch

Industrial & Automotive, 150nm 190µA/MHz, 0.3µA standby

Industrial, 90nm 200µA/MHz, 1.6µA deep standby

Automotive & Industrial, 90nm 600µA/MHz, 1.5µA standby

Automotive & Industrial, 65nm 600µA/MHz, 1.5µA standby Automotive, 40nm

500µA/MHz, 35µA deep standby

Industrial, 40nm 200µA/MHz, 0.3µA deep standby

Industrial, 90nm 1mA/MHz, 100µA standby

Industrial & Automotive, 130nm 144µA/MHz, 0.2µA standby

2010 2012

32-b

it8/1

6-b

it

32-Bit High PerformanceDSP, FPU with High Integration

Page 5: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.5

Smart Society Challenge You don’t have time to write and debug a reliable CAN driver

You need to get your idea to market SOON

Solution

Use CAN and the CAN API! The CAN API handles controlling the peripheral The CAN peripheral - Handles ALL the low level details

Focus on your application!

Connect to the Smart Society with CAN!

Agenda

Page 6: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.6

Where Use CAN!?

The CAN Dataframe

The CAN Mailbox

The CAN API

Polling vs. Interrupts

Transmit Dataframes Polling vs. Interrupt

Receive Dataframes Polling vs. Interrupt

Error Handling

Lab

Application Level Considerations

Agenda

Page 7: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.7

Lab

Learn how to

Initialize the CAN peripheral with the API

Transmit from a CAN mailbox

Receive data to a mailbox

Use a low cost CAN Monitor to view and send CAN dataframes

The lab is straightforward

Reading

Understanding

Uncommenting code…

So don’t leave! !

The CAN API

Page 8: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.8

Where CAN is Best! – 4 min.

http://www.youtube.com/watch?v=X9_mYoUuAaQ&feature=youtu.be

Mainly on-board comm.

Too expensive

Poor noise immunity

Page 9: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.9

CAN – Continuously Moving into New Fields

Machines (knitting) Agriculture Control Electronics Factory Assembly Lines Medical Systems Railway Electronics Marine Electronics Elevators Building Automation Printing, Copying

Page 10: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.10

Lowest LevelsDataframe and Mailbox

Page 11: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.11

The Dataframe

“Standard” 11-bit ID Dataframe

ID exten

d 1

Rem

Req

1

IFS

3+

Data(Bytes)

0-8 bytes

CRC

15

ACK

1

SOF

1

Identifier

11

Control

6

Data(Bytes)

0-8 bytes

Identifier

11

Control

6

Application software only reads/writes CAN ID Data Length Code (in Control Field) Data Field

Page 12: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.12

Mailbox A.k.a. “Message Box”, “Buffer”, “Slot” Application <-> Bus point of interaction One mailbox handles one complete dataframe (0-8 bytes)

RX has 32 mailboxes/peripheral With two channels, 64 mailboxes to use on one bus

More mailboxes SW design easier More SW design flexibility Less runtime reconfiguring

Frame Resides in Mailbox

Page 13: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.13

Managing a Mailbox

HW takes care of rest Tx mailbox: HW takes care of low level transmit details Rx mailbox: HW captures messages with the set ID

Mailboxes can be reconfigured at runtime

Transmit

Write

Write

Write

Field

ID

DLC

Data

All app needs to do!

ReceiveSetup mailbox

Write

-

-

ReceiveGet message

Read

Read

Read

Page 14: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.14

CAN Firmware & Peripheral Interaction

CANPeripheral

Firmware

Node MCU

Node MCU

Node MCU

MaskMaskMask

ID=5,Data= ,RXID=5,Data=123,TX

Configure a mailbox to receive ID=5

Configure a mailbox to send a frame with ID=5

MailboxesMailboxes Mailboxes

Transceiver Transceiver Transceiver

123…

Page 15: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.15

Which of these do you need in order to setup a mailbox to transmit?

1. CAN ID

2. Data Length Code

3. Data Field

4. All above

Which of these do you need to specify to setup a mailbox to receive?

1. CAN ID

2. Data Length Code

3. Data Field

4. All above

Question

Page 16: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.16

Application Level

Page 17: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.17

Let’s move up the layers.

Layers (Where are we?)

Optional industrial protocol

Page 18: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.18

Dealing with the CAN Registers…

…can be tedious.Sure would be nice to have…

CAN Initialization

A CAN API!

START

Enter CAN reset/ initialization mode

CAN reset mode?NO

YES

Enable CAN ports

Set CAN control register - Loopback mode select bit - Message order select bit - Basic CAN mode select bit - Bus error interrupt enable bit

Set CAN bit timing and baud rate

Set mask register

Go to CAN operation mode

CAN operation mode?NO

ENDYES

Exit CAN sleep mode

R_CAN_Create()

The CAN API

Page 19: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.19

Initialization, Port and Peripheral ControlR_CAN_Create (ch_nr); R_CAN_SetBitrate (ch_nr);R_CAN_PortSet (ch_nr, action_type); [action_type = ENABLE, DISABLE]R_CAN_Control (ch_nr, action_type); [action_type = ENTERSLEEP_CANMODE,

EXITSLEEP_CANMODE, RESET_CANMODE, HALT_CANMODE, OPERATE_CANMODE,

CANPORT_TEST_LISTEN_ONLY, CANPORT_TEST_0_EXT_LOOPBACK, CANPORT_TEST_1_INT_LOOPBACK, CANPORT_RETURN_TO_NORMAL]

SendR_CAN_TxSet (ch_nr, mbox_nr, frame_p, frame_type);R_CAN_Tx (ch_nr, mbox_nr);R_CAN_TxCheck (ch_nr, mbox_nr);R_CAN_TxStopMsg (ch_nr, mbox_nr);

ReceiveR_CAN_RxSet (ch_nr, mbox_nr, stid, frame_type);R_CAN_RxRead (ch_nr, mbox_nr, frame_p);R_CAN_RxPoll (ch_nr, mbox_nr, frame_p);R_CAN_RxSetMask (ch_nr, sid_mask_value, mask_reg_nr);

Error CheckR_CAN_CheckErr (ch_nr);

The CAN API

The CAN API

Page 20: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.20

Polling You only need data at a certain execution path You don’t want CAN interrupts interfering some other task Note:

– Overrun New message discarded

– Overwrite New message overwrites old

Interrupts For processing data as soon as it arrives When messages may not be lost - “linked” messages To avoid overwrite / overrun

Polling vs. Interrupts

Page 21: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.21

The API function Waits for previous frame to finish transmit Clears message control register Disables interrupts for mailbox Sets CAN ID Sets DLC Sets transmit data Transmits Dataframe

Transmitting A Framestruct can_std_data_s{ uint16 id; uint8 dlc; uint8 data[8];};

R_CAN_TxSet (0, mbox_nr, &my_tx_frame, DATA_FRAME);

my_tx_frame.id = 0x700;my_tx_frame.dlc = 2;my_tx_frame.data[0] = 0x11;my_tx_frame.data[1] = 0x22;

struct can_std_frame_t my_tx_frame;

The CAN API

Page 22: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.22

Not necessary... …unless application must know whether message sent yet Example; message in a sequence

CAN peripheral will deliver unless Bus Off Just continuously check for Error Passive/Bus Off

Transmit Verification

#define USE_CAN_POLL 0

Successful Dataframe transmit triggers ISR

CAN0_TXM0_ISR() checks which mailbox sent.

Flag the application that data has been sent!

Polling#define USE_CAN_POLL 1 (config_r_can_rapi.h)

Check if data sent by calling

API_status = R_CAN_TxCheck (ch_nr, mbox_nr);If API_OK, message was sent!

Transmit interrupt

Page 23: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.23

A CAN mailbox configured with an ID can later be reused to handle other IDs?

A. True, a mailbox can be reconfigured at runtime.

Can a mailbox be reconfigured from transmit to receive?

A. Again, yes! A mailbox can be reconfigured at runtime.

Question

Page 24: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.24

The API Waits for any previous transmission/reception to complete Interrupt disables the mailbox Clears mailbox control register Sets Standard ID for selected mailbox Sets Dataframe/Remote frame Sets receive interrupt enabled

unless USE_CAN_POLL defined

Configure Mailbox to Receive

R_CAN_RxSet(ch_nr, mbox_nr, stid, frame_type);The CAN API

Page 25: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.25

Polling for Received Data

How to receive Dataframe in application

At System Setup In config_r_can_rapi.h

#define USE_CAN_POLL 1

When polling from app, useR_CAN_RxPoll(ch_nr, mbox_nr, frame_p); If this returns API_OK, mailbox has new message, call

R_CAN_RxRead (ch_nr, mbox_nr, frame_p); Copies data to address -> frame_p.

Page 26: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.26

Using the Receive Interrupt

How to receive Dataframe in application

At System Setup In config_r_can_rapi.h

#define USE_CAN_POLL 0

When frame arrives with ID set by API the CAN Receive ISR triggers Check which mailbox caused the interrupt with

R_CAN_RxPoll (ch_nr, mbox_nr, frame_p); If new frame, call

R_CAN_RxRead (ch_nr, mbox_nr, frame_p);which copies the data to frame_p

Set a flag to tell the main application that data has been received

Page 27: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.28

Lab Setup

YRDK63N

A to mini-B USB cableTo PC for J-Link debug

J8

SYSTEC CAN

bus monitorv

U A R T

LCD

5V DCNot necessary.CAN only needs 0-3.5 V

SW

3 S

W2

SW

1

Ring ofLEDs

v A to B USB cableTo PC for Sys Tec

CAN monitor

CAN Hi = thick red wire -> pin 1

J-LinkDebug

Page 28: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.29

Application Level Considerations

Page 29: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.30

No real addresses Messages broadcast to whomever happens to listen!

Subdivide ID field for higher level functionality11-bit ID split into “user protocol” fields

Your CAN Application - Keep in Mind

Group priority

(critical, info,..)

Function ID

(temp sensor, motor,..)

Device address

You CAN use!

Page 30: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.31

Error Handling

Check node state regularly with uint8_t R_CAN_CheckErr(void)

Returns STATE_ERROR (Error Active): < 127 CAN transmit and

receive errors occurred, OK!

STATE_ERROR_PASSIVE: Over 127 errors occurred – warn user.

STATE_BUSOFF: Node will not transmit until it recovers. Pause application, notify user that node is not working. Reinitialize CAN and reset mailboxes when node recovers to Error Active.

The CAN API

Page 31: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.32

Minimum Application Handling of Bus Off

Bus Off reached

Peripheral recovered:

Reinitialize CAN!

Normal application activityPoll if peripheral is in Bus Off

Application can not send or receive

System goes into error mode:Poll if peripheral recovers

Page 32: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.33

Questions?

Page 33: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.34

Smart Society Challenge You don’t have time to write and debug a reliable CAN driver

You need to get your idea to market SOON

Solution

Use CAN and the CAN API! The CAN API handles controlling the peripheral The CAN peripheral - Handles ALL the low level details

Focus on your application!

Do you agree?

Connect to the Smart Society with CAN!

Page 34: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

© 2012 Renesas Electronics America Inc. All rights reserved.35

Please utilize the ‘Guidebook’ application to leave feedback

or

Ask me for the paper feedback form for you to use…

Please Provide Your Feedback…

Page 35: 2L01I Renesas Electronics America Inc. © 2012 Renesas Electronics America Inc. All rights reserved. Class ID: 2L02I CAN In A Day Carl Stenquist, Staff.

Renesas Electronics America Inc.© 2012 Renesas Electronics America Inc. All rights reserved.