こんにちは るねと申します。
RX231と統合開発環境e2stdioを使用し開発を行っております。
今回、外部SRAMへのアクセスの為、e2stdioのスマートコンフィギュレータを使い外部バスを有効にし内蔵ROM有効拡張モードにしました。
すると今まで動作していたRSCANモジュールを使用したCAN通信で送信(受信もできない)が行えなくなりました。
再度外部バスを無効にしシングルチップモードに戻すとCAN通信で送信受信が行えております。
内蔵ROM有効拡張モードにすると、RSCANモジュールが正常に動作しなくなる原因が分かられる方がおられましたら教えてください。
開発環境:e2stdio
スマートコンフィギュレータ追加コンポーネント
・バス(BSC)
・r_rscan_rx
→API関数を使用しデータ送受信。(APIソース内では、送信バッファから送信)
るね さん、こんにちは。NoMaYと申します。まず端子の競合が気になりますけれども、お使いのRX231の型番(またはパッケージとピン数の情報)を教えて頂けませんか?加えて、お使いのCANの端子も教えて頂けませんか?
NoMaYさん返信ありがとうございます。
RX231型番:R5F52318ADFP
パッケージ:LFQFP100
ピン数:100
以下ピンアサインです。CAN端子はソースコード上で設定しており、P54(CTXD0)、P55(CRXD0)にしています。
以下CAN端子設定ソースコード
void can_init_ports(void){
R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_MPC);
/* init CAN channel 0 */ PORT5.PODR.BIT.B5 = 1; PORT5.PODR.BIT.B4 = 0; MPC.P54PFS.BYTE = 0x10; // Pin Func Select P54 CTXD0 MPC.P55PFS.BYTE = 0x10; // Pin Func Select P55 CRXD0 PORT5.PDR.BIT.B4 = 1; // set TX pin direction to output PORT5.DSCR.BIT.B4 = 1; // High-drive output PORT5.PDR.BIT.B5 = 0; // set RX pin direction to input (dflt) PORT5.PMR.BIT.B4 = 1; // set TX pin mode to peripheral PORT5.PMR.BIT.B5 = 1; // set RX pin mode to peripheral
R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_MPC);}
るね さん、こんにちは。NoMaYです。そのRSCAN送受信端子は、外部バスのALE信号端子とWAIT#信号端子との兼用端子になってます。ひょっとするとハードウェア屋さんと相談しないと分からないかもしれませんけれども、外部バスのこの2つ端子に関して、どのような回路設計のボードでしょうか?というか、もし接続する外部メモリで使用するのであれば、CAN送受信端子を別の端子に割り当てるように設計変更しないと、その外部メモリとそのRSCANは同時には使えないです。なお、WAIT#信号の方は別の端子に割り当てを変更することが出来るようですけれども、もう一方のALE信号の方はその端子しか選択肢が無いようです(もし使用するのであれば)。RX230グループ、RX231グループ ユーザーズマニュアル ハードウェア編R01UH0496JJ0120 Rev.1.20 Pages 1983 2018.09.28www.renesas.com/jp/ja/document/mah/rx230-group-rx231-group-users-manual-hardware-rev120#page=83
ピン 電源、 I/Oポート 外部バス タイマ 通信 メモリIF タッチ その他 番号 クロック、 (MTU、TPU、TMR、 (SCI、RSPI、RIIC、 (SDHI) システム制御 RTC、CMT、POE、CAC) RSCAN、USB、SSI) 39 P55 WAIT# MTIOC4D/TMO3 CRXD0 TS15 40 P54 ALE MTIOC4B/TMCI1 CTXD0 TS16
NoMaYさん ありがとうございます。
ALE信号端子とWAIT#信号端子は今回接続する外部メモリには使用しません。
ですので、そのままP54、P55端子はCAN通信端子として使用できるのでしょうか。
マニュアルを見たところ、汎用ポートとしてしか使用できないような記述に見えました。
CAN通信端子ポート番号を変更するしかないのでしょうか。
NoMaYさんこんにちはるねです。
WAIT#端子を他の空いているポートへ変更したところ、CAN通信が正常に送受信できました。
スマートコンフィギュレータの生成されたコードを見たところ外部バス制御レジスタ(PFBCR1)を
ALL0にされており、WAIT#端子がP55へ勝手に設定されていました。ほかのポートへWAIT#端子を設定すると正常に送受信できました。
大変ありがとうございました。