2404257_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2404257_ja-JP

2404257_ja-JP

SC18IS606 - バックナンバーを読む

こんにちは、

NXP製のI2CからSPIへのコンバーター SC18IS606を使います。私たちはRaspberry Piを使用して、I2C経由でSC18IS606にデータを書き込み、読み取っています。デバイスSC18IS606はRaspberry Pi OSのターミナルに表示され、ターミナルで「i2cdetect -y 1」コマンドを実行すると正しいアドレスで検出されます。

簡単なテストとして、GPIO 0~2への書き込み操作(設定/クリア)を行い、ループ内で一定の遅延を挟みながらそれらを切り替えてみました。この部分は正常に動作しています。

しかし、SC18IS606から読み戻すと、0x00ではなく0x80が読み取られます。

その後、ジャンパー線を使ってMISOピンとMOSIピンを接続し、SPIループバックを作成しました。SPIにパターン0x00から0x07を送信しています。読み戻されたデータは0x80から0x87までです。

ループバックテストでSPIを読み戻すと、MSBは常に1になります。

Mouserから購入したSC18IS606チップを2個テストしたところ、同じ結果が得られました。

何が原因か心当たりはありますか?どうすれば直せますか?


Re: SC18IS606 - reading back issue

こんにちは、ジョンピーター

良い一日!

1. 注文内容をご確認ください

SC18IS606のSPI構成レジスタには、ORDERビットが含まれています。

  • 順序 = 0 → 最上位ビット優先(デフォルト)
  • 順序 = 1 → 最下位ビットが先

SC18IS606がLSB優先に設定されているのに、ソフトウェアが受信バイトをMSB優先と解釈すると、パターンがずれて見え、MSBが常に設定されているように見えることがあります。

F0h SPI インターフェース構成コマンドでどの値を書いているか確認してもらえますか?


2.バッファを正しく読み取っていますか?

SC18IS606は、コマンド実行後すぐにGPIOまたはSPIデータを返しません。順序は次のとおりです。

  1. GPIO読み取り(F5h)またはSPIトランザクションを送信します。
  2. 完了するまで待機します(デバイスをポーリングするか、INTを使用します)。
  3. バッファのI²C読み取りを実行します。

SPI操作の場合、受信したMISOデータは内部バッファに格納され、その後I²C読み出しトランザクションによって読み戻される必要があります。

バッファを読み取る際のプロトコルエラー(例えばアドレスバイトをデータとして扱う、または1ビットのオフセットを読み取るなど)が、正確な「+0x80」を生むことがあります。

この情報がお役に立てば幸いです。他に何かご不明な点がありましたら、お気軽にお問い合わせください。

良い一日をお過ごしください。幸運を祈ります。

Re: SC18IS606 - reading back issue

Raspberry Pi上で実行したPythonコードと、ターミナルに表示された出力結果を添付しました。SC18IS606はMAX31865とつながっています。レジスタ読み出し時に、最上位ビット(7ビット目)がハイになっている生バイナリデータを確認しました。

例えば、RTDの最上位ビットの生データは0xC6です。Pythonコードの7ビット目をマスクすると、0x41が得られます。レジスタ読み出しのたびに7ビット目がハイになる理由は何でしょうか?

38.png38.png38.png 39.png39.png39.png 20260818_00h49m35s_grim_01.png20260818_00h49m35s_grim_01.png20260818_00h49m35s_grim_01.png

Tags (1)
No ratings
Version history
Last update:
Thursday
Updated by: