[Armadillo:09187] Re: CAN通信(Armadillo440)の設定について

Takashi Sasayama email@hidden
2013年 9月 11日 (水) 09:01:51 JST


笹山です。

(2013/09/10 8:58), 星野 博 wrote:

> ハード(トランシーバ?)が問題であれば、
> 「loopback=0(無効),srx_dis=0(有効)」のパターンでは
> 自身が送信したデータを受信する事は可能だと思っていたのですが、
> 認識誤りでしょうか。
> (ハードに問題があるから受信できない?)
> 
> ※ご質問させて頂いた際に記載したように
>  現状、「loopback=0(有効),srx_dis=0(有効)」の場合のみ
>  自身の送信データを受信できております。

ハードに問題がある場合は、
loopback=0、srx_dis=0のパターンは、
データを受信できない可能性があります。

このモードではCON14_3(CAN2_TX)から出力された信号が、
CON14_4(CAN2_RX)にループバックしてくることで、
自身の送信するデータを受信するのですが、
CAN2_RXは、CAN2_TXと同じ信号が確認できていますでしょうか?


> TxD(CON14)の状態は、
> データフレームの形式でHigh/Lowとなっているか
> 確認して頂く事は可能でしょうか。
>  ⇒TxDのHigh/Lowが正しければ、トランシーバの問題と
>   断言できると思うのですが、(トランシーバの変換がおかしい)
>   現状のこちらの環境では、TxDは500kbpsでのデータフレームとは
>   いえない波形となっています。
>   (前回のメールの6番参照)

オシロスコープで観測してみたところ、
CON14_3(CAN2_TX)から500Kbps(1bit=約2us)の、
正常なデータフレームの波形が観測できました。

仰られますように、
500kbps設定にて、High=16usが観測されるのは、
ビットスタッフィングルールによりありえませんので、
ビットレートの設定が正しく行われていないと考えられます。


当方は2台のArmadillo-440を、
Armadillo実践開発ガイドのサンプル回路で接続後、
下記の手順で動作確認を行いました。

この手順に沿ってもCAN2_TXから、
正常な波形は観測されないでしょうか?
また、Armadillo上で、
同じ実行結果を確認することはできないでしょうか?

Armadillo実践開発ガイド 第3部 : 2.5.2. サンプル回路
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-3_ja-2.1.0/ch02.html#__9


1.下記スクリプトをsetCANbps.shとして保存し、
  Armadillioに格納します。
========================================================
#!/bin/sh

CAN_DEVICE_NAME=can0
SYS_FS_CAN_PATH=/sys/devices/platform/FlexCAN.1

#=================================
# setbps 500Kbps (500000 bps)
#=================================
ifconfig $CAN_DEVICE_NAME down

echo "CAN bps set 500Kbps"
echo "osc" > $SYS_FS_CAN_PATH/br_clksrc
echo "3" > $SYS_FS_CAN_PATH/br_presdiv
echo "7" > $SYS_FS_CAN_PATH/br_propseg
echo "5" > $SYS_FS_CAN_PATH/br_pseg1
echo "3" > $SYS_FS_CAN_PATH/br_pseg2
echo "3" > $SYS_FS_CAN_PATH/br_rjw
echo "1" > $SYS_FS_CAN_PATH/std_msg
echo "0" > $SYS_FS_CAN_PATH/ext_msg
echo "64" > $SYS_FS_CAN_PATH/maxmb
echo "32" > $SYS_FS_CAN_PATH/rx_maxmb
echo "0" > $SYS_FS_CAN_PATH/boff_rec
echo "0" > $SYS_FS_CAN_PATH/listen
echo "0" > $SYS_FS_CAN_PATH/loopback
echo "1" > $SYS_FS_CAN_PATH/smp
echo "1" > $SYS_FS_CAN_PATH/srx_dis
echo "0" > $SYS_FS_CAN_PATH/wakeup
echo "0" > $SYS_FS_CAN_PATH/wak_src

ifconfig $CAN_DEVICE_NAME up
echo "Setting Bitrate"
cat $SYS_FS_CAN_PATH/bitrate
========================================================

2.Armadilloログイン後、setCANbps.shが
  格納されているディレクトリへ移動後、
  下記の手順でコマンドを実行します。

# chmod +x setCANbps.sh 	//実行権限を付与
# ./setCANbps.sh        	//ビットレートを設定
CAN bps set 500Kbps
Setting Bitrate
500000

# candump can0 &		//candumpをバックグラウンドで実行
# cansend can0 123#5A6978A5	//メッセージを送信
  can0  123  [4] 5A 69 78 A5	//candumpの仕様上メッセージを受信

# ifconfig can0 down		//設定変更の為に一旦CANを無効
read: Network is down
[1] + Done(1)                    candump can0

# echo "0" > /sys/devices/platform/FlexCAN.1/srx_dis //srx_dis=0に設定
# ifconfig can0 up		//CANを有効
# candump can0 &		//candumpをバックグラウンドで実行
# cansend can0 123#5A6978A5	//メッセージを送信
  can0  123  [4] 5A 69 78 A5	//candumpの仕様上メッセージを受信
  can0  123  [4] 5A 69 78 A5	//srx_dis=0の為、もう1つメッセージを受信
------------------------------------------------------------------------


どうぞよろしくお願いいたします。

Takashi Sasayama




armadillo メーリングリストの案内