CAN bus

出自 flip the world
於 2018年8月23日 (四) 10:16 由 Tommy (對話 | 貢獻) 所做的修訂 (已建立頁面,內容為 "== CAN TRANSCEIVER Module - SN65HVD251 == border|350px|CAN TRANSCEIVER Module File:CAN_TRANSCEIVER_Module_01.jpg|CAN TRANSCEIVE…")
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋

CAN TRANSCEIVER Module - SN65HVD251

CAN TRANSCEIVER Module CAN TRANSCEIVER Module

Setup CAN bus

  • loops the data between the mbed LPC1768's two CAN buses.

CAN bus + LPC1768 CAN bus looping

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
...

Reference