Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RL78G13 CSI送受信での受信が出来ない

お世話になっております。

RL78G13を用いた開発を行っているのですがCSI送受信を行う際に送信は出来るのですが受信ができません。

送受信にはコード作成ツールで生成した関数

MD_STATUS R_CSI00_Send_Receive(uint8_t * const tx_buf, uint16_t tx_num, uint8_t * const rx_buf)

を使用しており、通信はSPI、相手はMacronix International社製のMX66Lです。

CSI00を使用しています。

通信の確認にRDIDコマンドを送信し、その返答を見たいのですが、通信完了割り込みのr_csi00_interrupt(void)が呼ばれた後、

ソフトウェアブレークしてSIO00を見ると常時0x00となっています。一方オシロスコープでSCKとMOSIとMISOを確認するとRDIDコマンドが正しく送信され

その後MISOで応答が返ってきているようです。

このように受信ができない場合、どの様なミスが考えられるのでしょうか?

よろしくお願いいたします。

  • チョコです。
    RL78/G13の電源電圧は何Vになっているでしょうか。MX66Lは2.7V~3.6Vなので,RL78/G13も同じ電源電圧になっているかを確認してみてください。
  • In reply to チョコ:

    回答ありがとうございます。
    RL78/G13の電源電圧は、E1経由で給電しており3.3Vです。実測値は3.4Vでした。
  • In reply to きくち:

    チョコです。
    電源電圧に問題がなければ,次に考えられるのは端子が正しいかです。
    RL78/G13のSI00端子での波形を確認されていますでしょうか。
  • In reply to チョコ:

    FROM側の端子で確認してましたが、再度RL78側の端子で確認した所、波形は確認できました。
  • In reply to きくち:

    チョコです。

    端子を間違えて居なければ,受信は問題は起こらないはずです。

    コード生成で下のように「連続転送モード」になっているとします。

    ここでは,確認のためにCSI00をマスタ,CSI01をスレーブとしてこの2つを接続します。

    バッファやmain関数での通信処理は以下のようになります。

    これで,「r_csi00_interrupt」の先頭でブレーク・ポイントを設定して実行させると,

    最初のブレーク時には以下の状態になります。SIO00にはスレーブに送信するデータが

    セットされています。なお,この状態では,E1のプロパティでの「デバッグ・ツール設定」の

    「ブレーク」でブレーク時にはタイマもシリアルを停止するに設定しているので,通信は

    行われていません。

    以下,ブレーク・ポイント付きで実行する度に以下のように変化します。

    このように,最初にマスタから0x9Fを送信し,スレーブからは0xCC,0x33,0xAA,0x55

    が受信されているのが確認できます。

  • In reply to チョコ:

    G13_CSI_TEST2.zip

    チョコです。

    使用したプロジェクトのzipファイルを添付しておきます。

    今回は,QB-R5F100LEをターゲットに使用しました。

    昨年11月に作ったものをRDIDの通信に合わせました。

     

  • In reply to チョコ:

    チョコさん

    大変参考になりました。
    原因を調査した所どうやら基盤自体に問題があったようです。
    お手数をおかけしました。ありがとうございました。
  • In reply to きくち:

    何度もすいません。
    CPUとFROMの端子を繋ぐとSI00の電圧がHIGH=2V程度になり、端子を離してFROM側でオシロで確認するとsckと同じHIGH=3.3Vの信号が見える現象が続いていてはまってしまいました。恐らくこのせいでSI00の値が常に0に見えるのかなと思ってます。

    この場合CPU側の設定が不足していると思うのですがデータシートを確認しても問題がわかりません。
    PIORの設定は0x00でCSI00の初期化はコード作成ツールで出力した関数をそのまま使っています。
    その他の設定は特にしておりません。
    端子間はそのままリードでつながっており間になにもありません。

    お手数をおかけしますがよろしくお願いします。
  • In reply to きくち:

    チョコです。
    RL78のSI00端子は入力になっているので,これを接続しても電位を下げるようなことはありません。

    電源はE1から3.3Vを供給しているとのことですが,RL78/G13は何ピンのデバイスを使用されている
    のでしょうか?
    64ピン以上のRL78/G13ではCSI00関係の端子はVDDではなくEVDDで動作していますが,EVDDはどう
    なっていますか。
    入力端子でもその電源電圧以上の入力があると,寄生ダイオードでEVDDに接続されます。

    FROMとの間を抵抗を介して接続して,そのときの電圧を確認すれば,何かヒントになるかもしれ
    ません。

    以上
  • In reply to チョコ:

    チョコさん

    使用しているのは48ピンのG13です。
    FROMとCPU間に1kΩの抵抗を入れて確認した所、CPU側は0VでFROM側は3.3Vの波形が確認されました。
  • In reply to きくち:

    チョコです。
    そうなると,RL78/G13側の端子がグランドに弱くショートしている可能性が考えられます。
    (完全なショートではFROMと直結で2V程度にはなりません。)
    配線を確認してみてください。また,可能なら,RL78/G13の端子を基板から浮かせてみてください。

    以上
  • In reply to チョコ:

    チョコさん

    G13の端子とグランド間は100kΩほどでショートはしていませんでした。

    他に何か考えられませすでしょうか?
  • In reply to きくち:

    チョコです。
    >G13の端子とグランド間は100kΩほどでショートはしていませんでした。
    1kΩを介して接続して0Vになることと矛盾しています。
    もしかして,G13の端子を基板から浮かせた状態でしょうか。
    後は,使用している端子と兼用になっているポート(P1.1)が出力(PM1.1が0)になっては
    いないでしょうか。
  • In reply to チョコ:

    チョコさん

    G13端子は基盤に付けた状態で測定しました。
    PM1レジスタの値は0x32でPM1.1は1になってます。
    PMレジスタとPレジスタはコード生成で出力した初期化関数以外で操作していません。
    CPU側の設定ではなく基盤の問題ということでしょうか?
  • In reply to きくち:

    チョコです。
    RL78は基本的に,PMレジスタの値が1であれば出力バッファはオフになるので,兼用機能を含めて
    端子から出力はできません。
    この状態では,端子はハイ・インピーダンス状態(入力と同じ)になります。
    10kΩ程度の抵抗でVDDにプルアップして電圧がVDDと同程度にならなければ,基板の可能性が高い
    と考えられます。高電圧印加等が原因でデバイスが壊れている可能性もゼロではありませんが。

    以上

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page