Tải bản đầy đủ (.pdf) (33 trang)

CAN In A Day

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.89 MB, 33 trang )

2L01I
Renesas Electronics America Inc.
© 2012 Renesas Electronics America Inc. All rights reserved.
CAN In A Day
© 2012 Renesas Electronics America Inc. All rights reserved.2
Renesas Technology & Solution Portfolio
© 2012 Renesas Electronics America Inc. All rights reserved.3
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, Performance
1200 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-bit8/16-bit
32-Bit High Performance
DSP, FPU with High Integration
© 2012 Renesas Electronics America Inc. All rights reserved.4
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.5
 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.6
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.7
Where CAN is Best! – 4 min.
/>Mainly on-board comm.
Too expensive
Poor noise immunity
© 2012 Renesas Electronics America Inc. All rights reserved.8
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.9
Lowest Levels
Dataframe and Mailbox
© 2012 Renesas Electronics America Inc. All rights reserved.10
The Dataframe
“Standard” 11-bit ID Dataframe
ID extend
1
Rem Req
1
I
F
S
3+
Data
(Bytes)
0-8 bytes
C
R
C
15
A
C

K
1
S
O
F
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.11
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.12
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!
Receive
Setup mailbox
Write
-
-
Receive
Get message
Read
Read
Read

© 2012 Renesas Electronics America Inc. All rights reserved.13
CAN Firmware & Peripheral Interaction
CAN
Peripheral
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
Mailboxes
Mailboxes Mailboxes
Transceiver Transceiver Transceiver
123…
© 2012 Renesas Electronics America Inc. All rights reserved.14
 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.15
Application Level
© 2012 Renesas Electronics America Inc. All rights reserved.16
 Let’s move up the layers.
Layers (Where are we?)
Optional industrial protocol
© 2012 Renesas Electronics America Inc. All rights reserved.17
Dealing with the CAN Registers…
…can be tedious.
Sure would be nice to have…
CAN Initialization
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
END
YES
Exit CAN sleep mode
The CAN API
© 2012 Renesas Electronics America Inc. All rights reserved.18
Initialization, Port and Peripheral Control
R_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
]
Send
R_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);
Receive
R_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 Check
R_CAN_CheckErr (ch_nr);
The CAN API
The CAN API
© 2012 Renesas Electronics America Inc. All rights reserved.19
 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.20
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 Frame

struct 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.21
 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.22
 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.23
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.24
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, use
R_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.25
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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×