タグ付けされた質問 「spi」

SPIは、クロック(SCLK)、データ入力(MISO)、およびデータ出力(MOSI)を備えた低レベル3または4線シリアルバスインターフェイスです。4番目のワイヤはスレーブ選択で、バス上のデバイスを一意に選択します。この信号は通常アクティブローです。スレーブ選択、チップ選択、CS#、SS#は通常、同じ機能を表します。ただし、必ずデータシートを確認してください。SPIバスは、正式な仕様を欠いている*デファクト*標準です。

3
複数のボードを介した30MHzクロックのルーティング
TLC5945 LEDドライバを使用しています。マイクロコントローラー(私はLPC1343を使用しています)は、その内部PWMタイマー/カウンターにクロックを提供する必要があります。最大許容クロック速度は30MHzと指定されています。 TLC5945をデイジーチェーン接続したボードをいくつか用意します。ボードは、ボード間コネクターまたは短いリボンケーブルを介して接続されます。1つのボードの幅は10cmです。最大4つを直列に接続します。 たぶん、私はフル30MHzを使用しないでしょうが、それでも正しく実行したいのですが、クロック信号をルーティング/調整してそのままにするにはどうすればよいですか? すべてのボードの出力に74HC245のようなバッファを追加すると、すべてのバッファの後に10nsの遅延が発生します。それは望ましくありません。専用の「ゼロ遅延」クロックバッファーを使用する必要がありますか?どのような終了方法を採用する必要がありますか?

1
合成されたROMコアを使用した単純なテストベンチのシミュレーション
私はFPGAの世界にまったく新しいので、4ビットの7セグメントデコーダーという非常に単純なプロジェクトから始めようと思いました。私が純粋にVHDLで書いた最初のバージョン(それは基本的に単一の組み合わせselectであり、クロックは必要ありません)は機能しているようですが、ザイリンクスISEの「IPコア」の要素を試してみたいと思います。 今のところ、「ISE Project Explorer」GUIを使用しており、ROMコアを使用して新しいプロジェクトを作成しました。生成されるVHDLコードは次のとおりです。 LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- synthesis translate_off COMPONENT wrapped_SSROM …

