2196889_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2196889_ja-JP

2196889_ja-JP

S32K1: LPUART BAUDレジスタのOSRビットがスタックしています

こんにちは。

ターゲット MCU は、S32K14W-Q064 評価ボード上の S32K144W です。LPUART0 ボー レートを設定しているのですが、BAUD レジスタの下位 4 つの OSR ビットをクリアできないことに気付きました。これらのビットはリセット時にデフォルトで 1 に設定されますが、その後は書き込み/クリア可能になるはずです。上位の OSR ビットを設定またはクリアCANますが、下位 4 ビットは固定され、常に設定されており、そのレジスタに対するいかなる操作でもクリアできません。

ネタバレ
Screenshot_RM_BAUD_OSR.pngScreenshot_RM_BAUD_OSR.png

明らかに、これにより UART の機能が制限され、適切なボー レートの選択が難しくなります。ドキュメントを何度も精査しましたが、これらのビットに対する制限や、それらをクリアまたは変更するために満たさなければならない条件についての言及は見つかりませんでした。たぶん見逃したのでしょう。

他のフォーラム投稿 2 件を見つけましたが、そこではユーザーが同じ問題 (ただし、別の部分) について言及していました。

"SO、OSR フィールド (15 と 31) に設定できるのは 16 と 32 の値のみで、他の値を設定すると 16/32 になることに気づきました。"

残念ながら解決策は見当たりません。

https://community.nxp.com/t5/Kinetis-Microcontrollers/FRDM-K82F-uart-problem/mp/845950

https://community.nxp.com/t5/Kinetis-Microcontrollers/LPUART0-baudrate/mp/792047/highlight/true#M481...

これらのビットが詰まっている理由や、変更方法について何かご意見はありますか?

ご協力いただきありがとうございます!

トレバー

Re: S32K1: LPUART BAUD register OSR bits stuck

こんにちは、トレバーさん。

情報をいただきありがとうございます。

OSRビットを個別にクリアできないことにはこれまで気付いていませんでしたが、RTD のBAUDレジスタへの書き込みも一度に行われることがわかりました。

よろしくお願いいたします
ロビン

Re: S32K1: LPUART BAUD register OSR bits stuck

こんにちは、ロビン。

私は S32K1 RTD を使用していません。UART を LPUART レジスタで直接構成しています。

明確に言うと、最初に OSR ビットと SBR ビットをクリアし (LPUART_BAUD_OSR_MASK と LPUART_BAUD_SBR_MASK を使用)、次に必要なビットを設定して (LPUART_BAUD_OSR(x) と LPUART_BAUD_SBR(x) を使用)、必要なボー レートを取得しようとしていました。重要なのは、OSR ビットをすべてクリアすると、オーバーサンプリング比が 16 になり、下位 4 ビットが設定されたデフォルトと同じになることです。リファレンスマニュアルにはこのように書かれていますが、OSR ビットをクリアすると何が起こるのかは十分に説明されていないようです。

Screenshot_RM_OSR.pngScreenshot_RM_OSR.png

私が理解できなかったのは、OSR ビットをすべてクリアすると、ハードウェアはそれをオーバーサンプリング比 16 を使用していると解釈するのではなく、下位 4 ビットを文字通り 1 に戻し、デフォルト設定に戻すということです。SO、最初にそれらのビットをマスクしてクリアし、次に必要なビットを設定するという一般的なパターンは使用できません。代わりに、すべてのビット グループで必要な値を使用して、BAUD レジスタを一度に設定する必要があります。

SO、これを変更することで:
IP_LPUART0->BAUD &= ~( LPUART_BAUD_OSR_MASK );
IP_LPUART0->BAUD |= ( LPUART_BAUD_OSR(10u) );
...

これに対して:
IP_LPUART0->BAUD = ( LPUART_BAUD_OSR(10u) | ... );

期待通りに動作しているようです。

ご協力ありがとうございました。

よろしくお願いいたします。
トレバー

Re: S32K1: LPUART BAUD register OSR bits stuck

ハイ

BAUD[BOTHEDGE]を設定しましたか?S32K1 RTD を使用している場合は、以下を参照して設定する必要があります。

BAUD[OSR][BOTHEDGE] Lpuart_Uart_Ip_SetUp_Baudrate RTD.pngBAUD[OSR][BOTHEDGE] Lpuart_Uart_Ip_SetUp_Baudrate RTD.png


よろしくお願いします、
ロビン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「解決策として承認」ボタンをクリックしてください。ありがとう!

- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-21-2025 05:07 AM
更新者: