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.
