mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Embed: (wiki syntax)

« Back to documentation index

CAN Class Reference

A can bus client, used for communicating with can devices. More...

#include <CAN.h>

Inherits NonCopyable< CAN >, and NonCopyable< CAN >.

Public Member Functions

 CAN (PinName rd, PinName td)
 Creates a CAN interface connected to specific pins.
 CAN (PinName rd, PinName td, int hz)
 Initialize CAN interface and set the frequency.
int frequency (int hz)
 Set the frequency of the CAN interface.
int write (CANMessage msg)
 Write a CANMessage to the bus.
int read (CANMessage &msg, int handle=0)
 Read a CANMessage from the bus.
void reset ()
 Reset CAN interface.
void monitor (bool silent)
 Puts or removes the CAN interface into silent monitoring mode.
int mode (Mode mode)
 Change CAN operation to the specified mode.
int filter (unsigned int id, unsigned int mask, CANFormat format=CANAny, int handle=0)
 Filter out incoming messages.
unsigned char rderror ()
 Detects read errors - Used to detect read overflow errors.
unsigned char tderror ()
 Detects write errors - Used to detect write overflow errors.
void attach (Callback< void()> func, IrqType type=RxIrq)
 Attach a function to call whenever a CAN frame received interrupt is generated.
template<typename T >
 MBED_DEPRECATED_SINCE ("mbed-os-5.1","The attach function does not support cv-qualifiers. Replaced by ""attach(callback(obj, method), type).") void attach(T *obj
 Attach a member function to call whenever a CAN frame received interrupt is generated.
 CAN (PinName rd, PinName td)
 Creates a CAN interface connected to specific pins.
 CAN (PinName rd, PinName td, int hz)
 Initialize CAN interface and set the frequency.
int frequency (int hz)
 Set the frequency of the CAN interface.
int write (CANMessage msg)
 Write a CANMessage to the bus.
int read (CANMessage &msg, int handle=0)
 Read a CANMessage from the bus.
void reset ()
 Reset CAN interface.
void monitor (bool silent)
 Puts or removes the CAN interface into silent monitoring mode.
int mode (Mode mode)
 Change CAN operation to the specified mode.
int filter (unsigned int id, unsigned int mask, CANFormat format=CANAny, int handle=0)
 Filter out incoming messages.
unsigned char rderror ()
 Detects read errors - Used to detect read overflow errors.
unsigned char tderror ()
 Detects write errors - Used to detect write overflow errors.
void attach (Callback< void()> func, IrqType type=RxIrq)
 Attach a function to call whenever a CAN frame received interrupt is generated.
template<typename T >
 MBED_DEPRECATED_SINCE ("mbed-os-5.1","The attach function does not support cv-qualifiers. Replaced by ""attach(callback(obj, method), type).") void attach(T *obj
 Attach a member function to call whenever a CAN frame received interrupt is generated.

Private Member Functions

 MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &)
 NonCopyable copy constructor.
 MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator
 NonCopyable copy assignment operator.
 MBED_DEPRECATED ("Invalid copy construction of a NonCopyable resource.") NonCopyable(const NonCopyable &)
 NonCopyable copy constructor.
 MBED_DEPRECATED ("Invalid copy assignment of a NonCopyable resource.") NonCopyable &operator
 NonCopyable copy assignment operator.

Detailed Description

A can bus client, used for communicating with can devices.

Definition at line 86 of file cmsis/BUILD/mbed/drivers/CAN.h.


Constructor & Destructor Documentation

CAN ( PinName  rd,
PinName  td 
)

Creates a CAN interface connected to specific pins.

Parameters:
rdread from transmitter
tdtransmit to transmitter

Example:

 #include "mbed.h"


 Ticker ticker;
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 //The constructor takes in RX, and TX pin respectively.
 //These pins, for this example, are defined in mbed_app.json
 CAN can1(MBED_CONF_APP_CAN1_RD, MBED_CONF_APP_CAN1_TD);
 CAN can2(MBED_CONF_APP_CAN2_RD, MBED_CONF_APP_CAN2_TD);

 char counter = 0;

 void send() {
     if(can1.write(CANMessage(1337, &counter, 1))) {
         printf("Message sent: %d\n", counter);
         counter++;
     }
     led1 = !led1;
 }

 int main() {
     ticker.attach(&send, 1);
    CANMessage msg;
     while(1) {
         if(can2.read(msg)) {
             printf("Message received: %d\n\n", msg.data[0]);
             led2 = !led2;
         }
         wait(0.2);
     }
 }

Definition at line 25 of file CAN.cpp.

CAN ( PinName  rd,
PinName  td,
int  hz 
)

Initialize CAN interface and set the frequency.

Parameters:
rdthe read pin
tdthe transmit pin
hzthe bus frequency in hertz

Definition at line 37 of file CAN.cpp.

CAN ( PinName  rd,
PinName  td 
)

Creates a CAN interface connected to specific pins.

Parameters:
rdread from transmitter
tdtransmit to transmitter

Example:

 #include "mbed.h"


 Ticker ticker;
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 //The constructor takes in RX, and TX pin respectively.
 //These pins, for this example, are defined in mbed_app.json
 CAN can1(MBED_CONF_APP_CAN1_RD, MBED_CONF_APP_CAN1_TD);
 CAN can2(MBED_CONF_APP_CAN2_RD, MBED_CONF_APP_CAN2_TD);

 char counter = 0;

 void send() {
     if(can1.write(CANMessage(1337, &counter, 1))) {
         printf("Message sent: %d\n", counter);
         counter++;
     }
     led1 = !led1;
 }

 int main() {
     ticker.attach(&send, 1);
    CANMessage msg;
     while(1) {
         if(can2.read(msg)) {
             printf("Message received: %d\n\n", msg.data[0]);
             led2 = !led2;
         }
         wait(0.2);
     }
 }
CAN ( PinName  rd,
PinName  td,
int  hz 
)

Initialize CAN interface and set the frequency.

Parameters:
rdthe read pin
tdthe transmit pin
hzthe bus frequency in hertz

Member Function Documentation

void attach ( Callback< void()>  func,
IrqType  type = RxIrq 
)

Attach a function to call whenever a CAN frame received interrupt is generated.

This function locks the deep sleep while a callback is attached

Parameters:
funcA pointer to a void function, or 0 to set as none
typeWhich CAN interrupt to attach the member function to (CAN::RxIrq for message received, CAN::TxIrq for transmitted or aborted, CAN::EwIrq for error warning, CAN::DoIrq for data overrun, CAN::WuIrq for wake-up, CAN::EpIrq for error passive, CAN::AlIrq for arbitration lost, CAN::BeIrq for bus error)

Definition at line 131 of file CAN.cpp.

void attach ( Callback< void()>  func,
IrqType  type = RxIrq 
)

Attach a function to call whenever a CAN frame received interrupt is generated.

This function locks the deep sleep while a callback is attached

Parameters:
funcA pointer to a void function, or 0 to set as none
typeWhich CAN interrupt to attach the member function to (CAN::RxIrq for message received, CAN::TxIrq for transmitted or aborted, CAN::EwIrq for error warning, CAN::DoIrq for data overrun, CAN::WuIrq for wake-up, CAN::EpIrq for error passive, CAN::AlIrq for arbitration lost, CAN::BeIrq for bus error)
int filter ( unsigned int  id,
unsigned int  mask,
CANFormat  format = CANAny,
int  handle = 0 
)

Filter out incoming messages.

Parameters:
idthe id to filter on
maskthe mask applied to the id
formatformat to filter on (Default CANAny)
handlemessage filter handle (Optional)
Returns:
0 if filter change failed or unsupported, new filter handle if successful

Definition at line 123 of file CAN.cpp.

int filter ( unsigned int  id,
unsigned int  mask,
CANFormat  format = CANAny,
int  handle = 0 
)

Filter out incoming messages.

Parameters:
idthe id to filter on
maskthe mask applied to the id
formatformat to filter on (Default CANAny)
handlemessage filter handle (Optional)
Returns:
0 if filter change failed or unsupported, new filter handle if successful
int frequency ( int  hz )

Set the frequency of the CAN interface.

Parameters:
hzThe bus frequency in hertz
Returns:
1 if successful, 0 otherwise

Definition at line 61 of file CAN.cpp.

int frequency ( int  hz )

Set the frequency of the CAN interface.

Parameters:
hzThe bus frequency in hertz
Returns:
1 if successful, 0 otherwise
MBED_DEPRECATED_SINCE ( "mbed-os-5.1"  ,
"The attach function does not support cv-qualifiers. Replaced by ""attach(callback(obj, method), type)."   
)

Attach a member function to call whenever a CAN frame received interrupt is generated.

Parameters:
objpointer to the object to call the member function on
methodpointer to the member function to be called
typeWhich CAN interrupt to attach the member function to (CAN::RxIrq for message received, TxIrq for transmitted or aborted, EwIrq for error warning, DoIrq for data overrun, WuIrq for wake-up, EpIrq for error passive, AlIrq for arbitration lost, BeIrq for bus error)
MBED_DEPRECATED_SINCE ( "mbed-os-5.1"  ,
"The attach function does not support cv-qualifiers. Replaced by ""attach(callback(obj, method), type)."   
)

Attach a member function to call whenever a CAN frame received interrupt is generated.

Parameters:
objpointer to the object to call the member function on
methodpointer to the member function to be called
typeWhich CAN interrupt to attach the member function to (CAN::RxIrq for message received, TxIrq for transmitted or aborted, EwIrq for error warning, DoIrq for data overrun, WuIrq for wake-up, EpIrq for error passive, AlIrq for arbitration lost, BeIrq for bus error)
int mode ( Mode  mode )

Change CAN operation to the specified mode.

Parameters:
modeThe new operation mode (CAN::Normal, CAN::Silent, CAN::LocalTest, CAN::GlobalTest, CAN::SilentTest)
Returns:
0 if mode change failed or unsupported, 1 if mode change was successful
int mode ( Mode  mode )

Change CAN operation to the specified mode.

Parameters:
modeThe new operation mode (CAN::Normal, CAN::Silent, CAN::LocalTest, CAN::GlobalTest, CAN::SilentTest)
Returns:
0 if mode change failed or unsupported, 1 if mode change was successful

Definition at line 115 of file CAN.cpp.

void monitor ( bool  silent )

Puts or removes the CAN interface into silent monitoring mode.

Parameters:
silentboolean indicating whether to go into silent mode or not
void monitor ( bool  silent )

Puts or removes the CAN interface into silent monitoring mode.

Parameters:
silentboolean indicating whether to go into silent mode or not

Definition at line 108 of file CAN.cpp.

unsigned char rderror (  )

Detects read errors - Used to detect read overflow errors.

Returns:
number of read errors
unsigned char rderror (  )

Detects read errors - Used to detect read overflow errors.

Returns:
number of read errors

Definition at line 92 of file CAN.cpp.

int read ( CANMessage msg,
int  handle = 0 
)

Read a CANMessage from the bus.

Parameters:
msgA CANMessage to read to.
handlemessage filter handle (0 for any message)
Returns:
0 if no message arrived, 1 if message arrived
int read ( CANMessage msg,
int  handle = 0 
)

Read a CANMessage from the bus.

Parameters:
msgA CANMessage to read to.
handlemessage filter handle (0 for any message)
Returns:
0 if no message arrived, 1 if message arrived

Definition at line 77 of file CAN.cpp.

void reset (  )

Reset CAN interface.

To use after error overflow.

void reset (  )

Reset CAN interface.

To use after error overflow.

Definition at line 85 of file CAN.cpp.

unsigned char tderror (  )

Detects write errors - Used to detect write overflow errors.

Returns:
number of write errors

Definition at line 100 of file CAN.cpp.

unsigned char tderror (  )

Detects write errors - Used to detect write overflow errors.

Returns:
number of write errors
int write ( CANMessage  msg )

Write a CANMessage to the bus.

Parameters:
msgThe CANMessage to write.
Returns:
0 if write failed, 1 if write was successful

Definition at line 69 of file CAN.cpp.

int write ( CANMessage  msg )

Write a CANMessage to the bus.

Parameters:
msgThe CANMessage to write.
Returns:
0 if write failed, 1 if write was successful