こんにちは、コミュニティの皆様
こんにちは、NXPチーム
LPC55S28 ↔ PN5190 接続の詳細(ホスト SW + DAL / BAL 層)を探しています
PN5190 NFC リーダー ライブラリをすでに所有しており、 LPC55S28 MCU をPN5190 NFC フロントエンドに接続したいと考えています。
「LPC55S69 で NFCリーダ ライブラリを使用する」という記事を確認しましたが、特に LPC55S28 と互換性のあるセットアップを探しています。
ご回答をお待ちしています。
こんにちは@EduardoZamoraさん、
ご返信ありがとうございます。
あなたが参照したガイドは、私が最初に NXP の Web サイトで見つけたものよりもすでにずっと役立つので、指摘していただきありがとうございます。
これらのガイドを確認しているときに、多くのガイドに特定のプロセッサまたはボード用に事前構成されたフォルダーまたはすぐに使用できるパッケージが含まれていることに気付きました。これらのパッケージでは通常、NFCリーダ ライブラリが制御プロセッサのセットアップと統合され、場合によっては DiscoveryLoop の例も統合されるため、簡単に開始できます。
LPC55S28 + PN5190 の組み合わせ、または少なくともサポートされている最も近い LPC55xx 構成に対して、同様のリファレンス パッケージまたはプロジェクト (たとえば、MCUXpresso にインポート可能なもの) を提供することは可能でしょうか?このようなプロジェクトを出発点とすることは、移植と検証に非常に役立ちます。
サポートのほど、どうぞよろしくお願いいたします。
よろしくお願いします、
ラドスワフ・トマシク
こんにちは@RadoslawTomasik
申し訳ありませんが、PN5190 + LPC55S28 に関する特定のドキュメントやガイドはありません。
ただし、おっしゃるとおり、次のガイドを参照することができます。
- NFCリーダーライブラリのi.MX RT1050への移植 - NXPコミュニティ
これらのガイドは良い出発点になります。
よろしくお願いいたします
エドゥアルド。
@エドゥアルド・ザモラ
以下のガイドに従う場合:
https://community.nxp.com/t5/NFC-Knowledge-Base/NFC-Reader-Library-Porting-FRDM-K64F/ta-p/1117798
記載されている手順を正常に実行できました:
NFCリーダライブラリを追加する
LPC55Sxx用のプロジェクトを作成する
DiscoveryLoop ファイルを LPC プロジェクトにコピーします。
ただし、 PN5190 ( NxpNfcRdLib_PN5190_v07.14.00_Pubを使用)で同じ手順を実行すると、私は次のことができます:
ライブラリを追加する
LPC55Sxxプロジェクトを作成する
しかし、DiscoveryLoop ファイルをコピーしようとすると、次のエラーが発生します。
リソースのコピー中に問題が発生しました。
リンクされたリソースを作成できません。
これをあなたの側で確認して、これが既知の制限であるかどうか、または LPC55Sxx を使用した PN5190 に推奨される回避策があるかどうかをお知らせください。
再開まで今しばらくお待ちください。
よろしくお願いします、
ラドスワフ・トマシク
こんにちは、
残念ながら、この特定のセットアップに関する参照プロジェクトはありません。PN5190 用の NFCリーダ ライブラリには、LPC1769 および Kinetis K82 のサポートが含まれています。その他のホスト MCU のサポートはユーザーが実装する必要があります。
NFCリーダ ライブラリのリンクが不可能になったとおっしゃっていますが、フォルダーをリンクしようとするとエラー メッセージが表示されるということですか?あなたが従っている手順は何ですか?NFCリーダ ライブラリの移植 FRDM_K64Fの「NFCリーダ ライブラリのリンク」セクションに記載されている手順に従って、フォルダーをリンクできるはずです。また、リンクされたリソースは、プロジェクト プロパティ > リソース > リンクされたリソースに表示されます。
よろしくお願いいたします
エドゥアルド。
こんにちは@EduardoZamoraさん、
調査の結果、元の「リンクされたリソースを作成できません」というエラーは、ファイルパスが長すぎることが原因であることがわかりました。パスを短くしたところ、この特定の問題は解決しました。
ただし、 「プロジェクトをワークスペースにコピー」オプションを有効にして NFCリーダ ライブラリをワークスペースに追加すると、関連する問題が依然として発生します(添付のスクリーンショットを参照)。
いくつかのドキュメント(例:AN13425)では、このオプションを選択しないことを明示的に推奨しています。この推奨に従うと、DiscoveryLoopファイルをLPC55Sxxプロジェクトにコピーすると正常に動作します。
欠点は、この場合、 ワークスペースに NFC サンプル プロジェクトが含まれていないため、 NFCリーダ ライブラリをリンクできなくなること です。
その結果、 NfcrdlibEx1_BasicDiscoveryLoopから次のフォルダーをlpc55sxx_basic_discovery_loopプロジェクトにリンクすることはできません。
ダル
NxpNfcRdLib
フォサル
intfs
これは LPC55Sxx を使用した PN5190 の既知の制限事項なのか、あるいは推奨される回避策があるのかどうか教えていただけますか?
また、他の NFC リーダー ライブラリ ガイドで参照されているものと同様の、事前構成された LPC55Sxx + PN5190 プロジェクトは利用できますか?
よろしくお願いします、
ラドスラフ
こんにちは、
「DAL および intfs フォルダーは DiscoveryLoop の例の一部であり、個別にリンクすることはできません」とはどういう意味ですか?これらのフォルダーをプロジェクトにリンクしようとするときに、制限に直面することはありません。
フォルダーをワークスペースにコピーしてリンクするか、ライブラリを抽出したパスからフォルダーを直接リンクすることができます。プロジェクト構造での表示方法は、使用する方法によって異なります。
含める必要のある関連パスは、フォルダーをリンクした後、 NFCリーダ ライブラリ ポーティング FRDM_K64Fの「インクルード パスの追加」セクションに表示されます。
よろしくお願いいたします
エドゥアルド。
こんにちは@EduardoZamoraさん、
ご返信とご説明ありがとうございます。
LPC55S28 + PN5190の組み合わせに関するリファレンスプロジェクトは存在しないと承知しており、SPI DALを自分で実装する準備はできています。NFCリーダーライブラリの移植手順FRDM_K64Fにできるだけ忠実に従うつもりですが、PN5190パッケージを扱う際にいくつかの違いに遭遇しています。
現在の状況と未解決の質問は次のとおりです。
LPC55S28 SDK の例(例: hello_world ) をインポートすると 、問題なく動作します。
NFCリーダ ライブラリをリンクします:
NxpNfcRdLibとphOsalフォルダはLPC55S28プロジェクトにリンクされており、以下に表示されます。
プロジェクト プロパティ → リソース → リンクされたリソース。
ただし、これらのリンクされたフォルダーは、 移植ガイドに示されているように プロジェクト構造には表示されません 。
DAL および intfs フォルダー は DiscoveryLoop サンプル の一部であり 、個別にリンクすることはできません。
これらのフォルダーは、 リンクされるのではなく、DiscoveryLoop プロジェクトから LPC55S28 プロジェクトに コピーする 必要がありますか?
もしそうなら、どの部分がプラットフォーム固有であると考えられ、ユーザーによって変更されることが予想されますか?
インクルード パスは手動で設定できますが、明確ではありません。
NxpNfcRdLib / phOsalライブラリ から取得する必要があるインクルードディレクトリ
DiscoveryLoopの例 からどれが来るか
ライブラリはホスト MCU によって異なり、統合手順もプロジェクトごとに異なるようですので、この構成の推奨セットアップについてご指導いただければ幸いです。
これは完全に NXP プラットフォーム内です。すでに両方の評価ボードがコネクテッドされており、基本的なドライバーと接続のテストを進めたいと思います。
よろしくお願いします、
ラドスラフ
こんにちは、エドゥアルドさん。
ご返信よろしくお願いします。
私が言いたいことを明確にすると、問題はDiscoveryLoop サンプル プロジェクトがどのように構成され、インポートされるかということです。
DiscoveryLoop プロジェクトを MCUXpresso にインポートする場合、 「ファイルをワークスペースにコピー」オプションを使用してワークスペースに追加することはできません。その結果、プロジェクトは MCU ワークスペース ディレクトリの外部に残り、 DALおよびintfsフォルダーはワークスペース ファイル システム内で表示されなくなります。このため、FRDM_K64F 移植ガイドに記載されているように、実際にはこれらを独立してリンクすることはできません。
このため、私は手動ポートを進めました:
必要なDAL 、 intfs 、 NxpNfcRdLib 、およびphOsalフォルダーを LPC55S28 プロジェクトに直接コピーし、プロジェクト構造で完全に表示されるようにしました。
必要なすべてのインクルード パス、プリプロセッサ シンボル、およびソースの場所を手動で追加しました。
LPC55S16/LPC55S28 プラットフォーム (SPI、GPIO、IRQ 処理、タイミングなど) に合わせてDAL 実装を変更しました。
このアプローチにより、プロジェクトがビルドされ、MCU ワークスペース内で構造の一貫性と透明性が確保されます。
よろしくお願いいたします。
ラドスラフ
こんにちは、
お返事ありがとうございます!大変感謝いたします。私はLPC55S69-EVKとPNEV5190BPを使用しています。
ウェブサイトから最新のNxpNfcRdLib(NxpNfcRdLib_PN5190_v07.16.00_PUB)とSDK(SDK_26_06_00_LPCXpresso55S69)をダウンロードしました。
最初はK82Fマイクロコントローラ用に作成したNxpNfcLibからDiscoveryLoopの例をインポートしました。これは大きな成功とは言えませんでした。なぜなら、マイクロコントローラ固有の設定が多数存在し、それが処理を妨げていたからです。
その後、このThreadで先ほど触れたLPCのポーティングガイドを見つけました。これも成功しませんでした。なぜならSDKやNfcのライブラリ版は基本的に古すぎて適切に使えなかったからです。
それから、あなたが既におっしゃったことを実行しました。最新のSDKからlpcxpresso55s69_lpc_gpio_led_output_cm33_core0例を取り込み、DAL、 intfs、 NxpNfcRdLib、 phOsal フォルダをプロジェクトに直接追加しました。次に、パス、プリプロセッサ、およびソースの場所を設定しました。そして、欠けているSDKコンポーネントを追加しました。
DALを修正しようと試みましたが、旧NFCライブラリで動作していたDALと新ライブラリのDALにはかなりの違いがあったため、うまくいきませんでした。コンパイル自体は成功するのですが、phbalReg_Init() 関数内で呼び出される SPI_MasterInit 関数のハードフォルトハンドラで処理が停止してしまいます。
これは主に私がNXP製品を使い始めたばかりだからだと思います。プロジェクトのzipファイルを添付します。もしかしたら、私が何か間違ったことをしたのかもしれないし、何か見落としていたのかもしれない。
こんにちは、
ライブラリの移植方法は分かりましたか?SDKとNFCライブラリの構造がかなり大きく変わったため、DALの書き直しで何度も行き詰まっています。
付属のソースコードを含むこのガイドを参考に、自分のコードを作成しようとしました。しかし、このNFCライブラリ版にはPN5190ドライバは含まれていません。PN5190が追加された際に、ライブラリにかなり重要な変更が加えられたため、NfcRdLib、phOsal、intfsフォルダを単純に置き換えようとした際に多くのエラーが発生しました。また、新しいSDKバージョンが原因でエラーがいくつか発生し、今はどうすればいいのか正直わかりません。特に、推奨ガイド1と2はもはや最新の情報ではないからです。
前もって感謝します!
こんにちは、エミールさん。
同じハードウェア構成(LPC55xx + PN5190)を使用していますか?
基本的に、公式のLPC55S28 + PN5190プロジェクトがなくても、既存のポーティングガイドを参考にすることができます。最新の NxpNfcRdLib_PN5190 パッケージをダウンロードしてMCUXpressoにインポートすることをお勧めします。まずはLPC55xxのSDK例(例: hello_world)から新しいプロジェクトを作成し、NFCリーダーライブラリを手動で移植します。
私にとって効果的だった方法は以下のとおりです。
あなたが言及したドライバについてですが、具体的にはどのドライバですか?欠けているモジュールをリストアップしたり、コンパイラのエラーを投稿できれば、まだ移植が必要なモジュールを特定するのがずっと簡単になります。
新しいSDKによるエラーは、使用しているLPCデバイスやSDKバージョンによっても異なる場合があります。まずはNXPで入手可能な最新のMCU SDKを使っているか確認し、プロジェクトで期待されるバージョンと一致しているか確認してください。
あなたの説明から推測するしかありませんが、もし教えていただければ:
必要な変更点を特定するお手伝いを喜んでさせていただきます。私も似たような手動移植を経験したので、適切な方向を教えられるかもしれません。
これが少しでもあなたの前進に役立つことを願っています。
こんにちは、エミールさん。
あなたの説明から、まずはピン設定(pin_mux)を再確認し、正しいFlexcommインスタンスがSPI用に設定されているか確認してください。そこが不一致すると、SPI_MasterInit()中にコードがハードフォールハンドラに入り込む可能性があります。
さらに、 SPI_MasterInit()を呼び出す前に、 spi_master_config構造体が正しく初期化されていることを確認してください。また、新しい Reader ライブラリは古いバージョンとは若干異なる動作を想定しているため、 Exchange関数を見直して、WRITE フェーズと READ フェーズの両方が正しく実装されていることを確認することをお勧めします。
参考資料としてファイルを添付しました。実装と実際の実例を比較するのに役立つかもしれませんが、異なるセットアップ用に作られたため、修正なしで動作するとは保証できません。
これが正しい方向への手がかりになれば幸いです。
どうもありがとうございます。pin_muxとクロックをどのように設定すればよいのか、よくわかりません。ピン設定ツールを使って設定したのですが、正しく設定できたかどうか自信がありません。しかし、なぜこのようなことをしなければならないのかもよく分かりません。というのも、これらの設定はphbalReg_LpcOpenSpi.cファイルで上書きされているように見えるからです。
phbalReg_Init() 関数だったと思うのですが、そこでクロック周波数の選択方法を変更する必要があることが分かりました。というのも、以前に変更されていたからです。
その後、コードをコンパイルしてマイクロコントローラにダウンロードすることができました。しかし、デバッグテキスト以外は何も機能しません:(。あなたのコードを見てみましたが、さらに問題が見つかりました。私が使用しているライブラリのバージョンでは、割り込みハンドラは次のように記述する必要があります: PH_DRIVER_LPC_TIMER_IRQ_HANDLER(uint32_t flags); 一方、これまでに見つけたすべての例では、あなたの定義である PH_DRIVER_LPC_TIMER_IRQ_HANDLER(void); を使用しています。
これにより、以下のエラーが発生します。
../DAL/src/LPCOpen/phDriver_LPCOpen.c:42:47: エラー: 互換性のないポインタ型 'void (*)(void)' からの 'void (*)(uint32_t)' {別名 'void (*)(unsigned int)'} の初期化 [-Wincompatible-pointer-types]
42 | ctimer_callback_t ctimer_callback_table[] = { PH_DRIVER_LPC_TIMER_IRQ_HANDLER, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これまでのご協力は大変助かりました。phDriver_LPCOpen.cを含めることは可能でしょうか?ファイル形式ですか、それともプロジェクト全体を圧縮したZIPファイル形式ですか?
前もって感謝します!
こんにちは、エミールさん。
はい、ポートを設定するには、 MCUXpresso設定ツール (ピン/クロック設定ツール)DALはMCUペリフェラルが正しく設定されていることを前提としているため、これらの設定が完全に phbalReg_LpcOpenSpi.c.c.で置き換えられるわけではありません。
私は自分の pin_mux 参考資料として、ファイルとLPCOpenのソースコードも添付します。
これは 参照コードのみ。このプロジェクトは完全にテストも最終決定もされていないSO、箱から出してすぐに動作するとは保証できません。全てが正常に動作するようになるまでには、まだかなりのデバッグ作業が必要だと思います。
残念ながら、これから約2週間は対応できないので、それまでは追加の質問に答えられないと思います。
移植作業の成功をお祈りしています。添付ファイルが作業の助けになれば幸いです。
編集: はい、SPI経由で送信されるデータストリームは正しいようです。phhalHw_Pn5190.cの151行目:
uint8_t PH_MEMLOC_REM pTxBuff[] = {0x7F /* 方向バイト */,
0x00、0x04 /* HDLL Get Version コマンド長 */,
0xE1 /* HDLL バージョンコマンド OP コードを取得 */,
0x00、0x00、0x00、
0x75、0x48 /* Crc */};
これは先ほど送ったロジックアナライザのスクリーンショットで見ることができるデータとまったく同じです。
こんにちは、
改めてありがとうございました。今週が学校が始まる前の最後の週なので、休暇🥲から戻った後は取り組めるとは思えません。なんとかSPIを動作させることはできた。どうすればいいのか、正直よくわからないんです。絶望的な状況で、pin_mux.c を置き換えました。および .hファイルとあなたのファイル。しかしこれは明らかに効果がなかったので、元のものに戻すとSPIが動作🤷し始めました
ともかく、ロジックアナライザのスクリーンショットを添付しました。送信されているデータが正しいかはわかりませんが、私には理にかなっている ように見え ます。しかし、ご覧の通り、PNEV5190Bからの返答はありません。私の機材の写真も添付しました。外部SPIインターフェースを有効にするためにR5をR7に切り替えました。
デバッグウィンドウを見ると、関数を問題なく通過しているのがわかります。しかし、phhalHw_Pn5190.cの286行目で設定を送信した後、受信しない割り込みを待ち続け、エラーが発生する。
これがピンマップです。
| PNEV5190BのJP1 | LPCXpresso55S69 (Mikroe) の P23 | P24 on LPCXpresso55S69 (Mikroe) |
| 1. EXT_SPI1_CLK | 4. LSPI_HS_SCK (PIO1_2) | X |
| 2. EXT_SPI1_MOSI | 6. LSPI_HS_MOSI (PIO0_26) | X |
| 3. EXT_SPI1_MISO | 5. LSPI_HS_MISO (PIO1_3) | X |
| 4. EXT_SPI1_CS0 | 3. LSPI_HS_SSEL1 (PIO1_1) | X |
| 5. EXT_NFC_IRQ | X | 1. PIO1_5_GPIO_ARD (PIO1_5) |
| 6. EXT_NFC_CLK_REQ | X | X |
| 7. EXT_NFC_WKUP_REQ | X | 2. WAKE/GPIO (PIO1_18) |
| 8. EXT_NFC_DWL_REQ | X | 3. PLU_OUT6/GPIO/FC2_USART_RXD_ARD/SD1_D1 (PIO1_24) |
| 9. GND | X | X |
| 10. GND | 8. GND | X |