2416937_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2416937_ja-JP

2416937_ja-JP

S32K312 LPUART – 1 Mbpsボーレート、30 MHz LPUARTクロックにおけるフレーミングエラー

こんにちは、NXP チームの皆様、

NXP S32K312 MCUを使い、LPUARTペリフェラルを使っています。通信に必要なUARTボーレートは1Mbpsです。

LPUART 6の機能クロックは30MHzです。

最初にUARTを以下のように設定しました。

  • ボーレート:1,000,000 bps
  • LPUARTクロック:30MHz
  • SBRまたは仮数部:2
  • OSRまたは除数:15
  • データビット数:8
  • パリティ:なし
  • ストップビット: 1
  • LSBファースト

この構成では、通信中にフレーミングエラーが発生することを確認しました。

LPUARTのボーレート計算に関して、以下のことが理解できます。

ボーレート = LPUARTクロック÷SBR×OSR

正確に1Mbpsを実現することを目的とした構成も試してみました。

  • SBR = 2
  • OSR = 15
  • ボーレート = 30 MHz ÷ 2 × 15 = 1 Mbps

しかし、依然としてフレーミングエラーが見られます。

921600bpsも試してみましたが、このボーレートでもフレーミングエラーが発生しました。

現在の観測結果

  • LPUARTクロック:30MHz
  • 必要な通信ボーレート:1Mbps
  • UART構成: 8 N 1
  • 1 Mbpsでフレーミングエラーが観測されました
  • 921600ボーでもフレーミングエラーが観測されています。
  • 通信はTI BQ79600ブリッジを介して行われます。
  • ロジックアナライザを使用してTX波形を監視しています。

もう少し詳しく教えていただけますか:

  1. S32K312 LPUARTは30 MHzのLPUARTクロックで1 MbpsのUART通信を安定してサポートしていますか?
  2. 30MHzのクロックで1Mbpsを実現するための、推奨されるOSRとSBRの組み合わせはありますか?
  3. 1MbpsにおけるOSR値、SBR値、またはボーレート精度に関して、既知の制限事項や制約はありますか?
  4. 信頼性の高い1Mbps通信を実現するために、LPUARTの追加設定は必要ですか?
  5. 1Mbpsで通信する場合、LPUARTの推奨クロック周波数はありますか?
  6. フレーミング誤差はLPUARTサンプリング構成やクロック許容差に関連している可能性はありますか?

必要に応じてLPUART BAUDレジスタ値、RTD設定、ロジックアナライザのキャプチャも提供できます。

推奨される構成と、追加のデバッグ手順についてご教示ください。

ありがとうございます。

Re: S32K312 LPUART – Framing Error at 1 Mbps Baud Rate with 30 MHz LPUART Clock

こんにちは、 @gayathri123 さん、

フレーミング誤差とはレシーバ側の誤差です。したがって、LPUART6_TXとして使用されるPTD9を一時的に再多重化しても、それ自体でLPUARTのフレーミングエラーフラグが設定されるべきではない。このフレーミングエラーは、レシーバが停止ビットを期待していた論理0を検出したことを示しています。
 

誤差がLPUART6_STAT[FE]で報告されているのか、BQ79600が報告しているのか、それともロジックアナライザだけで報告されているのか、確認していただけますか?

2.75ミリ秒のLOWウェイクアップパルスは、UARTフレームよりもはるかに長い。レシーバが有効なままS32K312 RX入力にもLOWレベルが存在する場合、有効な停止ビットが検出されないため、LPUARTは正しくフレーミングエラーを報告することがあります。したがって、このフラグはウェイクアップフェーズで発生し、通常のUART通信が開始された後も設定されたままになる可能性がある。

テストとして、以下をお試しください。

  1. ピンマルチックスを変更する前に、LPUARTレシーバとトランスミッタを無効にしてください。
  2. GPIOを使用してウェイクアップパルスを生成します。
  3. GPIO出力をHIGHに戻します。
  4. PTD9をLPUART6_TXにリマルチプレクサ。
  5. 以前の受信エラーフラグをすべてクリアします。
  6. LPUARTを再度有効にし、BQ79600のウェイクアップ回復に必要な時間が経過するまで待ちます。
  7. 有効なコマンドフレームを送信してください。

ウェイクアップパルスの前後のLPUART6_STAT値とともに、TXとRXの両方のロジックアナライザによるキャプチャデータを提供してください。STAT[FE]が設定される正確な瞬間を特定することは特に重要です。

よろしくお願いいたします。

パベル

Re: S32K312 LPUART – Framing Error at 1 Mbps Baud Rate with 30 MHz LPUART Clock

こんにちは

当社では、 LPUART6を1Mbpsに設定したS32K312を使用しています。PTD9はLPUART6のTXピンとして設定されています。

PTD9を一時的にGPIOとして設定し、その後LPUART6 TXに再多重化すると、UART通信中にフレーミングエラーが発生することが確認されています。

手順は以下のとおりです。

  1. PTD9をGPIOとして設定し、約 2.75ms 間LOWに駆動して 、必要なウェイクアップパルスを生成します。
  2. PTD9 をLPUART6_TXに再多重化します。
  3. LPUART6を介してダミーデータを1Mbpsで送信します。
  4. UART通信中にフレーミングエラーが発生しています。
Re: S32K312 LPUART – Framing Error at 1 Mbps Baud Rate with 30 MHz LPUART Clock

こんにちは、 @gayathri123 さん、

詳細な説明をありがとうございました。

まず最初に明確にしておくべき点は、LPUARTのボーレートの計算式です。S32K3 LPUARTの場合、実効ボーレートは次のように計算されます。

 
ボーレート = LPUART機能クロック / (SBR × (OSR + 1))
 

したがって、BAUDレジスタにSBR = 2、OSR = 15が格納されている場合、結果として得られるボーレートは次のようになります。

 
30 MHz / (2 × 16) = 937,500 ボー
 

したがって、1Mbpsではありません。このずれは、通信相手が1Mbpsで動作している場合、フレーミングエラーを引き起こすのに十分な大きさである。

30 MHzのLPUART機能クロックの場合、以下の方法で正確な1 Mbpsのボーレートを得ることができます:

 
 
SBR = 2
OSRレジスタ値 = 14
実効オーバーサンプリング比 = 15
 
30 MHz / (2 × 15) = 1,000,000 ボー
 

一部の設定ツールでは実効オーバーサンプリング比が表示される場合がありますが、BAUDレジスタにはこの値から1を引いた値が格納されていることにご注意ください。そのため、初期化後にLPUART6_BAUDレジスタ全体を読み出し、実際のOSRフィールドとSBRフィールドを確認してください。

S32K312 LPUARTは1 Mbpsの通信をサポートできます。30MHzの動作クロックも、ボーレートを正確に生成できるため適している。正しいクロック、ボーレート設定、フレームフォーマット、ピン構成、レシーバ設定以外に特別な追加設定は通常必要ありません。

よろしくお願いいたします。

パベル

Tags (1)
No ratings
Version history
Last update:
Wednesday
Updated by: