2372202_ja-JP

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

2372202_ja-JP

2372202_ja-JP

NfcrdlibEx8_HCE_T4T の例

当社では独自のLinuxプラットフォームを開発しており、PN5190をカードリーダーとして長年にわたり正常に動作させてきました。

次に、「NfcrdlibEx8_HCE_T4T」の例のように、タイプ4Aタグとして機能させる方法を試してみます。リーダーライブラリバージョン7.14.00を使用してサンプルを試してみましたが、スレッドで報告されているのと同じ結果になりました: https://community.nxp.com/t5/NFC/HCE-T4T-Example-not-working-with-NXP-NFC-Library-v07-08-00-in/td-p/...

Android端末(Samsung S23 ultra)をNXPの「TagInfo」アプリでタップすると、無効なRATSが返されます。Rxバッファは、0x11、0xD4、...などから始まるデータを受信します。

[phacDiscLoop_Sw_Run] リスニングモードを開始します
[T4TCardEmulation] カードがリスニングモードで有効化されました...
[phpalI14443p4mC_Sw_Activate] RATS: 11 D4 00 8C 26 82 9B FA 12 01 DF 84 5B 00 00 00 30
[phpalI14443p4mC_Sw_Activate] 無効なRATSを受信しました...


電話機がNFC-DEP(P2Pモード/SNEP)で通信しようとしていることが原因でしょうか?

この問題の解決にご協力いただければ幸いです。

よろしくお願いします!

Re: NfcrdlibEx8_HCE_T4T exampleこの問題は、一部のマクロを無効にし、SAKを正しい値0x20に更新することで解決します。Re: NfcrdlibEx8_HCE_T4T example

お世話になります。

お知らせいただきありがとうございます。それぞれの説明と最新情報について対応いたします。

すてきな一日を!

Re: NfcrdlibEx8_HCE_T4T example

こんにちは、

この件に関して、さらに質問があります。

NfcrdlibEx8_HCE_T4T」サンプルを使用してデバイスをタイプ4カードエミュレータとして動作させることはできましたが、非常に動作が遅いようです。アプリケーションの手順は以下のとおりです。

1. デバイスはリーダー(ポーリング)モードで動作します

2. 電話をタップすると、モバイルウォレット内のカードが読み取られる。

3. 読み取り終了後すぐにRFをオフにする

4. HCEタイプ4カードエミュレーターモード(パッシブリスナーモード)でRFチップを再初期化します。

5. スマートフォンにURL(NDEF)を送信する

問題は、カードエミュレーターモードでRFチップを再初期化し、スマートフォンにURLを送信するのに約1500ミリ秒かかることです。

ユーザーがスマートフォンを長押ししたりタップしたりしなくても済むような、もっと速い方法はありますか?

Googleで検索したところ、以下のようにタイプ2タグを使用することで可能だと書かれていました。しかし、それはうまくいかなかった。電話には何も着信がありませんでした。



ステップ1:フィールドを終了する
│(約1ms)

ステップ2:NDEFデータの読み込み
│(約3ms)


ステップ3:オートコールを実行する

500ミリ秒以内に高速なモード切り替えとURLの電話への送信を実現する方法について、具体的な手順をご教示いただければ幸いです。

よろしくお願いします!

Re: NfcrdlibEx8_HCE_T4T example

上記の質問に関連して、フィールドを終了させた後に実装しようとしたコードを以下に示します。phhalHw_Autocoll() は成功を返しますが、phhalHw_Pn5190_Instr_ExchangeRFData() では 0x020A が返されます。

phhalHw_Pn5190_Autocoll() も以下のように更新されました。

phhalHw_Pn5190_Instr_SwitchModeAutocoll (pDataParams,bRfTechnology, PHHAL_HW_PN5190_AUTOCOLL_MODE_AUTONOMOUS_WITH_STANDBY ))


int card_emulator_main_cutdown(void)

