問題タブ [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.
fpga - コンフィギュレーション ビットストリームおよび Microblaze ソフトウェアを含むザイリンクス Spartan-6 用のブート可能な SPI フラッシュ (PROM ファイル) を作成するデザイン フロー
FPGA コンフィギュレーション ビットストリームと Microblaze プロセッサで使用されるソフトウェアの両方を含むシリアル SPI フラッシュ用の PROM ファイル (.MCS) を作成する適切な手順を知りたいです。これは、ハードウェアとソフトウェアの設計がすべて完了していることを前提としています。
ザイリンクスの Spartan-6 評価ボード SP605 を使用しています。このボードには複数の不揮発性メモリ デバイスが含まれており、シリアル SPI フラッシュを使用して、FPGA ビットストリームと、メモリにロードする必要がある Microblaze のソフトウェアの両方を保存したいと考えています。これは、Microblaze のコードが内部 BRAM にある場合にのみ実現できます。外部 DDR3 RAM にコードまたはデータ セクションを配置するようにリンク スクリプトを作成すると、失敗します。
- 編集 -
OK、私はいくつかの異なることを試しましたが、何をする必要があるかをよりよく理解していますが、まだ成功していません (ところで、Andy の返信に感謝します)。だから、私は2つの異なることを試しました。どちらの場合も、最初にシステム ビットストリームをブートローダー プログラムとマージして、問題なく動作する新しい .bit (download.bit) ファイルを生成します (SDK でプログラムを実行し、ブートローダーを選択して BRAM をロードすると、data2mem が呼び出されて、新しい download.bit ファイルを生成します)。
最初のアプローチ - BIN ファイル
メイン プログラムが完了したら (DDR RAM とすべてを対象とするリンカー スクリプトを使用)、mb-objcopy を呼び出して、.elf ファイルから bin ファイルを生成します。
次に、iMPACT を使用して作成し、download.bit と dummy.b を使用して MCS ファイルを作成します。download.bit を SPI フラッシュの開始アドレスに配置し、dummy.b をさらに下に配置します (ブートローダーは既にそのアドレスを指しています)。次に、MCS をシリアル SPI FLash に書き込み、再起動すると、ブートローダーが実行され、おそらくすべてが DDR RAM にコピーされますが、メイン プログラムが動作しません。ここで何か不足していますか?メイン プログラムを .elf から BIN に変更せずに iMPACT を使用しようとすると、PC が停止し (コンピューターを完全にリセットしなければならない場合もあります)、非常に高速でメモリを搭載した PC を使用しています。
私が使用したブートローダーは、Xilinx XAPP1146 ドキュメントにリンクされているものと同じです。
2 番目のアプローチ - SREC ファイル
手順はほぼ同じですが、同じ mb-objcopy コマンドを使用して BIN ファイルではなく SREC を生成する点が異なります (今回は、BIN ファイルに対して行う必要があったセクターを削除しません)。巨大なファイルが生成されます)。
私が使用したブートローダーは、SDK ソフトウェアに含まれているものです。
Microblaze 用のブートローダの作成に成功したかどうか、どなたか教えてください。
前もってありがとう、エリック
spi - SPI モードを使用して SD カードから read_single_block を読み取る方法 (まだ奇妙な動作を取得しています)?
SPI バス上の PIC-18F4520 からカードにアドレス (0x00000000) で cmd17 を発行すると、コマンド発行から正しいリターン R1 トークンを取得します。次に、いくつかのループ チェックの後、発行した SPI_Put_Char(0xFF) から 0xFE マーカーが返されます。その後、データが開始されるので、512 バイトを IO_Buffer 配列に読み込みます。リターンをスキャンすると、多くの 0x00 バイトが得られました。奇妙なことに、セクター 0 の約 448 番地で、いくつかのデータがやってくる - あちこちに数バイト - 最後の 32 バイト (LCD 画面で一度に 32 しか表示できない) はすべてゼロであり、その後にブート セクタの最後に期待される 0x55AA マーカー。
奇妙なことに、disk Investigator を使用すると、SD カードに適切なセクター 0 情報 (MSDOS メッセージ、EB ジャンプ コード、あらゆる種類のもの) があることがわかります。私の読み取りコマンドは、すべてをゼロとして返します。何が起こっているのかわかりません。
その他の情報: cmd0、cmd8、cmd58 で起動し、OCR の読み取りは問題ありません。次に acmd41 (cmd55 の後に APP_SEND_OP_COND をループ)。すべてが反応し、予想されるマーカーを与えるようです。最後に、SEND_CID を使用してカード情報を取得します。MID=3 OID=SD と verion SD017 を返し、その後に他の情報が続きます - すべて正しいようです。
カードからの DOUT にプルアップ抵抗とプルダウン抵抗を追加しようとしましたが、結果には影響しません。
このカードを正しく読めるようにするためのアイデアを切望しています。私は(ところで)他の2枚のカードを試しました。それらは異なる特定の結果をもたらしますが、質的には同じです-初期化、OCR、およびCID読み取りはすべて正常に機能します。データを読み取ると、ほとんどがゼロで、その後に再現可能ではあるがまばらなバイトと 0xAA55 マーカーが続きます!?!
私の SanDisk 1GB SD カードは 3.296 ボルトで動作しており、カードの読み取り中は安定しているようです。
ここにいくつかのコードがあります:
お早めにどうぞ!
c# - FTDIを搭載したデバイスからUSBSPIを使用してビデオを取得する
FTDIチップを搭載したカードにデバイスマネージャーを実装する必要があります。私たちはJAVAまたはC#を調べており、SPIを使用してvedioを転送するためにそれを使用する必要があります。JavaまたはC#にFTDI DLLを使用する必要がありますか?これをJavaで実装する際に深刻な問題が発生する可能性はありますか?
spi - spiを使用したSDカードインターフェース
こんにちは友人私は spi を使用して SD カードをインターフェイスしたいです。私はこのトピックについて何も考えていません。
sd-card - SDHC カード SPI 初期化
現在、SDSC v1 カードのみをサポートする組み込みシステムに取り組んでいます。2 GB 未満のカードを見つけるのがますます難しくなってきているので、SDHC カードのサポートを追加しようとしています。カードとの通信は、SPI バスを介して行われます。
したがって、カードを初期化するために私が行っていることは次のとおりです。
- CMD0 を送信します。カードが 0x1 を返す
- CMD8 + 0x1AA を送信します。カードは 0x1 と 0x1AA を返します
- ACMD41 を送信します。カードは 0x0 を返します。
その後、MBRを読み取り、 0x30 LBAに FAT16 パーティションがあることがわかりました。ただし、そのアドレス (0x30*512) からセクターを読み取ると、0x01 0x09 の繰り返しが返されます...
- ACMD41 を送信するとき、コマンド ID 0x69 を送信しています。それが正しいか?または、CMD55 を送信してから CMD1 を送信する必要がありますか?
- 図1は、ACMD41 を送信した後に CMD58 と、場合によっては CMD16 を送信する必要があることを示しています。それは必要ですか?それらを行わなくても、有効な MBR を読み取ることができました。
c - STM32F103ZE で SPI がデータをゼロとして読み取っている
STM32F103ZE を使用していますが、SPI データを正しく取得できません。マスターは正しく送信しています。ただし、ゼロ以外の値が送信された場合は、常にゼロとして読み取られます。
マスター構成: (MSP430)
スレーブ構成 (STM32F103ZE)
誰でも答えを持っています。
ありがとうハリ
spi - M25P64 への MSP430 SPI
MSP430 用の SPI を作成しました。WRSR(01h) または RDSR(05h) を M25P64 フラッシュに送信すると。
フラッシュ SPI_MISO から得られる応答は FFh です。
私の質問は、「私が得た回答は正しいですか?」ということです。SPI とフラッシュの間のハンドシェイクが正しいことを理解するにはどうすればよいですか?
ありがとう
AK
embedded - シリアルポート通信を介したより高いレベルのプロトコルはありますか?
私たちはロボット工学のコースを運営しており、Xbeeは学生にとって最も人気のある通信プロトコルです。過去2年間で、私たちは彼らが約62のさまざまなプロジェクト(パイプラインでさらに40)を構築するのを支援しました。
ほとんどすべてのプロジェクトには、さまざまな種類のデータをボットに送信することが含まれます。1バイトのコマンドである場合もあれば、解釈される長い文字列である場合もあります。1つのxbeeをブロードキャストモードで使用して、複数のボットの中から特定のボットにメッセージを送信すると、ボットに対処するという問題に直面することがあります。学生は毎回この問題に取り組むために彼らの創造性を使用します。
私は個人的にこれが車輪を再投資していると感じています。シリアルポート通信用のより高いレベルのプロトコル提案が存在するかどうか、また特定のプロトコル設計がない場合は、学生向けに設計する価値があるかどうか疑問に思います。
c - SPI完全コールバックハンドラー
Linux用のSPIドライバーを書いています。関連するドキュメントには、 http://www.mjmwired.net/kernel/Documentation/spi/spi-summaryおよびhttp://ww2.cs.fsu.edu/~rosentha/linux/2.6.26.5/docs/DocBook/kernelがあります。 -api/ch25.html。
ほとんどの場合、転送は正常に実行され、完了コールバックが呼び出されます。メッセージにアクセスすると、status常にゼロ(表示)が表示されます。actual_length必要に応じて112(私の転送長)です。
ただし、しばらくすると、でコールバックが返される場合がありますactual_length == 0。以降のすべての呼び出しにはactual_length == 224。spiデバイスを閉じた後も、コールバックは呼び出され、メッセージの長さは急速に増加します(呼び出しごとに、112ずつ増加します)が、私はspi_asyncもう呼び出しませんでした。
誰かがこの行動を引き起こす可能性のあるヒントを提供できますか?
どうもありがとう!
spi - SDHC microSD カードと SPI の初期化
SPI経由でMSP430F2618と通信する必要がある 32 GB Kingston SDHC microSD カードがあります。SD仕様書に記載されているように、CMD55 + ACMD41(bit30を1に設定)を使用して初期化できませんでした。機能するのは次のシーケンスです。
8 GB の SanDisk カードでも試してみましたが、それでも動作します。実際には、ここでは ACMD41 ではなく、HCS ビットを 1 に設定した CMD1 を使用しています。これはハードウェアに関するものかもしれません。
カードが引数付きの CMD1 に応答するのは奇妙ではありません0x40000000か?