ADC 2 種 (PCM1808、TM7705N) の評価 (3)

ネット上で検索しても TM7705 のデータシートは中国語のものしか見つからず、詳細が読み取れなくて困っていたのですが、「7705」という型番、スペック、ピン・アサイン、データシートの構成などから、Analog Devices の AD7705 のコンパチ品であることが分かりました。 ただし、性能もコンパチであるかどうかは不明です。
ADI の AD7705 については英文および日本語のデータシートがあるので、それらを参照して情報を得ています。
以下では、TM7705 / AD7705 を区別せず、単に「TM7705」と表記します。
TM7705 の主なスペックを列記すると下のようになります。

  • 電源電圧は 2.7 V 〜 3.3 V と、 4.75 V 〜 5.25 V のふたつの範囲で規定されている
  • 独立 2 系統の完全差動アナログ入力 (入力端子は計 4 本)
  • バッファ・アンプおよび 1 倍から 128 倍までの PGA (Programmable Gain Amp.) を内蔵
  • ユニポーラ (ストレート・バイナリ出力) あるいはバイポーラ (オフセット・バイナリ出力) に設定可能
  • シグマ・デルタ AD (fs = 19.2 kHz @ fclk = 2.4576 MHz)
  • コム・フィルタで AD 出力がデシメートされて、最大 16 ビット分解能で出力される (fs = 50 〜 500 kHz @ fclk = 2.4576 MHz)
  • 1 MHz あるいは 2.4576 MHz の外部クロックあるいは水晶振動子の接続で動作
  • 2.4576 MHz クロックの場合 50 Hz あるいは 60 Hz の出力レート (およびノッチ周波数) 設定可能
  • 内部にクロック 2 分周機能を持つので 2 MHz あるいは 4.9152 MHz クロックでも動作可能
  • ディジタル・インターフェースは SPI 準拠
  • 専用のピンから変換完了信号出力
  • TM7705N は DIP 16 ピン・パッケージ

Arduino との接続も考慮して、評価回路を Arduino 用ブレッドボード・シールド上に組み、Nucleo F411RE の Arduino コネクタ部分に接続しました。 回路図を下に示します。


上半分の OP アンプを使った回路は、単に周期数十秒の三角波を発生させるためのものです。
2.4576 MHz の水晶振動子は一般的な周波数ではなく、高価なので、aitendo で 10 個 100 円で販売されている 4.9152 MHz の水晶振動子を使いました。
マイコン側から必要な周波数を供給できるならば水晶振動子は不要です。
おそらくブレッドボードではストレー容量が多くなるせいだと思いますが、SPI の SCK 出力のドライブ能力 (スピード) が低いと、AD 出力のディジタル・データが正しく取り込めないという現象が発生しました。
その状態の出力結果のグラフを下に示します。

一番上の赤い色のトレースが、SCK 出力ポートのスピードを「MEDIUM」にした場合で、問題なく出力されています。
小さな階段状のステップのサイズは約 40 です。
中央の青い色のトレースは SCK 出力ポートを PB3 に割り当て、スピードをデフォルト値の「LOW」のままにした場合です。
8 ビット SPI 転送 2 回で 16 ビット・データを読み込んでいますが、ときどき最初の 8 ビット転送の LSB の値が正しく読めない場合があり、グラフに示すような大きな「ジャンプ」が発生しています。 その幅は 256 です。
一番下の緑色のトレースが、SCK 出力ポートを PA5 に割り当て、スピードをデフォルト値の「LOW」のままにした場合です。
この場合、常に最初の 8 ビット転送の LSB が「0」になっています。
Nucleo ポード上では、PB3 には何も接続されていませんが、PA5 には Arduino と同様に LED と電流制限抵抗が「プルダウン」するような形で接続されています。
PA5 の場合、3.3 kΩ でプルアップしても変化は見られませんでしたが、1 kΩ でプルアップすると状態は改善しました。
PB3 の場合には 1 kΩ のプルアップでも改善しませんでした。
PA5/PB3 ともに、ポートのスピードを STM32CubeMX のデフォルト設定の「LOW」から「MEDIUM」に変更すると正しい結果が得られました。
SPI クロック周波数の設定は 84 [MHz] / 256 = 328.125 [kHz] と、あまり速くないのですが、SPI 回路は 42 MHz クロックで動作可能なので、SCK の波形がなまると悪影響があるのかも知れません。
正常に動作する状態で、三角波全体をキャプチャしたものを下に示します。

バイポーラ・モードでのオフセット・バイナリを 2 の補数に変換して表示しています。
三角波の頭がクリップしているのは、三角波のピークのアナログ電圧が AD の入力レンジ外になっているためです。