コード生成を使ったAD変換について(RX64M)

お世話になっています。

コード生成で、S12AD変換を使用した場合の話です。

リファレンス電源に外部REF-IC電源を使用し、動作させた場合です。

ソフトを初期化して、動作させるたびに変換後のデータにズレが発生します。

AN000端子での電圧は、全く同じですが、出てくる値が0x0010位ズレます。

4回平均化設定をさらに32回平均化して殆ど揺れを抑えた後の値にて、

0x0800 場合は、 0x0810 や 0x07F0になり、

その後、電圧を変化させると同じように変化します。

オシロスコープで、REF電源の端子をチェックしても安定しています。

E1にて、リセットを実行すると同じ値になる確率は、50%位です。

どこかにREFのレジスタがありラッチさせているのでしょうか?

同じRX64MをFITのAD変換で初期化した場合は、このようなズレは

無かった思います。

ご存じの方がいらしたらアドバイス願います。

 

 

 

 

Parents
  • SSさん、こんにちは。NoMaYです。

    以下の部分を読み返していて、ふと気になったのですが、今回の製品ではRX64Mの電源が落ちている時(AVCC0=AVCC1=VCC=0)に VREFH0 or AN000~AN003 に電圧が掛かっていたりしないでしょうか?(つまり、絶対最大定格をオーバーしてしまっている、とか?)

    最初の投稿
    > リファレンス電源に外部REF-IC電源を使用 ...

    本日の投稿
    > 電源入れなおす毎に表示電圧が±0.3V位ズレて表示 ...
    > 電池動作の装置で、電源電圧を常時表示 ...
    > 電源の入力は4系統ある為、AN000~AN003まで使用 ...

    ただ、以下でも発生するとのことなので、ちょっとハズしているかも、とも思ってはいますが、、、

    本日の投稿
    > リセット時にADの初期化でも発生する

    RX64M ユーザーズマニュアル ハードウェア編 絶対最大定格の頁の画面コピー
    www.renesas.com/jp/ja/search/keyword-search.html#genre=document&q=r01uh0377
    r01uh0377jj0110-rx64m.pdf

     

  • NoMaY様 いろいろありがとうございました。

    時間が掛かりましたが、正常動作するようになりました。

    今後役立つ人がいるか判りませんが、参考までに、要因を簡略に書いておきます。

    ソフトの問題は無く。
    基板のVREL0とAVSS0とVSSのGNDパターンの問題でした。

    VSSは、デジタル電源のGND。
    VREF0は、純粋にアナログ電源のGNDで、
    AVSS0は、デジタル電源から起点から分岐したアナログ用GNDです。
    どれも最終的にはつながっています。(1点アースは、死語かな?)
    今回は、パターンの処理が悪く、AVSS0にVSS(デジタルGND)のリップルが少し乗っていました。

    ルネサス様に聞いても教えて貰えませんでしたが、リセット時にVREF0の値をAVSS0で
    ラッチしていると想定すると今回の問題は説明できます。

    リセット解除後のタイミングで、AVSS0とVFEFL0の電圧差を内部ラッチするとすると、
    デジタル電源(GND)は、いろいろ所でいろいろな電圧の電源ICなどが動作しているので
    リップルが多めに出ています。

    そのリップルがAVSS0に影響を与えてしまい。リセット及び電源起動時に、
    REFの設定誤差としてその後のADに影響を与えていたと思われます。(推測です)
    あくまでリセットのタイミングのみで決まる。


    VREFに別電源を使っている為、現象が顕著に表れたと思います。
    VREFL0=VCSS0=VSS、VREFH0=AVCC0=VCCの様な簡単な回路なら現れないかもしれません。
    (元々12BITの性能が出ないので判らないかもしれない)


    それと、VREFH0が2.5Vですが、動作しています。
    ルネサス様では、動作保証外とされているようです。
    VREFH0のmin値は2.7Vです。と回答がありました。


    結論は、一部のGNDパターン切断改修にて、リップルを影響を減らす処理を実施した。

    以上、12BITのADのVREFに別電源を使った失敗例でした。

    題目は、ソフトウェアですが、内容はハードウェアでした。

    SSより
  • 追加情報

    ルネサスのサポートより、VREFのラッチはしていないとの情報が来ましたので、
    基板設計の間違いか、ソフト運用の間違いと言うことで結論とします。

    ラッチ説(推測)は、否定された為、余り参考にならないですね。
    たまたま、GNDが弱かった位の話ですね。

    SSより
  • SSさんVREFのラッチというのは初めて聞きました、たいていラッチ回路とは74HC574のような1ビットのデータを記憶させる回路素子と理解しています、VREFというのは基準電圧ですから一定の変動のない、ノイズのない基準電圧でないといけないと思います、これに対してAD入力のサンプルホールドというのがあります、これはラッチと表現するのではなくて、サンプリングした値を留め置くホールドの意味だと思います、正しい呼び方を覚えると助けになると思います。

  • IKUZO様
    コメントありがとうございます。(感謝)
    おっしゃる通りですね。

    AN000~AN002では、変換中(逐次比較中に入力値が変化しないように)ホールドできる機能が
    確かに有りますね。これはサンプルホールドの理解で正しいでしょうか?(>_<)


    今回は変換精度が悪すぎて使い物ならないのは何なのかから来ています。
    12ビットADを使用して変換結果が1000回平均しても7LSB位もズレてしまう?
    それもリセットをする度に変わってしまう。

    何だこれは絶対定格でも4.5LSBなのに、平均して更に4bit捨てて8bit精度に変換しても
    ±5以上もズレた値になるって!!(≧◇≦) 壊れてよねこのマイコン!!

    そして一度決まった値になるとAN00x入力の電圧を同じだけ変えると
    それ以降は、12ビット精度の威力が効いてくるよ。なんでなの???(>_<)


    今回、ラッチと言っているのは、12ビットD/Aユニット(S12ADCユニット0)にVREF用のレジスタが
    存在するのかなって仮説から話ですね。
    ラッチの言葉が間違いなら、”VREFH0値がレジスタに読み込まれて保持される” ですかね。
    まあ、無いって事ですから無いんでしょ。


    VREFH0とVREFL0の値がAVCC0とAVSS0と異なった為に発生したのか?

    S12ADCのユニット0は、AVCC0,AVSS0とVREFH0,VREFL0で作る12ビットD/Aレジスターと
    AN入力をAVCC0,AVSS0で動作させるアナログマルチプレクサを通してA/Dデータレジスターと
    逐次比較レジスターの一致でデータ値を取得するなら電圧のズレがあるのか?


    自己診断機能を使うとVREFH0、VREFH0の1/2、VREFL0(0v)の値を変換する事も
    出来たりしますので、AVCC0とVREFH0値、AVSS0とVREFL0の値のズレもチェック出来ると
    なっています。実際に変換してみると変換できます。

    そこで、AVCC0とVREFH0の値が違う場合は、AN00XがVREFH0の値(電圧)と同じ値が0x0FFFで
    VREFL0と同じ値(電圧)を0x0000となる様にコンパレータに送ると思います。
    ラダー抵抗型のじゃないよね? だったらズレるはずない。


    なんだか判らない。でも別の基板では問題ない。パターンのどこかに悪いところが有る。
    それもGNDアースに有るはずって事なんでしょうね。

    げー、6層板の内層なのね。どこか切れる所は無いか?マイコンの下だぁ
    じゃあ、一度剥がして、修正するかBGAじゃ無かったから良かった。


    まあ、お騒がせしました。SSより
  • SSさんも結構な専門家ですね、恐れ入りました、頑張ってください。
  • IKUZO様

    どうもありがとうございました。

    年寄なので、引退したいのですが...
    目も見えないし...

    最近はコード生成やFITを使わないと
    若い人に読めるソースを残せないない為、苦労しています。

    SHとかH8で辞められたら良かったと最近は思います。

    また、質問とかしたら相手をしてください。

    SS
Reply
  • IKUZO様

    どうもありがとうございました。

    年寄なので、引退したいのですが...
    目も見えないし...

    最近はコード生成やFITを使わないと
    若い人に読めるソースを残せないない為、苦労しています。

    SHとかH8で辞められたら良かったと最近は思います。

    また、質問とかしたら相手をしてください。

    SS
Children
  • 初めまして。尭と申します。

    スレとはあまり関係がありませんが
    >最近はコード生成やFITを使わないと
    >若い人に読めるソースを残せないない為、苦労しています。
    既成のライブラリやフレームワーク等がないと物を作れない人が増えているという事なのでしょうか。
    インターネット上を見て回っているとハードウェアの相手をする実装を行える人が減っているように感じますが、開発を生業としている界隈でも同様だとすると何とも心配な話です。