GR-PEACHでのCAN通信の確認方法

GR-PEACH FULLでのCAN通信確認にハードウェアの準備含めて、手間がかかりました。

実際に通信できるようになるまでに行った手順を記載します。

STEP1:部材の調達

GR-PEACHでは、CAN1はそのままでは取り出せないのでCAN2を利用することにしました。

品名参考URL数量
XBee用2.54mmピッチ変換基板http://akizukidenshi.com/catalog/g/gP-05060/1
2mmピッチピンヘッダ 1×10 (10P)http://akizukidenshi.com/catalog/g/gC-08978/2
CANトランシーバhttps://www.amazon.co.jp/dp/B079DN4G8X/1
ジャンパ線https://www.amazon.co.jp/gp/product/B0785KPQZJ/8
Dsub 9ピンシェルhttp://akizukidenshi.com/catalog/g/gC-00034/1
ブレッドボード1

STEP2:配線加工・組付

GR-PEACHのXBee取付部は2mmピッチなので、XBee用2.54mmピッチ変換基板・1x10ピンソケット2mmピッチをはんだ付けして、一般的な2.54mmピッチへ変換可能にします。

次に、XBee上のピンと、CANトランシーバを接続します。

XBeeピン名CANトランシーバ
P6_4CRX
P6_5CTX
VCC3V3
GNDGND

最後にCANトランシーバとDsub9pinを接続します。

CANトランシーバDsub9pin接続先
CANH7pin
CANL2pin

STEP3:ソフトの実装

以下のように実装しました。

main.cpp

#include "mbed.h"

#define CANRATE (500*1000); // 500kbps

CAN can2(P6_4, P6_5, CANRATE);
Serial pc(USBTX, USBRX);
 
int main(){
    unsigned char param=0;
    bool flag=true;
    CANMessage rx_msg;
 
    while(1) {
        wait(0.1);
        if(can2.read(rx_msg)){
            pc.printf("%x, %x\r\n", rx_msg.id, rx_msg.data[0]);
            flag=true;
        }
        else{
            if(flag==true){
                pc.printf("no message\r\n");
                flag=false;
            }
        }

        int val= can2.write(CANMessage(0x100, (const char*)&param,1));
        printf("send result %d\r\n", val);
        param++;
    }
}


Please log in to post comments.