シリアルポートのボーレート計算

ボーレート1.1のブロック図

 

1.2概略的なボーレートレジスタ

 

 

1.3概略ボーレート算出式

 

図2は、ボーレートは、他の保持するために使用される32ビットのレジスタのみ下位16ビット、下位16ビットが分割され、小数点以下を保持するために使用される下位4ビット、整数であることがわかります。

ボーレート計算式:送信/受信ボーレート= FCK /(8 *(2- OVER8)* USARTDIV)

  USARTDIV = FCK / 8×(2- OVER8)/ TXRXボー

  Tx / Rxボーレートは、我々は通常、我々が設定されていることを言う// 115200Hz既知の値です。

  FCKは、既知の値の@ 84MHzシリアルクロックであります

  CR1 OVER8設定レジスタにより、

  USARTDIV値はレジスタBRRに書き込まれ、値を計算する必要があります。

次のような:

無効 Usart1_Init(U32ボーレート)を// 仮定115200Hz =ボーレート
{
     フロートUSARTDIV; 
    U16仮数;   

    / * ***セットボーレート** * / 
    // 。TXRXでUSARTDIV FCK = / * 8(2- OVER8)/ボーレート
     // USARTDIV + =仮数(分数/ * 8(2- OVER8)。)     

    USARTDIV =(フロート84百万 / 8 /ボーレート; // 設け1 = OVER8; 84000000Hz FCK = 
    仮数=(INT)USARTDIV; // 整数部 
    画分=(U8)((USARTDIV-仮数)* 16); // 16ビット整数に全体の小数部
    USART1-> BRR =仮数<< 4 | フラクション; 
}

 

おすすめ

転載: www.cnblogs.com/anSn/p/11616743.html