{

する

    {

整数 ret;

phStatus_t ステータス;

pHal_Hce = phNfcLib_GetDataParams(PH_COMP_HAL);

TRACE0("NfcLibデータパラメータポインタが正常に設定されました");


/* ======================================================================= */

/*ステップ3:ステージングエミュレーションプロファイルとURLペイロードのロード */

/* ======================================================================= */

TRACE0("ハードウェアターゲットレイヤーの設定とURLバッファの読み込み中...");

       

/* ターゲットモードHALパラメータの設定 */

status = phAppHce_HALConfigAutoColl();

CHECK_STATUS(ステータス);

if (status != PH_ERR_SUCCESS) {

TRACE1("phhalHw_TargetInit が失敗しました: 0x%04X", status);

ステータスを返します。

     }

/* ======================================================================= */

/*ステップ4:AUTOCOLL(自律リスニング状態)を有効にする*/

/* ======================================================================= */

TRACE0("100ms未満の自律リスニングモードに入ります...");

       

// 重大な修正: PH_ASSERT_NULL クラッシュを防ぐために有効なストレージメモリを割り当てます

uint8_t * pRxBufferPtr = NULL;

uint16_t wRxLengthData = 0;

uint16_t wProtocolParams = 0;

// HALのパラメータフットプリントに厳密にマッピングされた関数を実行します。

// スイッチコードにパッシブNFC-Aテクノロジーを選択するように指示するために「A_MODE」を渡します。

ステータス = phhalHw_Autocoll(

pHal_Hce、

A_MODE、// NFC-Aテクノロジーのプロファイリングを強制するビットマスクフラグ

&pRxBufferPtr, // ポインタへの有効なポインタ参照として渡されます

&wRxLengthData, // 長さへの有効なポインタ参照として渡されます

&wProtocolParams // パラメータへの有効なポインタ参照として渡されます

);

if ((status & PH_ERR_MASK) == PH_ERR_SUCCESS) {

TRACE0("タップしてURLにアクセスする切り替えが完璧に実行されました!電話機がアンテナフィールドに接触しました。)

TRACE1("デラップされたアクティベーションプロトコルパラメータ: 0x%04X", wProtocolParams);

/* ======================================================================= */

/*ステップ5:電話機からの受信APDUコマンドを処理する*/

/* ======================================================================= */

TRACE0("電話のファイルシステム読み取りコマンドを待機しています...");

           

// データ交換バッファを割り当てる

uint8_t * pDataIn = NULL;

uint16_t wDataInLen = 0;

// 電話機が起動直後に送信した最初のデータパケットを取得します

// Autocoll スニペットは既にアドレスを pRxBufferPtr / wRxLengthData に格納しています

pDataIn = pRxBufferPtr;

wDataInLen = wRxLengthData;

// 電話機の読み取りコマンドを処理するための高速ループに入ります

// 電話機は「NDEFアプリケーションを選択」→「NDEFファイルを選択」→「バイナリを読み込む」というメッセージを送信します。

//while (1)

ヤージュ

// 0x0225 チェックをバイパスするには、正しいターゲット エミュレーション送信関数を使用してください

//PH_RECEIVE_RF_ENABLE_EVT_STATUS は転送のイベント追跡を有効にします

ステータス = phhalHw_Pn5190_Instr_ExchangeRFData(

pHal_Hce、

PH_EXCHANGE_DEFAULT、// wOption

0, // bTxLastBits (0は完全な8ビットバイトレイアウトを示す)

0x05、// bRespControl: ビットマスク 0x04 (イベントステータス) | 0x01 (受信ステータス)

aNdefFile、// URL配列構造

23, // URLデータペイロードのサイズ

&pRxBufferPtr, // レスポンスデータポインタのアドレス

&wRxLengthData // 受信する長さトラッカーのアドレス

);

           

if (status == PH_ERR_SUCCESS) {

TRACE0("シングルショットURLパケットの注入に成功しました。タスク完了!);

} それ以外 {

TRACE1("注入ステータス/タイムアウト: 0x%04X (電話が正常に切断された可能性が高い)", status);

         }

       }

} それ以外 {

TRACE1("Autocoll が終了、タイムアウト、またはステータス 0x%04X で破棄されました", status);

     }

} while(0);

0を返す。

}


// /* 必須の NDEF ファイル。phceT4T_SetElementaryFile を使用して設定されます。*/

uint8_t aNdefFile[] = {

/* ---必須の非接触型輸送ヘッダー --- */

//0x02、// 1. PCBバイト:このフレームをパート4 Iブロック(ブロック番号0)として構成します

0x00、0x13、// 1. T4Tコンテナ長インジケータ(ペイロード合計19バイト)

0xD1、// 2. NDEFレコードヘッダー(MB=1、ME=1、SR=1、TNF=0x01 既知タイプ)

0x01、// 3. タイプ長(1バイト長の名前)

0x0F、// 4. ペイロード長(プレフィックス+文字列で15バイト)

0x55、// 5. レコードタイプ: 'U' (URIレコードの場合は0x55)

0x02、// 6. URI識別子プレフィックス: コード0x02は「 https://www. 」にマッピングされます。

   

// 7. URIペイロード文字列(14バイト)

0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、0xww、

/* ---必須スマートカードステータストレーラー --- */

0x90、0x00 // 21-22。APDU成功ステータス(Androidに対し、データ読み取りが完了したことを通知する)

};

出力:

06-16 17:34:31.600 26047 27687 E nfc : [card_emulator_main_cutdown] NfcLibデータパラメータポインタが正常に設定されました

06-16 17:34:31.600 26047 27687 E nfc : [card_emulator_main_cutdown] ハードウェアターゲットレイヤーの設定とURLバッファの読み込み中...

06-16 17:34:31.605 26047 27687 E nfc : [card_emulator_main_cutdown] 100ms未満の自律リスニングモードに入ります...

06-16 17:34:31.607 26047 27999 V nfc : [socket_send_thread] socketSend に入りました

06-16 17:34:31.607 26047 27999 V nfc :

06-16 17:34:32.456 26047 27687 E nfc : [card_emulator_main_cutdown]タップしてURLにアクセスする切り替えが完璧に実行されました!電話機がアンテナフィールドに接触しました。

06-16 17:34:32.456 26047 27687 W nfc : [card_emulator_main_cutdown] アクティベーションプロトコルパラメータのデラップ: 0x0100

06-16 17:34:32.456 26047 27687 E nfc : [card_emulator_main_cutdown] 電話のファイルシステム読み取りコマンドを待機しています...

06-16 17:34:32.456 26047 27687 W nfc : [card_emulator_main_cutdown] インジェクションステータス / タイムアウト: 0x020A (電話機は正常に切断された可能性が高い)



タグ(1)
評価なし
バージョン履歴
最終更新日:
‎06-17-2026 02:33 AM
更新者: