皆さん、こんにちは。
S32K344 マイクロコントローラーの LPUART モジュールからタイムアウト カウンターを実装しようとしていますが、いくつかの問題が発生しています。
最後に受信したメッセージから経過したアイドルビットを監視するためにそれらを使用したいので、私の最初の質問は、ハードウェア割り込みを生成する能力があるかどうかです。
S32K3XXリファレンスマニュアル(セクション77.6.1)に従ってLPUARTレジスタの表を見ると、タイムアウトカウンタを設定するために変更する必要があるレジスタは、TOCR、TOSR、およびTIMEOUTNです。
最初に気付いたのは、これらのレジスタがSDK(S32K344_LPUART.h)のLPUARTレジスタレイアウトtypedefにないことです
したがって、これらのレジスタに手動でアクセスしようとし、SDKからIP_LPUART_0_BASEアドレスを取得し、対応するオフセット(この場合は0x58)を追加しました。この領域を読み書きしようとすると、ハード フォールトが発生します。この方法で上の画像の LPUART レジスタから他の LPUART レジスタを読み取ろうとし、メソッド自体が問題ではないことを確認しましたが、問題なく機能しました。
今のところ、このメモリ領域は何らかの形で保護されていると思いますが、リファレンスマニュアルにはこれに関する多くの情報が見つからなかったので、質問はこれですか?このメモリ領域は保護されていますか?もしそうなら、タイムアウトカウンターを設定するためにそれにアクセスできる方法はありますか?
お手数ですが、よろしくお願いいたします。
Hi@xianalbela
再確認しましたが、このレジスタはS32K344、S32k324、S32K314、およびS32K312ではサポートされていません。
他のS32K3のMCUについては、サポートしています。
こんにちは@Senlent、
ええ、このレジスタが「S32K344_LPUART.h」ファイルで定義されていないことは承知していますが、リファレンスマニュアルに記載されているため、LPUARTタイムアウトカウンター機能を使用する他の方法があるかどうかを知りたかったのです。
もしかしたら、これらのレジスタにアクセスしようとする前にアクティブにする必要があるモードがあるかもしれません。
この機能は何らかの方法で使用できますか?
よろしくお願いいたします。
Hi@xianalbela
私はあなたのコードをチェックしました、そしてあなたの構文に何も問題はありません。
ただし、使用したレジスタアドレスは定義されていません。
ユーザーが使用およびアクセスできるレジスタは「S32K344_LPUART.h」のみです。
こんにちは@Senlent、
確かに、私は完全なプロジェクトを添付しています。
ARMバージョン3.4用のS32DSを使用しており、使用しているRTSバージョンはS32K3xx用の2.0.0です。
Hi@xianalbela
また、使用しているRTDバージョンも教えてください。
あなたがテストした完全なプロジェクトを私に提供できるなら、それは最善でしょう
申し訳ありません@Senlent、
ファイルを再添付しています。
添付ファイルが見当たらなかったので、再確認してください。
こんにちは@Senlent、
NXPリポジトリのLpuartFlexio_Uart_Ip_Example_S32K344を使用しています。
私が行った唯一の変更はmain.cにありますタイムアウトカウンターを実装し(LPUARTインスタンスを3から0に変更)、FlexioUARTインスタンスを削除するファイル(この返信に添付しています)を作成します。
ご回答をよろしくお願い申し上げます。
Hi@xianalbela
私があなたの問題を再現できるように、あなたのデモコードを提供してください、それはあなたが根本原因を見つけるのを助けるために私がより簡単になります。