CAN or Controller-area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other without a host computer.
Hello World!
Loopback example
#include "mbed.h"
Ticker ticker;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
CAN can1(p9, p10);
CAN can2(p30, p29);
char counter = 0;
void send() {
printf("send()\n");
if(can1.write(CANMessage(1337, &counter, 1))) {
printf("wloop()\n");
counter++;
printf("Message sent: %d\n", counter);
}
led1 = !led1;
}
int main() {
printf("main()\n");
ticker.attach(&send, 1);
CANMessage msg;
while(1) {
printf("loop()\n");
if(can2.read(msg)) {
printf("Message received: %d\n", msg.data[0]);
led2 = !led2;
}
wait(0.2);
}
}
This example sends from one CAN bus (can1) an counter while it is listen on the other CAN bus (can2) to receive a packet. Each bus controller should be connected to a CAN bus transceiver. These should be connected together at a CAN bus.
API
API summary
| CANMessage | |
| Functions | |
| CANMessage | Creates empty CAN message. |
| CANMessage | Creates CAN message with specific content. |
| CANMessage | Creates CAN remote message. |
| Variables | |
| id | The message id. |
| data | Space for 8 byte payload. |
| len | Length of data in bytes. |
| format | Defines if the message has standard or extended format. |
| type | Defines the type of a message. |
| CAN | A can bus client, used for communicating with can devices |
| Functions | |
| CAN | Creates an CAN interface connected to specific pins. |
| frequency | Set the frequency of the CAN interface |
| write | Write a CANMessage to the bus. |
| read | Read a CANMessage from the bus. |
| reset | Reset CAN interface. |
| monitor | Puts or removes the CAN interface into silent monitoring mode |
| rderror | Returns number of read errors to detect read overflow errors. |
| tderror | Returns number of write errors to detect write overflow errors. |
| attach | Attach a function to call whenever a CAN frame received interrupt is generated. |
Details
The CAN Interface can be used on mbed pins p9/p10 and p30/p29
The CAN Interface can be used to write data words out of a CAN port and will return the data received from another CAN device. The CAN clock frequency can be configured.
Resources
Last modified 16 Oct 2010, by
Simon Ford

No tags
|
28 comments
I'm glad so there is one more CAN in mbed, but you could repair that picture :) http://mbed.org/media/uploads/simon/mbedmicrocontrollerpinout4.png There is drawn only one CAN