おはようございます。NXPのGD3160をSPI経由で設定するのに苦労しています。データシートを長い間読み込んできましたが、GD3160のSPIと制御の動作をまだ理解できていません。私の主な問題は次の2つにまとめられます。1つ目は、2つのGDのデイジーチェーンから(少なくとも私が思うに)正常に読み取ることができるのですが、何も書き込むことができません。特にMODE2レジスタのCONFIG_ENビットに書き込むことができません。私はArduino Unoを使用しています。私は自分のコードに対して様々なアプローチとテストを試しましたが、最もシンプルでクリーンなテストコードでも失敗するものを添付します。何が間違っているのか教えていただけますか?計算を二重チェックしたのですが、CRCの問題でしょうか?それともSPIの設定の問題でしょうか?仕様通り、MSBが先です。2- また、ゲートのGD PWM信号は、MOSFETが接続されていないデフォルト構成で、デューティサイクルが約50%のときにのみクリーンです。デューティサイクルを上下に変更すると、オシロスコープで測定されるデューティサイクル信号が位相シフトし、はるかに小さくなります。どこから探し始めればいいか、何かアイデアはありますか?
マフムード様、
電圧レベルと部品値が記載された回路図を共有してください。
SPIが正しく設定されていることを確認するために、オシロスコープのプローブをCS、MISO、MOSI、SCLKピンに接続し、オシロスコープの波形を共有してください。SPIタイミング要件については、GD3160のフルデータシートの図35を参照してください。アイドル時はクロックはローレベル(CPOL=0)である必要があり、データはSCLKの立ち下がりエッジで切り替えられ、SCLKの立ち上がりエッジでサンプリングされる必要がある(CPHA=0)。その結果、SPIモード0になります。
AN13167もダウンロードしてご参照ください。そこには、GD3160のSPIインターフェースに関するヒントがいくつか掲載されています。
敬具、
ヨゼフ
ご返信ありがとうございます。返信するのをすっかり忘れていました。ハードウェアチームに回路図を依頼する必要があるが、いずれにせよ、仕様通りに動作するようにすることはできた。問題は、書き込み時に高電圧側の電源が失われた場合やラッチ障害が発生した場合にロックされることを知らなかったことだ。私が今懸念しているのはCONFIG_ENビットについてです。単に書き込みや読み出しを行うだけでは設定モードをアクティブ化できません。いろいろ試してみましたが、唯一うまくいったのはconfig_bitとRESETビットに同時に書き込むことでした。なぜ私はこのような経験をしているのでしょうか?なぜconfig_bitとreset bitの両方を書き込む必要があるのですか?仕様によると、reset bitだけに書き込んでもINTBをローに駆動する効果はありませんが、両方のビットに書き込むと効果があります。SPI通信が正しく行われていること、および書き込む値がずれていないことを確認しました(ビットインデックスとオフセットについては間違いありません)。どう思いますか?
マフムード様、
リセットビットは、障害をクリアし、レジスタをデフォルトの状態にリセットするだけです。設定モードへの移行を妨げる障害が発生しているようです。これは、GD3160をリセットすると、障害が解消され、設定モードに入ることができるようになることを示唆しています。
STATUSレジスタに異常がないか確認してください。STATUS1、STATUS2、STATUS3レジスタ。
敬具、
ヨゼフ