2017-04-16 13 views
0

STM32F411からPCにチャーを送信すると、ガーベジに読み込まれるときに問題が発生しますが、逆の操作を行うと、MCUは送信されたcharを正しく読み取ります。STM32F4 USART1はガベージを送信します

私は、次の操作を実行します。

  1. GPIOAクロックを有効にし、ピン9と10の代替機能を設定します。最初の送信
  2. としてアイドルフレームを送信するために16MHzの(HSI)*
  3. 構成USARTで9600ボーもたらすため
  4. 、USART1を有効M(メッセージ長)のデフォルト値のまま、ストップビット、DMA
  5. セットUSARTDIV

*バス周波数も100MHzのAPB2と同じ結果が出ました。その後

設定USART

// 1. Enable USART 
SET_BIT(USART1->CR1, USART_CR1_UE); 
// 5. Select the desired baud rate in BRR 
SET_BIT(USART1->BRR, 0x683);  // USARTDIV 
// 6. Set TE in CR1 to send an idle frame as first transmission 
SET_BIT(USART1->CR1, USART_CR1_TE); 

私は次のような構成でRealTerm2.0a文字を確定しようとしています:

9600 8N1 None

文字は、次のコードによって送信されます

void SendChar_USART(char pChar) 
{ 
    // Transmitter 7, 8 
    // 7. Write the data to send in the DR register (this clears TXE) 
    USART1->DR = pChar; 
    while(!READ_BIT(USART1->SR, USART_SR_TXE)); 
} 

012絶対同じ構成でUSART2への切り替え

アップデート1

は、問題を解決し、未解決しかし、この質問、シリアル端末からテキストを回復することが可能である「なぜUSART1が期待通りに動作しません?」

+0

、。 –

+0

@old_timer私はディスカバリーボードを持っており、データシートの回路図に従ってEMIF02(EMIフィルタ)の電源ピンとIDピンに接続されています。高い周波数の信号に影響を与える要素はないようです。 これはおそらく問題の原因ですが、なぜアウトバウンドチャネルだけが混乱しているのかは興味深いです。最初はそれをチェックしなかったのは私の過ちです。今質問を削除する必要がありますか? – hrust

+0

私はあなたがこの状態でそれを残すことができない場合、またはあなた自身の質問に答えることができないと思う、私はそれを行う方法があることを知っているか、または攻撃的ではないことを行う時間があるそれに)。私のコードを見ると、私はuart2だけを使って、uart1と混乱しなかったと思います。これらのボードのうちの1つは、他のUARTに入ってきたものをエコーし​​、stlinkに接続されていないものにループバックをかけました。 –

答えて

0

USART1 TXをフィルタリングする拡張コネクタのPA9ピンに途中にコンデンサがあります。 Peter Harrisonはこの問題について非常によく説明していると私は思う。シリアルまたはデバッグ・ヘッダ/ MCUにチップUSB上に接続され、おそらくUSART1それぞれに接続されているもの

http://www.micromouseonline.com/2013/05/05/using-usart1-on-the-stm32f4discovery/

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18251834) –

関連する問題