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_4 | CRX |
P6_5 | CTX |
VCC | 3V3 |
GND | GND |
最後にCANトランシーバとDsub9pinを接続します。
CANトランシーバ | Dsub9pin接続先 |
---|---|
CANH | 7pin |
CANL | 2pin |
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*)¶m,1)); printf("send result %d\r\n", val); param++; } }
Please log in to post comments.