問題タブ [spi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
121 参照

linux - bsp のドライバー要件。bsp には、spi で実行されるデバイスのドライバーを含める必要がありますか?

Linux ボード用の BSP を開発しています。ボードには、SPI で動作するデバイスが含まれています。BSP にそのデバイス用のドライバを含める必要があるのか​​、それとも BSP で SPI ポート ドライバのみを提供する必要があるのか​​教えてください。

また、一部のデバイスにカーネル モードではなくユーザー モード ドライバーがある場合。では、このユーザー モード ドライバーは BSP の一部になりますか?

0 投票する
1 に答える
166 参照

linux - ボードサポートパッケージの構成要素、要件、および規定。SPI ベースのデバイス

Linux ボード用の BSP (ボード サポート パッケージ) を開発しています。このボードには、SPI で動作するデバイスが含まれています。BSP を備えたデバイス固有のドライバーを提供する必要があるか、SPI ドライバーで十分である必要があるかについて、天気に関する提案を歓迎します。

また、一部のデバイスにカーネル モードではなくユーザー モード ドライバーがある場合。では、このユーザー モード ドライバーは BSP の一部になりますか?

0 投票する
1 に答える
358 参照

android - アンドロイドを使用したmini6410spiプログラミング

私はAndroidを使用してspi_s3c.cでspiを読み取り
ますこのファイルとそのヘッダー:spi_s3c.hには、company(friendly arm dvd)によって提示されたincludeフォルダーで見つけることができないいくつかのヘッダーが含まれています

たとえば、spi_s3c.hには次の行が含まれています。

s3c-dma.hは次の場所に存在します:DVD \ android-kernel-2.6.28.20100724 \ linux-2.6.28.6-ansroid \ arch \ plat-s3c \ include \ mach \ s3c-dma.h

しかし、map.hファイルとgpio.hファイルはそのパスに存在しませ
ん。これらのパス(いくつかのインクルードファイルがあるため)を再ターゲットしたくない
ので、一貫したインクルードフォルダーを取得できますか?ありがとう。

0 投票する
2 に答える
224 参照

embedded - How to simulate a scheduler?

In my firmware I write to MicroSD in a background task, and I've got a lot of higher-priorities interrupts enabled, some of which can take several milliseconds.

So the writing/reading from SPI can be interrupted at any moment, and for writes that may not be such a problem (if SPI behaves anything like UART), but during reads I'm afraid that my hardware SPI FIFO's will overflow if the task just happens to be interupted while the MicroSD card is sending a datablock.

Now the obvious solution would be to decrease the time that the higher priority interrupts take, but this seems very hard, because sometimes they have to wait on other peripherals too, and too prevent that I have to rewrite a lot of code that does polling now, to an interrupt-structure, which would make the overall code much more complicated.

I think in modern OSes this is solved by letting all those tasks run synchronously at the same priority, and give them all an equal time slice. But I don't have any mechanisms for threading, or an OS, so what would be the simplest way to solve this?

0 投票する
1 に答える
424 参照

arduino - Arduino Wifi シールド SPI コマンド

現在、Arduino Wifi Shieldを使用しています。Arduino ライブラリでは正常に動作しますが、すべての Arduino ライブラリを取り除き、AVR-libc のみを使用する必要があるプロジェクトがあります。

したがって、Wifi シールドを使用するには、arduino とシールドの間の SPI バスで使用されるプロトコルに関するドキュメントがどこにあるかを知りたいので、Wifi ライブラリを使用する必要はありません。

ソースコードを見ることを余儀なくされていますか、それともドキュメントは存在しますか?

ありがとう。

0 投票する
0 に答える
225 参照

linux-device-driver - Linux に SPI MUX ドライバーを実装する

通常のシナリオでは、spi デバイス ドライバーは SPI コントローラーと通信して、Clk、MOSI.MISO、および CS (チップ セレクト) を使用して SPI コントローラーに接続されている実際の SPI デバイスとの間で読み取り/書き込みを行うことができます。

SPI コントローラーに十分な CS ラインがない場合は、SPI 経由で CPLD デバイスを接続して、16 の CS ラインを追加します。すべてのデバイスには 1 つのドライバーがあるため、CPLD 経由で接続されたデバイスにアクセスできるように SPI Mux を実装したいと考えています。

CPLD には 2 つの CS ラインがあり、1 つは CPLD デバイス自体を選択するためのもので、もう 1 つは接続されている別のデバイスにルーティングするためのものです。他の CLK、MOSI、MISO は SPI コントローラーから来ています。標準として、デバイスに関する情報を追加できます intp spi_board_info

ただし、CS は別の SPI デバイスである CPLD を介して目的のデバイスにルーティングする必要があるため、これらの要素にフックされたドライバーは実際のデバイスに書き込むことができません。

私のディレマは、ドライバーが CPLD 経由で接続されたデバイスにアクセスするたびに CS のルーティングを行うような SPI MUX を実現する方法です。また、この SPI MUX ドライバーを個々のドライバーにフックする方法についても説明します。

カーネル コードでヘルプを見つけようとしましたが、SPI マスター機能を直接呼び出すことができるデバイス ドライバーしか見つかりませんでした。誰でもこれについて何か指針を与えることができますか?

0 投票する
1 に答える
659 参照

embedded - シリアルペリフェラルインターフェース

SPIに関連する記事を読んでいました。複数のスレーブの場合、「デイジーチェーン」という名前の構成がありました。

これまでのところ、SPI(ウィキペディアに基づく)について私が理解していることは、

SPIは、いくつかのデータを同時に転送および受信できます。

私の質問は、

1)複数のスレーブの場合、多くのスレーブデバイスに接続されている中で、多くのスレーブにデータを転送するのですか、それともスレーブの1つにデータを転送するのですか?

