CAN bus
CAN TRANSCEIVER Module - SN65HVD251
Setup CAN bus
- loops the data between the mbed LPC1768's two CAN buses.
Code
#include "mbed.h" #include "CAN.h" Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can1(p9, p10); CAN can2(p30, p29); Serial pc(USBTX, USBRX); char counter = 0; void send() { //pc.printf("send()\n"); if(can1.write(CANMessage(1337, &counter, 1))) { //pc.printf("wloop()\n"); counter++; //pc.printf("Message sent: %d\n", counter); } led1 = !led1; } int main() { pc.printf("main()\n"); ticker.attach(&send, 1); CANMessage msg; while(1) { //pc.printf("loop()\n"); if(can2.read(msg)) { pc.printf("Message received: %4d\n\r", msg.data[0]); led2 = !led2; } wait(0.2); } }
Result
- stty -F /dev/ttyACM0 speed 9600 -crtscts cs8 -cstopb -parenb -icrnl
- cat < /dev/ttyACM0
The following will using CAN bus to send counting message from 0 to 255 and repeat again: ... Message received: 246 Message received: 247 Message received: 248 Message received: 249 Message received: 250 Message received: 251 Message received: 252 Message received: 253 Message received: 254 Message received: 255 Message received: 0 Message received: 1 Message received: 2 Message received: 3 Message received: 4 Message received: 5 ...