最後にシリアルポートとボーレートPCLK2関係は何ですか?

2019年6月5日
なぜバージョンを登録し、シリアルポートの初期化関数は、2つのパラメータPCLK2および結合をとり
、ライブラリ機能バージョン間だけつのパラメータをバインド:

開発者ガイドのレジスタバージョンから次の統合:

ボーレートが計算されます

ときOVER8 = 0とき


15426916-f6d7bbe9d17985ff.png
image.png
  • Tx / Rxはボーレートのですか?
  • fPCLKxは、シリアルクロックです
    • USART2ためPCLK1〜5
    • USART1とUSART6ためPCLK2
  • USARTDIV固定小数点符号なし

ボーレートレジスタUSART_BRR

各シリアルポートはSTM32F4を有するボーレートはUSART_BRRレジスタ
32ビット、上位16ビットが予約されています

15426916-b8a66461c181e307.png
image.png

  • 仮数は整数部分であります
  • 画分は、* 16(OVER8 = 16を掛けたときに乗じ0、OVER8 = 1がどのくらいかわからない)小数部であります

ボーレート計算例

1 115200のシリアルボーレートとして設定されているものと、及び84MのPCLK2クロック(すなわちAPB2バスクロック周波数)は
USARTDIVを見つけます。

USARTDIV
= fpCLK2 / 16 /ボー
= 84000000/16/115200
= 45.572
従って、
45の整数部分、DIV_Mantissa = 45 = 0x2D
0.572の小数部分、DIV_Fraction = 0.572×16 = 9.152 = 0x09の

OVER8ビット

受信機がビットオーバーサンプリング設定:OVER8ビットを、
ビットは、USART_CR1内部のレジスタに設定されている
OVER8 = 0オーバーサンプリングの16倍を使用した場合と、受信機クロック、高精度、優れたフォールトトレランスの耐性を増加させることができます。
OVER8より高速を得ることができる= 1の場合。
我々は一般的に、より良いフォールトトレランスのために、導入されている以下のOVER8 = 0で始まり、OVER8 = 0に設定します。
OVER8の詳細については、「STM32F4xx中国のリファレンス・マニュアル」、第26.3.3を参照してください。

結論

ボーレートはPLKであり、いくつかの他の値は、一緒に決定レジスタ
正確、ボーレート、ボー・レートがUSART_BRRを登録し、対応するクロック周波数が上記式OVER8ビットのUSART_CR1のPCLKレジスタによって決定されます。
バージョン・レジスタに渡された計算に関与するパラメータとしてPCLKの値
ライブラリ関数バージョンは、クロック周波数が他の手段によって得ることができる、それが直接ボーレートを設定することが可能である
、すなわち
//ライブラリ版空隙uart_init(U32は、結合)
uart_initを無効(U32のPCLK2、U32バインド )// バージョン登録
パラメータとしてバインドする場合、これらの二つの機能を、考えることができる効果は同等です

ます。https://www.jianshu.com/p/cb35cb921a4aで再現

おすすめ

転載: blog.csdn.net/weixin_34236869/article/details/91081621