NXP SC18IS602B I2CバスからSPIブリッジチップへのTSSOP16パッケージ、つまり16リードを使用しています。0.65 mmピッチ;本体は5 mm x 4.4 mm x 1.1 mm。
お客様は、SC18IS602B機能をエミュレートするために、より小さなパッケージを使用する必要があります。
Kinetis LシリーズMKL03Z16VFK4R製品は、4mm x 4mm x 0.58mmのボディでQFN24パッケージを採用しています。
I2C から SPI へのブリッジのデモでは、SC18IS602B チップの代替ソリューションのデモを提供します。このデモは、I2C0モジュールをI2Cスレーブとして使用し、SPI0モジュールをSPIマスターとして使用するFRDM-KL03Zボードに基づいています。提供されるデータバッファサイズは400バイトです。デモソフトウェアは、KSDK V2.0 for FRDM-KL03Zソフトウェアに基づいています。
I2Cスレーブインターフェース:
ピン番号機能FRDM-KL03Zジャンパー
PTB3 I2C0_SCL J2-10
PTB4 I2C0_SDA J2-9
SPIマスターインターフェース:
ピン番号機能FRDM-KL03Zジャンパー
PTA5 SPI0_SS J2_3
PTA6 SPI0_MISO J2_5
PTA7 SPI0_MOSI J2_4
PTB0 SPI0_SCK J2_6
INTピン(I2CからSPIへのブリッジでi2cマスターが新しいi2c転送を開始できるかどうかを示し、ローがアクティブであることを示します)
ピン番号機能FRDM-KL03Zジャンパー
PTB11 GPIO output J2_2
I2CマスターをFRDM-KL03Z I2Cスレーブインターフェースに接続し、SPIスレーブをFRDM-KL03Z SPIマスターインターフェースに接続します。FRDM-KL03Z GNDをI2CマスターとSPIスレーブに接続してから、これらのボードに電源を追加してください。以下は、ハードウェアプラットフォームの接続方法です。
SPI0_PCS0チップ選択ピンが 1 つある KL03 チップの場合、I2C to SPI Bridge デモでは、SPI 書き込みコマンドとして機能 ID 0x01のみがサポートされます。
例:i2cマスターが8バイト(0x21,0x22...0x28)SPIスレーブに、i2cマスターは以下のデータをFRDM-KL03Zボードに送信する必要があります。
[START] + [I2C Slave address+/W] + [0x01](機能ID) + [0x21](データ1) + [0x22](データ2) + ... +[0x28](データ8) + [STOP]
I2CからSPIへのブリッジデモは、SPIインターフェイスを構成するための機能ID 0xF0をサポートします:6Mbps / 3Mbps / 1.5Mbps / 1Mbpsの4つのSPIボーレートを提供します。詳細については、以下の画像を確認してください(SC18IS602Bデータシートから抜粋した画像)。
例:お客様は、SPIボーレートを3Mbpsに構成し、以下のデータをFRDM-KL03Zボードに送信できます。
[START] + [I2C Slave address+/W] + [0Xf0](機能ID) + [0x01](データ1) + [STOP]
このデモはFRDM-KL03Zボードに基づいており、内部IRC48Mクロックをシステムおよびバスクロックソースとして使用します。外部クロックソースは必要ありません。
- IAR embedded Workbench 7.60.1 (英語)(テスト済み)
- キールMDK 5.18a
- GCC ARM 組み込み 2015-4.9-q3
- Kinetis Development Studio IDE 3.2.0 (英語)
- 9600ボーレート
- 8データビット
- パリティなし
- 1ストップビット
- フロー制御なし
I2CからSPIへのブリッジボードI2Cアドレスは0x7Eです。
I2CマスターはSPIスレーブに10バイトを書き込み、11バイトを送信します(機能IDが1つ0x01含まれています)。最初のデータは0xAAされ、最後のデータは0x22です。
I2C to SPI Bridgeがデータを受信した後、SPIスレーブに10バイトを送信します。
I2CからSPIへのブリッジは10バイトを受信
I2C から SPI へのブリッジで 10 バイトを SPI スレーブに送信
I2Cマスターは、SPIスレーブから10バイト(0x10〜0x19)を読み取る必要がありますが、最初にSPIスレーブにデータを書き込んでから、I2CからSPIブリッジデータバッファに直接データを読み取る必要があります。
ここでは、I2CからSPIブリッジデータバッファへの10バイトの読み取りを示しています。
SPI Bridgeデモ・ソフトウェアに添付されているI2Cのデフォルトの場所は次のとおりです。
..\SDK_2.0_FRDM-KL03Z\ボード\frdmkl03z\user_apps\i2c_to_spi
接続したSPIスレーブデバイスは何ですか?
よろしくお願いいたします。
Mike
このチップを構成でき、しばらくの間動作し、その後、I2Cコマンドへの応答を停止し、SPIバスが正しく動作しなくなったように見えます。MISO データはなく、クロック レートは設定した 460 kHz から 1.8 MHz に変化します。失敗した場合のデータは次のようになります
SPIピン関連の構成を確認してください。
チップを設定できますが、アドレス+ functionid + dataを送信するとクロックやデータが得られません。どんなアイデアでも大歓迎です。私はコントローラーとしてarduinoを使用しています。
Hi,
KL03を使用してSC18IS602Bチップをシミュレートし、データバッファを400バイトに拡張しています。
i2c-to-spi コードを確認してください。
そして、I2Cマスターから400バイトを送信するテストを行いますが、これは以下の写真に示すように正常に動作します。
I2Cデータは0x1から始まります0x21
I2Cデータ停止(0xad、0xae、0xaf)
SPIマスター送信データは0x21、0x22...で始まります。
SPIマスターは、0xad、0xae、および0xafでデータを停止します。
ご清聴ありがとうございました。
良い日をお過ごしください
馬慧(マ・ホイ)
Hello,
どうすれば一度に400バイトを送信できますか?
チップには 200 バイトのバッファしかありません。
Hi,
私は400バイトでデータバッファをテストしました。
I2Cマスターは問題なくI2CからSPIブリッジに400バイトを送信し、SPIスレーブはI2Cマスターから送信された398バイトを取得できます。
よろしくお願いいたします。
Mike
Hello,
チップを使用すると、一度に送信できるIC2バイトは12バイト(アドレス+FunctionID +データ)のみです。
12バイト以上を送信すると、チップはクロックをローにプルしますが、戻すことはありません(クロックストレッチ)。
時々、ICに対して承認が届かないことがあります。
ICには200バイトのバッファがありますが、私は10バイトしか使用できません。
あなたの写真では、12バイトしか送信していないことがわかります。(10 データ バイトのみを送信します)。
あなたも私と同じ問題を抱えていますか?