MSP430シリアル通信が寒冷時に失敗する


8

MSP430マイクロプロセッサを使用した製品があり、これは数年前から販売されています。MSP430の仕事の1つは、非同期シリアル経由で低電力無線と通信することです。

この冬の始まりとともに、低温で許容できない故障率(数パーセント)がありました。調査の結果、無線とのシリアル通信が失敗していることがわかりました。シリアルポートのボーレートジェネレータは、MSP430のデジタル制御発振器(DCO)から分割されたSMCLKによって供給されます。

低温でシリアル通信が失敗するのはなぜですか?

(注:私はすでに問題を解決しており、すぐに回答を投稿します。ヒント:これはソフトウェアのバグでした。)

回答:


8

どのMSP430を使用していますか?ファミリごとに異なるクロック構造と機能があります。

DCOは周波数とともに温度を変化させ、USARTボーレートを仕様から逸脱させます。MSPには温度センサーがあります(あまり正確ではありません)。DCO制御レジスターの値を変更して、DCO周波数を範囲内に戻すことができますが、これには、予想される温度範囲をカバーする較正済みのルックアップテーブルが必要になります。一部のMSPデバイスには、製造時にフラッシュセクターの1つにプログラムされたDCOキャリブレーションテーブルがありますが、これらは、使用する周波数をカバーする場合にのみ有用であり、温度補償値があるとは思いません。

校正ソースとして使用できる基準水晶発振器はありますか?私は常に32kHz水晶で設計し、これをACLKで使用します。9600までのボーレートの場合、これは直接使用できます。より高いボーレートの場合、ACLK信号に対してDCOを調整する必要があります。新しいパーツには、これを自動的に行うハードウェアFLLがあります。


7

だからここに答えがあります:

製品には32 kHzクリスタルがあり、DCO周波数を調整するルーチンをコーディングしました。周波数調整には、DCOからのタイマーと32kHz ACLKからのタイマーの2つのタイマーを使用しました。キャプチャ/比較システムの割り込みによって駆動されたため、動作中に定期的に自身を再調整できました。

残念ながら、スタートアップコードの間違った部分に初期キャリブレーションを挿入しましたが、割り込みがオフになりました。そのため、シリアルポートを最初に使用する前に調整が行われず、シリアルポートでの応答を待機して初期化がハングしました。

DCO周波数は、工場で調整された値から始まります。そのため、DCOは室温で動作していました。

これらのプロットは物語を語ります:

まず、DCO温度曲線: 代替テキスト

これで、キャリブレーション後の曲線が実際に機能します。 代替テキスト


1
良い話!修正にはかなりの費用がかかりましたか?:D
tyblu 2010

これは、勾配が最初のグラフから2番目のグラフに変化するのは興味深いことです。理論は?DCOの周波数を低く調整すると、温度係数が悪くなりますか?
W5VO 2010

2つのグラフ間でy軸が変化していることに注意してください。そして、一般的にそれらを読みすぎないようにしてください。部品は家庭用冷凍庫で凍結され、温度は整数度のみを読み取る安価なMAS-345(elexp.com/tst_s345.htm)の熱電対で室温まで暖められている間に測定されました。次に、全次数の変化の間を線形補間してプロットを作成しました。
10

5

低温により、DCO周波数が上昇し、UARTボーレートが上昇しすぎましたか?温度を測定し、発振器をソフトウェアで補正しましたか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.