発見STM32 SPI2は、問題(無効)を持っています

オリジナル住所:: http://blog.gpjtag.com/?p=643

 

関連記事

1、STM32のSPI難易度分析---- http://www.360doc.com/content/18/0109/13/8706683_720480361.shtml

2、問題STM32F0 SPIポートはMDK最適化----後に動作しませんhttps://blog.csdn.net/hkhxj/article/details/87856464

3、STM32F4シリーズMCU SPI2問題---- http://www.openedv.com/posts/list/62106.htm

4、----のSTM32F103のSPI2に経験ノートをデバッグhttps://wenku.baidu.com/view/23ad72f3a45177232e60a225.html

5、STM32F103 SPIの問題---- https://blog.csdn.net/quinn1994/article/details/90243519

6、SPI2のSTM32操作----フラッシュhttps://bbs.csdn.net/topics/390652078

7、SPI2のSTM32F103C8T6問題、助け---- https://bbs.21ic.com/icview-175064-1-1.html

8、STM32F103 SPI1とSPI2通信障害---- http://www.openedv.com/posts/list/20460.htm

9、どのように私は---- GPIO_Mode_AF_PPの使用を依頼する必要がありますhttps://www.amobbs.com/thread-3339181-1-1.html

 

SPI通信の2のホールドを取得するために一緒にSPI1と作品を使用する最近SPI2必要性:

次のように配線ハードウェア:

SPI1.SCK -> DEV.SCK
SPI1.SCK -> SPI2.SCK
SPI1.MOSI -> DEV.MOSI[0]
SPI1.MISO <- DEV.MISO[0] SPI2.MISO -> DEV.MOSI[1]
SPI2.MOSI <- DEV.MISO[1]

マスターモードにSPI1セットは、SPI2スレーブを設定します。
セットCPOL = 0、CPHA = 0(クロックが低い場合に送信されない、サンプリング立ち上がりエッジ、データ更新の立ち下がりエッジ)。

特定の構成が固定されていない、例えばstm32fwlibの内部に存在します。

注:インターネットおよび構成の公式の使用はSPI1ているが、スレーブ、マスターのためのSPI2です!次は言うでしょう。

 

問題に遭遇紹介:SPI1正しいデータSPI2 GETが混乱です......

通常の最大速度18MHz時に発見されたマスターとFPGA通信にSPI1セットを分離し、私はバグがあるSPI2か不思議に始めた......
その後、SPI1とSPI2ループバックテストを分離:

SPI1.SCK -> SPI2.SCK
SPI1.MOSI -> SPI2.MOSI
SPI1.MISO <- SPI2.MISO

そして、受信した乱数を送信し、我々は、受信したデータが正常ではなく、差別SPI1とSPI2を見つけます

  • SR SPI1を送信した後(TXが空)0x02であります
  • SPI2 SRは0x82,0x40である(0x80と0x40のがオーバーランで、ビジー状態です)

深刻な疑問のSPI2の問題が完全に洗い流さにおけるクロック結果前にそこを介してデータを送信した後に、オーバーランの説明をデータの送信を説明していない忙しい、があります。

以下のように、GPIOおよびアナログSPI1 SPI2通信、問題に試してみてください、STM32のSPIスレーブを行うかどうか少し疑問............

公式のコードを見て、突然の公式はスレーブとしてSPI1だった、そして最終的に通常のマスター、スレーブのために、SPI2にSPI1セットにしてみてくださいことを発見します!

SPI2.SCK -> SPI1.SCK
SPI2.MOSI -> SPI1.MOSI
SPI2.MISO <- SPI1.MISO

STM32は、私の前にやるSPI1とSPI2は同じではありません、フィルムはバグがある可能性があります聞いたことありますか?結局のところ、ほとんどの場合のみSPI1で、めったにSPI2を使用していません。
インターネットはビット正誤表を検索し、SPI2スレーブモードとUSART3が紛争であり、第1の時間LPCは、フィルムを変更するようだったので、問題があるでしょうI2Sが、高価半分と同じ機能は、それを忘れて言いました。


修正:今日は、ロジック・アナライザの波形に追いつきました。

これは、スレーブとして、マスター、SPI1とSPI2です。
SPI2-マスター、SPI1スレーブ

これは、マスタ、スレーブとしてSPI2としてSPI1です。
SPI1-マスター、SPI2-スレーブ

どちらのあなたがマスターを行うには見ることができ、エッジは右ですが、不具合があるときからSPI2を行う......
IDLEレベルは時々クロックはゼロではないか、容疑者はSTM32の問題を抱えていたが、突然手を見るだけでなく、デュポンラインは、デュポンラインのセットを変更しようとするが、それでも通常の!

正しくテストデータ。

(0) M_SR=02, S_SR=02, (MTX) 94ef == 94ef (SRX), (MRX) 53df == 53df (STX)
(1) M_SR=02, S_SR=02, (MTX) e746 == e746 (SRX), (MRX) e4ea == e4ea (STX)
(2) M_SR=02, S_SR=02, (MTX) 02f5 == 02f5 (SRX), (MRX) 006d == 006d (STX)
(3) M_SR=02, S_SR=02, (MTX) a3bc == a3bc (SRX), (MRX) 1728 == 1728 (STX)
(4) M_SR=02, S_SR=02, (MTX) 4b5b == 4b5b (SRX), (MRX) e7db == e7db (STX)
(5) M_SR=02, S_SR=02, (MTX) b192 == b192 (SRX), (MRX) 2f46 == 2f46 (STX)
(6) M_SR=02, S_SR=02, (MTX) b421 == b421 (SRX), (MRX) d829 == d829 (STX)
(7) M_SR=02, S_SR=02, (MTX) c6c8 == c6c8 (SRX), (MRX) ab44 == ab44 (STX)
(8) M_SR=02, S_SR=02, (MTX) e347 == e347 (SRX), (MRX) 7f57 == 7f57 (STX)
(9) M_SR=02, S_SR=02, (MTX) f95e == f95e (SRX), (MRX) e922 == e922 (STX)

スレーブとして通信することができSPI1は、私もボードやデュポン社の新しいSTM32公式ラインを置き換えしかし、なぜ、まだも何が起こるかを最終的に、使用されていない、理解できない......

公開された136元の記事 ウォンの賞賛306 ビュー437万+

おすすめ

転載: blog.csdn.net/xqhrs232/article/details/103906905