4
一部の信号が「震える」(ジッターがある)のはなぜですか?
2 MHzのSPIバスがありますが、信号の一部がしばしば「震え」ていることに気づきました。はい、トリガーは正しく設定されているので、問題はそこにあるとは思いません。 ここで私が何を意味するかを見ることができます(これは永続モードがオンの場合)。これは私のSPIバスのクロックです。 SPIは正常に動作します。私は複数のボードで数百メガバイトを転送しましたが、今のところ問題は見ていません。しかし、私はまだここで問題になる可能性があることを知りたいと思っています。また、機能しても問題を修正する必要がありますか? 測定は、非常に小さなグランドクリップを使用してソースで直接行われました。 これは私の回路の簡略化した回路図です。もちろん、ボードにはより多くのSPIデバイスがありますが、uCとSDカード以外にはまだボードにはんだ付けされていないため、この質問の目的にはこれは正確です。 マスター(AVR Mega 128)は、内蔵のRCオシレーターで実行されています。これが関連するかどうかはわかりませんが、信号が時間内にシフトするため、RCオシレーターのジッターもSPIバスで発生する可能性があります。私はそれについて言及すると思いました。また、これらの測定中にコントローラーを無限ループで実行していることにも気付きました。これがコードです: while(1) { setFirstBitOnDriver(driver); // this sends a 8-bit command on the SPI bus. GLCD_SetCursorAddress(40); // Change cursor position on the display. GLCD_WriteText("LED: "); for(wire=0;wire<72;wire++) { itoa(wire+1,str,10); GLCD_WriteText(str); GLCD_SetCursorAddress(44); _delay_ms(10); shiftVectorOnDriver(driver); // another command on SPI. 8-bit wide. } } 内部が72回実行されて終了すると、ジッター/震えが発生する可能性があります。最初の3行を実行するには追加の時間がかかるため、追加の処理時間のために、73番目ごとの波形がわずかに異なる時間に到着する可能性があります。私が賭けなければならなかった場合、私はこれが私の問題の原因であると推測しています(可能であれば、私はこの瞬間にそれを確認しますが、私のボードは仕事中で、翌週はオフです!)しかし、私はまだ意見を望んでいます/この問題に関するSEの回答。 しかし、uCが8 …

1
SPIはMSP430で文字化けしているようです
Launchpadボードに接続されたバス海賊から賢明なビットを取り出そうとしています(Sparkfunケーブルを使用:オレンジはP1.6、黄色はP1.5です。MOSIとMISOを混同していない限り、これは正しいはずです。 ...)。バス海賊を使用して何かを監視しているだけなので、CSを接続していません。 バス海賊は、SPI、125KHz、クロック極性アイドルLOW、出力クロックエッジアクティブからアイドル、入力サンプルフェーズ中央、/ CS、出力は正常に設定されています。 Launchpadには、外部クリスタルのないMSP430G2231があります。Code Composer Studioを使用すると、次のようになります。 #include "msp430g2231.h" volatile unsigned char value=0; #pragma vector=USI_VECTOR __interrupt void universal_serial_interface(void) { value+=1; USISRL=value; USICNT=8; } void main(void){ WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; BCSCTL2 &= ~(DIVS_3); USICTL0 |= USIPE7 + USIPE6 + USIPE5 + …
9 spi  msp430 

4
FPGA-DIYプログラミング
私は数年前からマイクロコントローラーをプログラミングしており、デジタルデザインクラスを受講した後、FPGAを発見しました。異なるFPGAや開発ボードなどについて調査を行った後、最終的な「製品」の独自のバージョンを作成する方法がわからないので、私はまだ購入をためらっています。私はPIC、SAM、AVRなどを問題なくカスタムPCBに配置したので、心配する必要はありません。主な関心事は、メーカーのボードなしでFPGAをプログラミングすることです。 私の特定の質問:Quartus、Vivado、iCEcubeなどによって生成されたビットマップファイルを取得し、アドレス0から始まるSPIフラッシュメモリチップに(たとえば、FT2232Hを介して)書き込み、フラッシュメモリをFPGAのSPIピン(MODE構成が適切に設定されている)? 部分的な仮説をお詫びします。ラティスのダイアモンドプログラマーがそれをすべて行うと確信していますが、そのアプローチがさまざまなメーカーのFPGAで機能するのか、それとも、Quartusが書き込み中に「ウィンドウドレッシング」またはヘッダーをメモリに追加したのかと思いました。 質問を改善または明確にするために私にできることがあるか、またはFPGAプログラミングプロセスの大きなポイントを見逃していないかどうかを知らせてください。ありがとう!
9 fpga  spi  programming 

3
SPIバス接続-ループするかしないか?
SPIバスの物理的な接続について質問があります。 SPIマスター(PIC32デバイス)といくつかのスレーブ(この場合はPIC16デバイス)があります。私はスレーブに書き込むだけで、プロトコルはどちらがいつ何をするかを処理するので、心配するMISOまたはSS信号はなく、データとクロックラインをすべてのスレーブに並列化しています。バスの全長は数フィート(たとえば60cm)以下で、SCKを8MHzで実行しています。 これで、スレーブデバイス(実際には他のボードのインターフェイスノード)の物理的な配置は、SPIバスがマスターにループバックして、各ループの両端をそれぞれMOSIとSCKに接続できるようになっています。 次の図は、私が意味することを示しています-私は赤い点線の接続について話している-そして問題は、これを行うのは良いことかそうでないかです。 私は同じような旅をしている電源とグラウンドを持っています、そしてこれはスレーブによって引き起こされる電圧降下を最小化するので明らかに-そして明らかに-有用です。しかし、これらの信号線で同じことをするのが良いことか悪いことかは分かりません。代わりに、ある種の終端-接地への抵抗(?)-または直列抵抗を使用して反射を抑制する必要がありますか? いわばドットをつなげて、つなげずに両方試しましたが、機能的な違いはなく、スコープにも変化はありませんが、60cmより少し長かったり、8Mhzより少し速かったら、問題がありますか?何か変更があった場合にトラブルが起こらないようにするためのアドバイスを探しています。 この質問は、60MHz SPIバス@ 8Mhzで特に私を悩ませていますが、他の状況についての一般的な原則はありますか?I2cバスのプルアップは別の場所に配置する必要がありますか? 適切な読書資料へのリンクも歓迎します-この特定の質問をカバーするものは何も見つかりませんでした。

3
FSInit()-「CE_BAD_PARTITION」[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 電気工学スタック交換のトピックになるように質問を更新します。 9か月前に閉鎖。 PIC18F26K80とXC8コンパイラを使用しています。SDカードを初期化してファイルを作成しようとしています。WindowsでSDカードをフォーマットし、「FAT32」ファイルシステムと「アロケーションユニットサイズ」を512バイトに設定しました。SDカードの容量は2GBです。MLAレガシーバージョンのMDDライブラリを使用しています。私の主なものは次のとおりです: FSFILE * file; char sendBuffer[22] = "This is test string 1"; //************************************************** // main function //************************************************** int main() { initIO(); LATBbits.LATB0 = 0; // Initialise SPI and SD-card while ( !MDD_MediaDetect() ); // Initialize the device while ( !FSInit() ); // Initialize #ifdef ALLOW_WRITES // …
9 pic  spi  sd  fat 

1
spiフラッシュに書き込めないようです
ええと、私はしばらくこれにこだわっています。この時点で、おそらく2〜3週間です。私は何が間違っているのかよくわかりません。私はこのスパイフラッシュパーツに書き込もうとしています。今は、ルーチンを実行して消去、書き込み、読み取りを行って、それを分離しようとしていますが、今のところうまくいきません。もちろん、私は途中でたくさんのバグを解決しました... とにかく、ボード上でWPラインを高く結んで、クロックを200kHzまで遅くしてから、消去ルーチンを実行すると、次のようになります。 まず、デバッグのためだけにIDを確認します。それは9Fコマンドです。次に、06コマンドでWRENを設定し、C7はチップ全体の消去です。次に、ステータスビットを05で確認します。この事のチップ消去時間はわずか35msです。 次に、コードをリロードして書き込みを試みます。 まず、WRENを06に設定し、ステータスをチェックしてWRENが05に設定されていることを確認します。次に、ページプログラムコマンド02をアドレス0x000000に送信します。あなたは私が最初の数ビットとしてdeadcafeを書いているのを見ることができます。また、ここに描かれていないのは、書き込みが完了した後(1ページまたは256バイト)、0x04コマンドを送信してWRENを無効にします。私はそれを観察し、ページバッファーの最後の4バイトを0xAA、0x55、0xAA、0x55に設定しました。CSがハイになる直前にそれらを確認しました。 次に、リロードコードを停止し、読み取りサイクルを実行してみます。 読み取りコマンドとして0x03を送信し、アドレスとして0x000000を送信します。そして、デバイスからすべて0xFFを返します。 デバイスが自分の読み取りIDに応答していることを確認し、WRENコマンドを設定して、自分の声を認識して応答できるようにします。この時点で何が悪いのかわかりません。データシートを読み、いくつかのことを試してみることに戻ると思いますが、誰か洞察があれば、助けをいただければ幸いです。これは、このことに取り組んでいる別のイライラする週末になることを形作っています。
9 pic  spi  flash 

7
SPIフラッシュメモリに書き込む方法を教えてください。
SDカード(ArduinoのWaveshield)にオーディオデータを保存する代わりに、SPIフラッシュメモリICに保存し、MCU、DAC、アンプを搭載した独自のボードをロールするオーディオアプリケーションに取り組んでいます。 Winbond W25Q80BVSSIGを使用しています。 私が使用してAVRをプログラミングするとかなりよく知っているAVRISP mkIIのかUSBTinyを、同じプログラマで行わフラッシュにデータを書き込んでいますか?特にSPIフラッシュメモリプログラマーを探しているときには、何も見つかりませんでした。 この質問はのフォローアップで、この1。

2
SPIスレーブは全二重モードで送信を開始できますか?
私の知る限り、SPIスレーブのSPI送信は以下のように機能します。 マスターはSSピンを使用してスレーブを選択します マスターとスレーブが同時にデータを互いに送信する マスターはクロックとデータ送信を同時に開始します(書き込み操作の前にクロックはありません) スレーブは送信するデータがまだある場合でも、マスターは必要に応じていつでも(書き込み操作とクロック生成を停止することにより)送信を停止します。 スレーブがマスターの許可なしにデータを送信できるようにするSPIスレーブ構成はありますか? 大声で考えているだけです。スレーブが1つだけあり、マスターなどから連続クロックが提供されていると仮定します。 SPIのスタートストップビットがないため、想定されたステートメントがtrueであっても、マスターとスレーブはバイト同期を失いません(つまり、ビットストリームを受信しません)。 このドキュメントの次のセクションを読んだので、私はそのような質問をしています。 2.2 SPIの例 添付のSPIの例は、同期モードでのUSARTの使用を示しています。USART2がマスターであるのに対し、USART1はスレーブとして構成されています。以下のトランザクションが行われます。 マスターからスレーブへのデータ送信。 スレーブからマスターへのデータ送信。 マスターからスレーブへのデータ送信とスレーブからマスターへのデータ送信を同時に行います。 このドキュメントではSPIの例を示していますが、USARTデバイスを使用して例を実現しています。そして私は、USARTスレーブがマスターの許可なしに送信を開始できることを理解しています。 ドキュメントで参照されているソースコードが見つかりませんでした。

1
STM32のSPIはプルアップ抵抗がないと機能せず、パフォーマンスも低下します
しばらくの間、STM32F103C8(Blue Pillボード)のSPI1が正しく機能するように努めています。ARMの学習を始めたばかりなので、データを74HC595シフトレジスタにシフトし、それをラッチして1バイトのLEDを点灯させようとしています。データを読み取っていないので、MOSI、SCK、SSのラインしかありません。 最初は何も出力されませんでしたが、オンラインの例を読んで、これらの最初の問題を修正して通信を開始することができました(GPIOAピンを正しく設定し、ソフトウェアSSを設定する必要がありました)。 現在の主な問題は、すべてのライン(MOSI、SCK、SS)にプルアップ抵抗を含めないと、マイクロコントローラーがラインに何も出力しないことです(スコープで確認)。これに加えて、プルアップ抵抗を追加した後、パルスの立ち上がり時間が非常に遅いため、あまりにも高い周波数を使用できません(10kΩのプルアップ抵抗を使用すると、約250 kHz SCKに制限され、スイッチング約330 MHzに約4 MHz)。私はブレッドボードで作業していますが、それでもAVRとより複雑な配線を使用しても、抵抗を追加せずに4 MHz SPIが問題なく動作し、波形はきれいでした。 これは、250 kHzクロックでバイト0b01110010を送信している2つの画像(スコープ画面のひどい状態の場合は申し訳ありません)です。上のトレースはSCKで、下のトレースはMOSIです。最初の画像は10kΩプルアップ抵抗で、2番目の画像は波形をより良くする330Ωプルアップ抵抗です(ただし、それらは必要ありません)。 何が起こっているのかを理解するための助けをいただければ幸いです。 私のコードの関連部分は: #define SS_LOW GPIOA->BSRR |= 1 << 4 + 16; #define SS_HIGH GPIOA->BSRR |= 1 << 4; // SPI GPIO configuration RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; GPIOA->CRL |= 0b0011 << 4 * 4; // Set pin A4 as PP …

3
SPIデバイスを1つだけ使用する場合、SSピンをLowに接続できますか?
SPI対応デバイスへのSPIトランザクションを開始するには、SS(スレーブセレクト、別名チップセレクト)ラインをトランザクション全体でローに設定してから、エンドツーエンドトランザクションでハイにする必要があることをオンラインで読みました。SPIデバイスを1つだけ含む回路を作成する場合、SSラインの送信コマンドを下げてから毎回ssラインを上げる必要がありますか、それともssラインをローに接続してコマンドを無制限に送信できますか?私が使用しているデバイスはISD1700サウンドチップです。
8 spi 

1
SPIデータストレージデバイス:(micro)SDカード、DataFlash、またはシリアルEEPROM?
私はいくつかの設計の習慣を再検討していますが、そのうちの1つは真剣に調査されています。SPIベースのストレージデバイスは(micro)SDカードであり、価格対容量比と一般的に高速です。 SPIベースのストレージデバイスの3つの主要なタイプ-(micro)SDカード、DataFlash、およびよりシンプルな25CxxシリーズのSPI EEPROM(およびマイクロコントローラーの内蔵24CxxEEPROM とI2C EEPROMを考慮に入れる)未満?私はすべてのメディアをrawブロックデバイスとして使用しているため、「SDカードにはファイルシステムが必要」という議論は成り立ちません。 ユースケース: システム構成と校正データ。例:イーサネットインターフェイスのMACアドレス、オンボード電圧リファレンスの測定電圧。 ログ。例:センサーから取得したデータ。 コードとコードリソース(プログラムのメモリに収まりきらない、または持ち運びできない。)例:システムの更新、国際化とローカリゼーションの文字列、ユーザーインターフェイスリソース、フォント。 セキュリティとデジタル著作権管理。例:暗号化キー(公開および/または秘密、対称および/または非対称)デジタル署名。

4
オフボードSPI通信の設計上の問題は何ですか?
概要: SPIを使用して、dspic33を搭載した3つのカスタムPCBボード間で通信しています。私はマスターと2つのスレーブを持っていますが、両方のスレーブに同じデータを送信しています(注意を払う対象を選択させる)。 ハードウェアのセットアップ: 2つのスレーブにはBLDCモーターコントローラーが組み込まれており、マスターはこれらのモーターコントローラーをSPI経由で制御しています。ワイヤーはマスターから各スレーブまで約3フィートであり、ヘッダーは標準的な0.1インチピッチスルーホールのSAMTECHヘッダーです。各モーターコントローラーには、dsPIC / LV電子回路を実行する独自の3.3ボルトレギュレーターがあります。モーターコントローラーレギュレーターを1つ使用します(彼をAと呼びます)SPIマスターDSPICにも電力を供給します。他のモーターコントローラー(彼をBと呼びます)に対しては、マスターからSPIラインとグラウンドを実行します。SPIclkは100KHzで動作しています 要点(最終的に): これを実行しているモーターがないため、すべてが正常に機能し、すべてのデータが期待どおりに両方のスレーブに送信されます。ただし、モーターを起動すると、Bslaveは正しいデータを取得しなくなります。彼は余分な時計を拾っているか落としているかのどちらかだと思います。いずれにしても、彼のチェックサムは失敗し始めます。Aslaveは何があってもチャンピオンのように機能します。 1)これらのすべてのデバイスを同じ3.3ボルト電源で実行する必要があると思いますか?もしそうなら、より長いインダクタンスループとそのような黒魔術について話して私を説得できますか? 2)SPI clkを実行し、上記のようなハードウェアセットアップで成功することができると私がどれほど速く期待できるかについて、どんな経験則がありますか?
8 spi 

2
SPIデバイスがISPプログラミングを妨げている
私が持っているATmega8とノキアLCD 5510それに接続されています。ブレッドボードではすべてがうまく機能します。次のステップは、より永続的なボードに移動することです。私の問題は、LCDも接続されているときにATmega8をプログラムできないことです。私は、それらが同じSPIピンを使用し、LCDが何らかの形でプログラミングに干渉しているためだと思います。LCDを外さずにISP経由でATmegaをフラッシュできるように、これをどのように変更できますか?
8 atmega  spi  lcd  isp 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.