[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 メーリングリストの案内