2)このリンク図4によると、マスターは3つのスレーブデバイスに送信する必要のあるすべてのデータが送信されてからピンがハイになるまで、SSをローに保ちます。もしそうなら、マスターは最後にどのデータとどのスレーブデバイスから受信しますか?

3)このリンクに示されているように、拡張モードでは、ロードイネーブル(LDEN)とWCOLがチェックされ、次のバイトがバッファに移動します。なぜ両方をチェックする必要があるのですか?WCOLはそのために十分ではありませんか?

4)それMaster configures the clock - frequency less than or equal to the maximum frequency the slave device supports. Such frequencies are commonly in the range of 1–100 MHz.は、マスターがどのようにしてスレーブのクロック周波数を見つけるのかということです。

5)SPSR、SPCR、およびSPDRレジスタはマスターとスレーブの両方に残りますか?

6)送信完了後、SPIFフラグが設定されます。SPIEも有効になっている場合は、割り込みが発生します。フラグはマスターとスレーブの両方で設定されますか?割り込みはマスターとスレーブの両方で生成されますか?

親切に案内してください。前もって感謝します。

0 投票する
0 に答える
998 参照

c# - nRF24 上のフィルマータ

技術的な問題がいくつかあります... arduino に Firmata を使用しようとしていますが、シリアル インターフェイスではなく nrf24 を使用しています。nRF24 通信をテストしましたが、問題ありません。Firmata over Serial もテストしましたが、動作します。

ベースデバイスはシンプルな「シリアルリレー」。シリアルで利用可能なデータがある場合は、それを読み取り、nRF24 ネットワーク経由で送信します。ネットワークから利用可能なデータがある場合は、それを読み取り、シリアル経由で送信します。

ノードデバイスは少し複雑です。書き込みと読み取りのオーバーライドを追加したばかりのカスタム標準Firmataがあります。

ダイアグラム

loopメソッドで処理されるオーバーライド ID を次のように読み取ります。

Firmataは、から直接データを読み取る方法processInputOverrrideをほとんど変更していません。この方法では、ネットワークからメソッドにデータを渡します。これはテスト済みで、正常に動作するはずです。processInputprocessInputFirmataSerial

Write メソッドは別の方法でオーバーロードされます。カスタム メソッドに設定でき、そのFirmata.cppカスタム メソッドを使用してデータを送信するために使用できるメソッド ポインターを追加しました。次に、各呼び出しの後にカスタム メソッド呼び出しを追加しましたFirmataSerial.write()

次に、オーバーライドされた書き込みメソッドを、バイトの代わりにネットワークに書き込むだけのカスタム メソッドに設定しましたSerial

すべてが正常に機能しているように見えますが、一部のデータが反転しているように見えるだけです。私は、sharpduino (C#) を使用して、単純なデジタル ピン トグルを実行しています。出力は次のようになります: (< は BASE から送信され、> は BASE に送信されます)

その最後の行は反転しました。そのため、受信したバイトを反転するだけでよいとは思いません。そして、それはその最初のコマンドで機能しました。しかし、何かが起こり、通信が再び停止します。

では、ここで何が問題になるのでしょうか? フィルマータとの通信はできているようですが、何かがおかしい...

- 編集 -

私はその問題を解決しました。Serial.write()問題は、sysex コールバックで呼び出しが見られなかったことです。それが解決されたので、別の問題に遭遇しました...すべての段階が正しく通過し(推測します)、ピン状態を要求してもノードから応答がありません

応答がありません。なぜそれが起こるのでしょうか?ノードはすべてのメッセージを正しく受信し、ピン状態を処理するためのコードが存在します。

0 投票する
1 に答える
9160 参照

arduino - Arduino - 2 つの SPI デバイスを同時に管理する

同一の MISO、MOSI、および CLOCK ピンを使用して 2 つのSPIデバイスを同時に制御しようとしていますが、SS ピンは異なります。

1 つはSPI-to-UART チップを使用するSparkFunのWifly シールドで、もう 1 つはMAX31855です。

それらは独立して動作しますが、一緒には動作しません..

私が使用している SPI-to-UART コードを以下に示します。私が行った唯一の変更は、ヘッダー ファイルです。設定select()deselect()て公開します。

私はこのようにそれを使用しようとしました:

しかし、それはまだ機能することができません。これを機能させるには、さらにどのようなことを試みる必要がありますか?