おい !
私は s32k144 評価ボードを使用しており、MODBUS プロトコルを使用して UART 経由でデータを受信するために UART_PAL ライブラリを使用していました。while ループで非ブロッキング uart_receivedata() API を使用し、コールバックを使用して受信イベントをチェックし、データを受信していました。
受信するデータの長さが確実になるまでは問題なく動作していましたが、受信するデータの長さが固定されておらず、時間とともに変化する場合はどうすればよいでしょうか。
同様のスレッドをいくつか見ましたが、どのスレッドも絶対的な解決策を示していませんでした。適切な解決策をご指導ください。可能であれば、コードやスクリーンショットを提供してください。
スクリーンショットを添付しましたが、ここでは、switch ステートメント内で、受信されるデータの長さがさまざまなケースで不確実です。
解決策を教えてください@Robin_Shen
よろしくお願いいたします。
アダルシュ。
このガイドには記載されていないが、 @Robin_Shenが送信したリンクには記載されているものがもう 1 つあります。こちらにも記載させていただきます。
6.LPUART_DRV_StartReceiveDataUsingInt()関数でCTRL[IDLE]を有効にする
このガイドを作成していただいた@Adarshnandaに心より感謝します。
HI
私はLPC804でUART経由でデータを受信しようとしています。mcuxpresso IDEsを使用していますが、どなたかコードを提供していただき、データを受信する手順を教えていただけませんか。
こんにちは@Robin_Shen 、
Threadをチェックしてみましたが、うまくいきました。唯一混乱する部分は、スレッドには DMA 経由でデータを受信することに関する回答がいくつかあり、割り込み経由でデータを受信することに関する回答もいくつかあることです。
INTERRUPTS を使用して UART_IDLE_LINE_RECEIVE を実装する場合に従うべき手順を簡単にまとめておきます。
LPUART ドライバを内部に追加する必要があることに注意してください。
1.LPUART_DRV_INIT 関数では、ペリフェラルレジスタを設定して IDLE LINE INTERRUPT を有効にし、IDLE フラグが設定される前に受信するアイドル文字の数を設定する必要があります。それについてはリファレンスマニュアルを参照してください。アイドル キャラクターを 8 人用に設定し、スクリーンショットをここに添付します。
2. LPUART_DRV_IRQHandler 内で、IDLE_LINE_DETECT フラグが設定されているかどうかを確認し、設定されている場合は関数 LPUART_DRV_RxIdleCallback を呼び出す必要があります (デフォルトでは存在しないため、ユーザーが定義する必要があります)。注意 - この関数は、IRQ_Handler の開始時に呼び出す必要があります。
3. ファイル (callbacks.h) の enum uart_event_t 内で、イベント UART_EVENT_IDLE_DETECT を定義します。
4. LPUART_DRV_RxIdleCallback を定義し、その関数プロトタイプを提供します。
5. その後、アプリケーションで使用できるようになります。
@Robin_Shen さん、ありがとうございます。これが他の人にも役立つことを願っています。
よろしくお願いいたします。
アダルシュ。
こんにちは、アダルシュさん
申し訳ありませんが、最近の S32K1 SDK/RTD ドライバーではアイドル検出は実装されていません。S32K144 LPUART IDLE ライン割り込み構成の説明を参照しましたか?LPUART アイドル ライン割り込みを取得するには、SDK ドライバを変更する必要があります。
よろしくお願いします、
ロビン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- スレッドは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいスレッドを開いて、閉じたスレッドを参照してください。
---------------------------------------------------------------------------------
7. LPUART_DRV_GetReceiveStatus 関数が呼び出されて受信長が計算され、LPUART_DRV_AbortReceivingData 関数が呼び出されて最初のフレームが処理された後にデータの受信が再開され、受信バッファが 0 から開始されます。
これが私が追加したコンテンツです。デバッグは正常に完了しました。前回のコンテンツを共有してくださった専門家の皆様に感謝いたします。皆様、ありがとうございました。