シリアル通信ボーレート設定とボーレートアルゴリズム
シングルチップマイクロコンピュータのシリアル通信を使用する場合、ボーレートを設定する必要があり、ボーレートは9600,19200 ...に設定する必要があります。 これは伝統ですか? 何から? 対応する水晶発振器も一般に11.0592MHzです。
最初に水晶発振器を設定してから、ボーレートを設定するか、ボーレートを設定してから水晶発振器を設定しますか? なぜこれを設定すべきですか?
より信頼性の高い文が2つあります。
1:電気、伝送媒体などの物理的特性とシリアルデバイスの使用要件
効果的な通信を確保するために、電気、伝送媒体などの物理的特性とシリアルデバイスの使用要件とを組み合わせて、RS232の最大伝送速度は115200にしかならないと判断され、2ステップで取得されます 57600、28800、19200 を得る ; これらのレートに適応するには、対応する水晶周波数を設計します。
2:これは電気通信回線の特性によって決まります。
電話回線の帯域幅は300〜3KHzです。 その時、干し草は最初にモデムに従事したので、2400HZ信号が使用され、対応するボーレートは2400です。基本周波数が決定されるので、改良されたパス は2400の後に基づいてレート の 方法を 採用 します。 9600.19200の形成。 。 。 。
いずれにしても、ボーレートとその後のクリスタル周波数があります。
シングルチップマイクロコンピュータのシリアル通信のボーレートの計算シングルチップマイクロコンピュータのシリアル通信のボーレートの計算。
モード0およびモード2では、シリアルポートのボーレートは固定され、モード0はFosc / 12です。 モード2はFosc / 32またはFosc / 64で、PCONレジスタのSMODビットで決まります。
モード1およびモード3では、ボーレートは可変値です。 ボーレートはタイマ1によって生成されます(8052はタイミング2で生成できます)。 ボーレートとは何ですか? タイマ1の オーバーフロー・ レートによるボー・レート が決定されます。
ボーレート=(2SMOD / 32)*(タイマ1のオーバーフロー率)
注:2SMODここでSMODはインデックス、SMODはボーレートダブルボーレートビット、このビットはPCONレジスタにあります。
ボーレートジェネレータとしてタイマ1を使用する場合は、通常、8ビットオートリロードモードで動作するようにタイマ1を設定する必要があります。また、タイマ1割り込みをディセーブルにして、タイマ1のオーバフロー を計算する方法もあります。 オーバーフロー率はオーバーフローの頻度です。 水晶周波数が12MHzで、TH1値が0xFEであると仮定すると、2つのクロックパルスがオーバーフローに必要とされ、オーバフロー期間は2usであり、オーバフロー の周波数は500KHzである。 タイマー部によると、タイミング時間は次の式で表されます。
(12 / OSC_FREQ(256-TH1))*(12 / OSC_FREQ(256))* Hz))(s)。
次に、オーバーフローの頻度は当然です。
OSC_FREQ(Hz)/((256-TH1)* 12)。
最終的なプッシュ・トゥ・ボーレートは次のようになります。
(2SMOD / 32)*(OSC_FREQ(Hz)/((256-TH1)* 12))。
ボーレートの計算式が利用可能で あり、勿論、TH1の初期値はボーレートに従って導き出すことができます。
BAUD_RATE =(2SMOD / 32)*(OSC_FREQ(Hz)/((256-TH1)* 12))
32 * 12 *(256-TH1)=(2SMOD * OSC_FREQ(Hz))/ BAUD_RATE
256-TH1 =(2SMOD * OSC_FREQ(Hz))/(BAUD_RATE * 32 * 12)
TH1 = 256-(2SMOD * OSC_FREQ(Hz))/(BAUD_RATE * 32 * 12)
水晶発振周波数が11.0592MHz、ボーレートが9600、SMOD = 0の場合、TH1の初期値はどうなりますか? 上記の式によれば、 TH1 = 256-11059200 /(9600×32×12)= 0xFD と計算することができる 。





