2l01i renesas electronics america inc. © 2012 renesas electronics america inc. all rights reserved....
TRANSCRIPT
2L01I
Renesas Electronics America Inc.© 2012 Renesas Electronics America Inc. All rights reserved.
Class ID: 2L02I
CAN In A Day
Carl Stenquist, Staff AE
© 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
© 2012 Renesas Electronics America Inc. All rights reserved.3
Renesas Technology & Solution Portfolio
© 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
© 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
© 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
© 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
© 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
© 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
© 2012 Renesas Electronics America Inc. All rights reserved.10
Lowest LevelsDataframe and Mailbox
© 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
© 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
© 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
© 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…
© 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
© 2012 Renesas Electronics America Inc. All rights reserved.16
Application Level
© 2012 Renesas Electronics America Inc. All rights reserved.17
Let’s move up the layers.
Layers (Where are we?)
Optional industrial protocol
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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.
© 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
© 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
© 2012 Renesas Electronics America Inc. All rights reserved.29
Application Level Considerations
© 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!
© 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
© 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
© 2012 Renesas Electronics America Inc. All rights reserved.33
Questions?
© 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!
© 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…
Renesas Electronics America Inc.© 2012 Renesas Electronics America Inc. All rights reserved.