Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
编译问题 当我使用 S32DS 进行编译时,出现以下问题。你能告诉我这是什么原因造成的吗?问题出在哪里? Re: Compilation issues 您好@ NXP2 分享您的项目,或者告诉我您使用的rtd版本和演示名称。
View full article
Generate Private RSA key Inside SE052 I use SE052 Secuere element IC. I create zephyr based sample application which is generates RSA private key inside SE052. But face the issue to generate new private RSA key, check this logs and fix it. I want to Generate RSA key inside SE052 which can be use for TLS handshake process. board is ESP32c3devkitm. Zephyr RTOS version is 3.7.0 and TLS handshake v.1.2 is use. I attach also sample application and logs with you. Please suggest how to generate RSA key. @Kan_Li  Logs are in .c file key_generation_failed.c file  A71CH SE050 Re: Generate Private RSA key Inside SE052 Hi @MohitGediya , Please use Se05x_API_WriteRSAKey() to generate the RSA key, the sample code can be something like below: status = Se05x_API_WriteRSAKey(pSe05xSession, (Se05xPolicy_t *)&policy_for_auth_obj, RSA_ATTESTATION_KEY_ID, 2048, SE05X_RSA_NO_p, SE05X_RSA_NO_q, SE05X_RSA_NO_dp, SE05X_RSA_NO_dq, SE05X_RSA_NO_qInv, SE05X_RSA_NO_pubExp, SE05X_RSA_NO_priv, SE05X_RSA_NO_pubMod, kSE05x_INS_NA, kSE05x_KeyPart_Pair, kSE05x_RSAKeyFormat_CRT); Please assign proper policy to the key pair, especially no disabling the deletion, otherwise the key can not be removed any more. Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. ------------------------------------------------------------------------------- Re: Generate Private RSA key Inside SE052 Please reply MbedTLS Server connection with client using SE052 MbedTLS v.1.2 handshake @Kan_Li  Re: Generate Private RSA key Inside SE052 Function defination of called function is in last and it's comment for your reference. Is there any issue about associated keyID? Or APDU command header. Can i generate only private key or key_pair in any format. There is no issue about type. I just want any type of private RSA key inside SE052. 
View full article
BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS Hi, I am using NXP chip sd8987 (M2-JODY-W263-10C) with TI soc am62p. I am using android OS. a2dp is working, but hands free is not working. I have only 1 codec speaker. is there anything to be taken care from the pin perspective of M2-JODY-W263-10C (sd8987) module. Regards Roshan Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS Hi, @Roshan888  Can you please let me know what is your Android version? Did you use PCM/I2S interface for SCO on SD8987 M2-JODY-W263-10C module? Could you please provide me a full log from booting up your device and including the full A2DP connected but HFP could not work process? Best regards, Christine.
View full article
IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera Hi, I am using NXP i.MX8Mplus for a camera module product. I use two cameras, one on USB and second on MIPI-CSI2 interfaces. The data path looks like: Camera sensor -> MIPI-CSI -> ISP (bypassed, just DMA) -> GPU (OSD) -> VPU  (h/w encoder) -> RTSP stream on ethernet. I set my bit rate for encoded video stream to 4 Mbps. The pipeline setup looks like this: gst-launch-1.0 -v \ v4l2src device=/dev/video2 io-mode=dmabuf ! \ video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! \ vpuenc_hevc bitrate=4000 gop-size=60 ! \ h265parse config-interval=1 ! \ fakesink sync=false Problem: The customer reports that bitrate varies a lot, the variation is +/- 50%, sometimes even peaks to 100%.  Expectation of customer is variation must be capped to 20% max. How can we achieve this, i saw that CBR is not supported in SDK i am using on IMX8Mplus. I am using Yocto SDK , old one 'mikeldore' branch: repo init -u https://github.com/nxp-imx/imx-manifest.git -b imx-linux-mickledore -m imx-6.1.55-2.2.0.xml Please le us know: - if it is possible to lessen the variation to 20%, if yes how? Thanks pankaj Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera i.MX95 does support encoder constant-bitrate control for H.264/H.265 through V4L2, but “steady bitrate” should be understood as CBR target control rather than perfectly fixed instantaneous output. Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera Thank you for the reply Yiping.  I am trying these suggestions now. One more question, what about IMX95 , does encoder in IMX95 support steady bitrate? thanks pankaj Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera Yes, you can reduce the variation, but: Achieving strict ±20% bitrate on i.MX8MP VPU is NOT guaranteed You can realistically reduce it from ±50–100% → ~±20–40% with proper tuning True CBR requires: v4l2-based encoder (v4l2h264enc / v4l2h265enc) explicit rate-control + QP constraints    Step 1 — Switch to V4L2 encoder (critical) Replace: vpuenc_hevc with: v4l2h265enc Step 2 — Enable real rate control + CBR mode gst-launch-1.0 -v \ v4l2src device=/dev/video2 io-mode=dmabuf ! \ video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! \ v4l2h265enc extra-controls="encode, \ frame_level_rate_control_enable=1, \ video_bitrate_mode=1, \ video_bitrate=4000000, \ h265_min_qp=20, \ h265_max_qp=30" ! \ h265parse config-interval=1 ! \ fakesink sync=false Step 3 — Tune QP range (MOST IMPORTANT) Setting Effect Wide QP (e.g. 10–51) large bitrate variation Narrow QP (e.g. 20–30) lower variation, lower quality Very narrow (e.g. 24–28) near-CBR behavior For the requirement: Start with: QP range = 20–30 If still >20% variation → tighten to 22–28   Step 4 — GOP / I-frame control Your current: gop-size=60 Issue: I-frame causes large spikes (2–5x bitrate) gop-size=30 (shorter GOP helps) Mitigation: OR (better): Enable intra-refresh (if supported) Avoid large IDR spikes Step 5 — Optional smoothing (network level) Even after encoder tuning, short bursts may remain. Add: queue + rtpjitterbuffer OR socket buffer shaping This smooths network bitrate, even if encoder fluctuates.
View full article
MPC5644A 制造商库 我需要MPC5644A的厂商库。 需要采取什么程序? Re: MPC5644A manufacturer library 你好, 好的,谢谢你的解释。 没有适用于此旧设备的库: https://www.nxp.com/design/design-center/software/functional-safety-software/structural-core-self-test-scst-library:SCST 最接近的是 MPC564xB,它与 MPC5644A 具有相同的 Z4 内核。 顺祝商祺! Peter Re: MPC5644A manufacturer library 我使用的是MPC5644A芯片组。 我需要一个用于核心测试的SCST库。 我联系了 NXP 在线聊天,被告知要向 NXP 社区咨询。 我如何才能获得 SCST 库? Re: MPC5644A manufacturer library 你好, 我不太清楚您在寻找什么。 您能解释得更详细些吗? 顺祝商祺! Peter
View full article
MCU to TDA8035 working flow Dear community, I am currently having a hardware that integrates TDA8035 to MCU (Nano120LE3BN of Nuvoton) in order to connect a smartcard at the contact base. I look at the datasheet of TDA and found no flow chart/diagram about the working flow. Can someone provide a working flowchart with this kind of integration? Note: I work on how to make MCU to TDA work using the code but the card does not respond to reset at contact mode. I assume there might be problems about how I set up a workflow and apply it to code. The workflow is based on the document. Look forward to hearing from y'all. Re: MCU to TDA8035 working flow Hello @ldhoang1309  The path : PN7642_MCUXpresso_SDK_02-15-006_PUB\boards\pnev7642fama\ct_examples\Ex2_Ctrdlib_ISO7816\bm Re: MCU to TDA8035 working flow Could you please provide a file/directory path to "ct_example"? Re: MCU to TDA8035 working flow Hello @ldhoang1309  It's recommanded that you can download SDK-> PN7642 MCUXpresso SDK v02.15.006 by going Best-in-Class NFC Frontend with Integrated MCU | NXP Semiconductors there is an example "ct_example" would be helpful to you.
View full article
SPI(スレーブ)+ DMAデータ受信エラー S32K144 SPIをスレーブモードでDMAを使用して構成した場合、データ受信時にデータミスアライメントが発生します(例えば、正しいシーケンスは1、2、3、4、5、6であるべきところ、実際に受信されるデータは3、4、5、6、1、2となり、ミスアライメントを示しています)。オシロスコープを使用して通信データシーケンスを解析すると、シーケンスは正常であり、最初の通信時にSPIが受信するデータも正常です。現在の通信方法は、マスターおよびスレーブマイクロコントローラが定期的にSPI通信をトリガーするというものです。 Re: SPI(Slave )+DMA 数据接收异常 IDE:S32 Design Studio for ARM バージョン2.2、カスタムボード。 Re: SPI(Slave )+DMA 数据接收异常 こんにちは、 @GLBさん どのソフトウェアとIDEを使っていますか?自分の側で問題を再現できるよう、コードと設定を共有していただけませんか? また、カスタムボードを使っていますか?それとも評価ボード(EVB)ですか? BR、VaneB
View full article
SE052内でRSA秘密鍵を生成する 私はSE052セキュアエレメントICを使用しています。 私はZephyrベースのサンプルアプリケーションを作成し、SE052内でRSA秘密鍵を生成します。 しかし、新しいRSA秘密鍵を生成する際に問題が発生した場合は、このログを確認して修正してください。 SE052内でRSAキーを生成し、TLSハンドシェイク処理に使いたいです。 ボードはESP32c3devkitmです。 Zephyr RTOSバージョンは3.7.0で、TLSハンドシェイクv.1.2が使われています。 サンプルのアプリケーションとログも添付します。RSA鍵の生成方法を教えてください。 @Kan_Li ログは.cファイルにありますファイル key_generation_failed.cファイル A71CH SE050 Re: Generate Private RSA key Inside SE052 こんにちは、 @MohitGediya さん。 RSAキーを生成するにはSe05x_API_WriteRSAKey()を使用してください。サンプルコードは以下の通りです: ステータス = Se05x_API_WriteRSAKey(pSe05xSession、 (Se05xPolicy_t *)&policy_for_auth_obj、 RSA_ATTESTATION_KEY_ID、 2048年 SE05X_RSA_NO_p、 SE05X_RSA_NO_q、 SE05X_RSA_NO_dp、 SE05X_RSA_NO_dq、 SE05X_RSA_NO_qInv、 SE05X_RSA_NO_pubExp、 SE05X_RSA_NO_priv、 SE05X_RSA_NO_pubMod、 kSE05x_INS_NA、 kSE05x_キーパーツペア、 kSE05x_RSAKeyFormat_CRT); キーペアに適切なポリシーを割り当ててください。特に削除を無効化しないと、キーは削除できません。 すてきな一日を、 カン ------------------------------------------------------------------------------- 注記: この投稿があなたの質問への回答になっている場合は、「正解としてマーク」ボタンをクリックしてください。ありがとうございます! - 前回の投稿から7週間Threadをフォローしており、その後の返信は無視しています もし後で関連する質問があれば、新しいThreadを開き、閉じたThreadを参照してください。 ------------------------------------------------------------------------------- Re: Generate Private RSA key Inside SE052 MbedTLSサーバーとクライアント間のSE052 MbedTLS v.1.2ハンドシェイクによる接続について、 @Kan_Li さんに返信をお願いします。 Re: Generate Private RSA key Inside SE052 呼び出される関数の定義は最後にあり、参考のためにコメントとして記載されています。 関連付けられているキーIDに何か問題はありますか? またはAPDUコマンドヘッダー。 秘密鍵やkey_pairだけを生成することはできますか?型に関する問題はありません。 SE052の中に、どんな種類のRSA秘密鍵でもいいので入れたいんです。
View full article
[i.MX RT1186] How to achieve the exact equivalent of STM32 "DMA Circular Mode" using eDMA? Hi everyone, I am currently working on a motor control project using the i.MX RT1186. In my application, I use the eFlexPWM to trigger ADC conversions. I want to use the eDMA to continuously transfer these ADC conversion results into a ring buffer in the memory. My goal is to make the eDMA run endlessly: once the buffer is full, the eDMA pointer should automatically wrap around to the beginning of the buffer and continue overwriting the oldest data, completely without any CPU intervention. Could anyone please advise on the standard way to configure the eDMA to achieve this continuous circular behavior on the RT1186? Are there any specific SDK examples or fsl_edma API configurations you could recommend for this use case? Any code snippets or guidance would be greatly appreciated. Thank you! i.MXRT Re: [i.MX RT1186] How to achieve the exact equivalent of STM32 "DMA Circular Mode" using e Dear @guogai , Thank you for your question. Currently, there is no official example combining ADC with eDMA available for the i.MX RT1180 series in the MCUXpresso SDK. However, you may find the following resources helpful: We provide a ADC application guide , which introduces ADC configuration and usage. I believe it can give you a good understanding of how the ADC module works. For eDMA, you can refer to the following SDK demo to become familiar with the eDMA module and its usage: eDMA memory-to-memory example Based on your use case, I have the following suggestions: Use ADC continuous/circular sampling functionality (recommended) The ADC itself supports continuous conversion, and the result FIFO can store up to 16 samples. You can periodically read the FIFO and perform filtering in software. This approach is relatively simple and easier to implement. Implement DMA circular behavior manually (advanced option) If you would like to achieve behavior similar to STM32 “DMA circular mode,” you will need to configure the registers manually based on the reference manual.
View full article
SPI (Slave) + DMA data reception error When the S32K144 SPI is configured in SLAVE mode and uses DMA, data misalignment occurs during data reception (e.g., the correct sequence should be 1, 2, 3, 4, 5, 6, but the actual received data is 3, 4, 5, 6, 1, 2, indicating a misalignment). Analysis of the communication data sequence using an oscilloscope shows it is normal, and the data received by the SPI during the first communication is also normal. The current communication method is that the master and slave microcontrollers periodically trigger SPI communication. Re: SPI(Slave )+DMA 数据接收异常 IDE:S32 Design Studio for ARM Version 2.2, custom board. Re: SPI(Slave )+DMA 数据接收异常 Hi @GLB  Which software and IDE you are using? Could you please share your code and configuration so I can try to reproduce the issue on my side? Also, are you working with a custom board or an evaluation board (EVB)? BR, VaneB
View full article
[i.MX RT1186] eDMAを使用してSTM32の「DMA循環モード」と全く同じ動作を実現するにはどうすればよいですか? こんにちは、皆さん 現在、 i.MX RT1186を使ってモーター制御プロジェクトに取り組んでいます。 私のアプリケーションでは、eFlexPWMを使ってADC変換をトリガーしています。eDMAを使用して、これらのADC変換結果をメモリ内のリングバッファに継続的に転送したいと考えています。 私の目標は、eDMAを無限に実行させることです。バッファがいっぱいになったら、eDMAポインタは自動的にバッファの先頭に戻り、CPUの介入なしに最も古いデータを上書きし続ける必要があります。 RT1186でこの連続的な円形動作を実現するためにeDMAの設定の標準的な方法について、どなたかアドバイスをいただけませんか? このユースケースでおすすめできる具体的なSDKsの例やfsl_edma API構成はありますか? コードスニペットやアドバイスがあれば大変ありがたいです。 ご回答をお待ちしています。 i.MX RT Re: [i.MX RT1186] How to achieve the exact equivalent of STM32 "DMA Circular Mode" using e @guogai様、 ご質問ありがとうございます。 現在、MCUXpresso SDKの i.MX RT1180シリーズ向けにADCとeDMAを組み合わせた公式な例は存在しません。 ただし、以下の資料が役立つかもしれません。 ADCの構成と使用方法を紹介する ADCアプリケーションガイド を提供しています。ADCモジュールの仕組みを理解する手助けになると思います。 eDMAについては、以下のSDKデモを参照してeDMAモジュールとその使用方法に慣れることができます。 eDMAメモリ間での例 あなたのCASEに基づき、以下の提案があります: ADCの連続/円形サンプリング機能の使用(推奨) ADC自体は連続変換をサポートしており、結果として最大16サンプルを保存できます。定期的にFIFOを読み、ソフトウェアでフィルタリングを行うことができます。 この方法は比較的シンプルで、実施も容易です。 DMAの循環動作を手動で実装する(高度なオプション) STM32の「DMAサーキュラーモード」のような挙動を得たい場合は、リファレンスマニュアルに基づいてレジスタを手動で設定する必要があります。
View full article
IMX8MPLUS - カメラからのH.264/2656エンコードビデオストリームのビットレート変動 こんにちは、 私はカメラモジュール製品としてNXP i.MX8Mplusを使っています。私は2台のカメラを使っています。1台はUSB接続、もう1台はMIPI-CSI2インターフェース接続です。データパスは次のようになります。 センサ -> MIPI-CSI -> ISP(バイパス、DMAのみ) -> GPU(OSD) -> VPU(白エンコーダー) -> イーサネット上のRTSPストリーム。 エンコードされたビデオストリームのビットレートを4Mbpsに設定しました。パイプラインの設定は次のようになります。 gst-launch-1.0-v \ v4l2src デバイス=/dev/video2 io-mode=dmabuf !\ video/x-raw、format=NV12、width=1920、height=1080、framerate=30/1 !\ vpuenc_hevc ビットレート=4000 gop-size=60 !\ h265parse config-interval=1 !\ fakesink sync=false 問題点:お客様の報告によると、ビットレートは大きく変動し、変動は+/-50%、時にはピークが100%に達することもあります。お客様の期待値の変動は最大20%に制限しなければなりません。 どうすればこれを実現できるのでしょうか?IMX8Mplusで使っているSDKではCBRがサポートされていないのを見ました。私はYocto SDKを使っています。古い『mikeldore』ブランチです: Repo init -U https://github.com/nxp-imx/imx-manifest.git -b IMX-Linux-mickledore -m imx-6.1.55-2.2.0.xml お知らせください: 変動幅を20%に抑えることが可能であれば、その方法を教えてください。 よろしくお願いします。 パンカジ Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera i.MX95はH.264/H.265からV4L2までのエンコーダー定ビットレート制御をサポートしていますが、「定常ビットレート」は完全に固定された瞬時出力ではなくCBRターゲット制御として理解されるべきです。 Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera Yipingさん、ご返信ありがとうございます。今、これらの提案を試しています。もう一つ質問ですが、IMX95についてはどうでしょうか?IMX95のエンコーダは定常ビットレートをサポートしていますか? よろしくお願いします。 パンカジ Re: IMX8MPLUS - Bit rate variations for H.264/2656 coded Video stream from Camera はい、ばらつきを減らすことはできますが、以下の通りです: i.MX8MP VPUで±20%のビットレートを厳密に達成することは保証されません 適切なチューニングを行うことで、±50〜100%→~±20〜40%に現実的にCAN減らせます 真のCBRには以下が必要です。 v4l2ベースのエンコーダー(v4l2h264enc / v4l2h265enc) 明示的な速度制御 + QP制約   ステップ1 — V4L2エンコーダへのスイッチ(クリティカル) 交換する: vpuenc_hevc 説明: v4l2h265enc ステップ2 — リアルタイムレート制御とCBRモードを有効にする gst-launch-1.0-v \ v4l2src デバイス=/dev/video2 io-mode=dmabuf !\ video/x-raw、format=NV12、width=1920、height=1080、framerate=30/1 !\ v4l2h265enc extra-controls="encode, \ frame_level_rate_control_enable=1, \ video_bitrate_mode=1, \ video_bitrate=4000000, \ h265_min_qp=20, \ h265_max_qp=30" !\ h265parse config-interval=1 !\ fakesink sync=false ステップ3 — QP範囲の調整(最も重要) 設定 効果 ワイドQP(例:10-51) ビットレートの大きな変動 狭いQP(例:20~30) 変動が少なければ品質も低く 非常に狭い(例:24~28) 近CBR挙動 要件: 開始値:QP範囲=20~30 それでも20%を超える変動がある場合は、22~28に締め付ける。   ステップ4 — GOP / Iフレーム制御 あなたの現在の状況: gop-size=60 問題: Iフレームは大きなスパイク(ビットレートの2~5倍)を引き起こします。 gop-size=30(GOPが短い方が効果的) 緩和: または(より良い): イントラリフレッシュを有効にする(サポートされている場合) IDRの大幅な急増を避ける ステップ5 — オプションの平滑化(ネットワークレベル) エンコーダーの調整後でも、短いバーストノイズが残る場合があります。 次を追加します キュー + rtpjitterbuffer ORソケットバッファシェーピング これにより、エンコーダーが変動しても、ネットワークビットレートが安定します。
View full article
MCUからTDA8035作業フローへの移行 コミュニティの皆様へ 現在、TDA8035をMCU(NuvotonのNano120LE3BN)に統合するハードウェアを使って、コンタクトベースでスマートカードを接続しています。TDAのデータシートを確認しましたが、作業フローに関するフローチャートや図は見当たりませんでした。このような統合の動作フローチャートを誰か提供CAN? 注:コードを使ってMCUからTDAへの移行方法を研究していますが、カードは接触モードでリセットに反応しません。ワークフローの設定方法や、それをコードに適用する方法に問題があるのではないかと考えています。ワークフローは文書に基づいています。 皆様からのご連絡をお待ちしております。 Re: MCU to TDA8035 working flow こんにちは、@ldhoang1309さん パス: PN7642_MCUXpresso_SDK_02-15-006_PUB\boards\pnev7642fama\ct_examples\Ex2_Ctrdlib_ISO7816\bm Re: MCU to TDA8035 working flow 「ct_example」へのファイルやディレクトリのパスを教えていただけますか? Re: MCU to TDA8035 working flow こんにちは、@ldhoang1309さん SDK-> PN7642 MCUXpresso SDK v02.15.006 をダウンロードするには、Best-in-Class NFC Frontend with Integrated MCU |NXPセミコンダクターズ 「ct_example」という例が参考になると思います。
View full article
NFC PN7160 无法通过 I2C 反馈 I2C 地址 0x28 ACK 我买了一块 NFC PN7160 评估板和 Raspberry Pi 5;我用 Raspberry Pi 5 来驱动 PN7160。我按照NXP网站上的步骤移植了软件包。但它失败了。然后我尝试使用 Raspberry I2C 端口来命令 PN7160 从地址 0x28。我检查了波形,并确认PN7160的电源供电正常。我还使用 Raspberry Pi GPTO 24 为 PN7160 VEN 生成高-低-高脉冲以进行其余操作;但我无法获得 PN7160 从地址 ACK 反馈。你能帮我找出问题所在吗? 谢谢! 齐夫 评估板 Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C 你好 KaiLi: 非常感谢您的反馈。我第一次拿到评估板时,就是按照你分享的标准操作程序做的。 我尝试了很多次。PN7160 无法通过 ACK =Low 反馈 0x28 地址;这就是为什么我尝试仅通过 I2C 与 PN7160 通信的原因;我甚至怀疑 PN7160 可能没有被编程固件。您有什么建议吗?多谢。 Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C 你好@Ziv_Wang 我建议您参考这篇博文《将 PN7160 NCI2 协议栈移植到 Raspberry Pi 5 操作系统》(作者:Bookworm)。 构建您的设备。
View full article
MPC5644A メーカーライブラリ MPC5644A用のメーカーライブラリが必要です。 どのような手続きが必要ですか? Re: MPC5644A manufacturer library こんにちは、 はい、ご説明ありがとうございます。 この旧型デバイスに対応するライブラリは存在しません。 https://www.nxp.com/design/design-center/software/functional-safety-software/structural-core-self-test-scst-library:SCST 最も近いのはMPC564xBで、これはMPC5644Aと同じZ4コアを搭載しています。 よろしくお願いいたします。 ピーター Re: MPC5644A manufacturer library 私はMPC5644Aチップセットを使用しています。 コアテスト用のSCSTライブラリが必要です。 NXPライブチャットにお問い合わせしましたところ、NXPコミュニティに問い合わせるように言われました。 SCSTライブラリはどのように入手できますか? Re: MPC5644A manufacturer library こんにちは、 あなたが何を探しているのかよく分かりません。 もう少し詳しく説明してもらえますか? よろしくお願いいたします。 ピーター
View full article
NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C I bought a NFC PN7160 evaluation board with Raspberry Pi 5; I used Raspberry Pi 5 to drive PN7160. I followed NXP websit to porting software package. But it is failed. Then I try to use Raspberry I2C port to command PN7160 slave address 0x28. I checked the waveform and make sure the power to PN7160 are correct. I also use Raspberry Pi GPTO 24 to geerate a high-low-high pulse for PN7160 VEN for rest; I cannot get PN7160 salve address ACK feedback. could you help me to figure out what it is problem? Thanks Ziv Evaluation Board Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C Hello KaiLi:  Very thanks for your feedback. When I got the evaluation board at the first time, I followed the SOP what you shared. And I tried many times. The PN7160 cannot feedback 0x28 address by ACK =Low; that's why I try simply to communicate with PN7160 by I2C only; I even suspected that the PN7160 may not have firmware programmed into it. could you have suggestions for me? Thanks a lot. Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C Hello @Ziv_Wang  I would recommend you to follow the post Porting PN7160 NCI2 stack to Raspberry Pi 5 OS --Bookworm  to build your device.
View full article
SPI(Slave )+DMA 数据接收异常 S32K144 SPI配置为SLAVE模式并且使用DMA,接收数据会出现数据错位情况(例如正常接收应为1,2,3,4,5,6,但实际接收的数据是3,4,5,6,1,2,出现错位情况),通过示波器解析通讯数据的顺序发现是正常的,在第一次通讯时SPI接收的数据也是正常的。目前的通讯方式是,主从单片机周期触发SPI通讯。 Re: SPI(Slave )+DMA 数据接收异常 IDE:S32 Design Studio for ARM 版本 2.2,定制板。 Re: SPI(Slave )+DMA 数据接收异常 嗨@GLB 你使用的是哪款软件和集成开发环境(IDE)?能否请您分享一下您的代码和配置,以便我可以在本地重现这个问题? 另外,您使用的是定制板还是评估板(EVB)? BR,VaneB
View full article
Android OSでNXP sd8987 wifi+BTコンボモジュールを使うと、BT HFが動作しません こんにちは、 私はNXPチップsd8987(M2-JODY-W263-10C)とTI SoC am62pを使用しています。私はAndroid OSを使っています。a2dpは動作していますが、ハンズフリーは動作しません。コーデックスピーカーは1つしか持っていません。 M2-JODY-W263-10C (sd8987) モジュールのピン配置に関して、注意すべき点はありますか? よろしくお願いします。 ロシャン Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS こんにちは、 @Roshan888 Androidのバージョンを教えてもらえますか? SD8987 M2-JODY-W263-10CモジュールでSCO用のPCM/I2Sインターフェースを使いましたか? デバイスの起動時に、A2DPがコネクテッドした全てのログを教えてもらえますか?HFPが動作しませんでした。 よろしくお願いいたします。 Christine。
View full article
Understanding the PCIe M.2 Key E of iMX95EVK The i.MX95 EVK features an M.2 Key E slot, typically used for WiFi/BT combo cards. While plugging in a module is straightforward, understanding how the PCIe link actually comes up require diving into hardware signals, firmware initialization, and software enumeration.  In this blog, we will: - 1. Examine the M.2 Key E physical connector and identify PCIe signals on it. 2. Understand what those PCIe signals do and why are they needed? 3. What could be the possible routes while debugging PCIe in a system?   Introduction It is worth mentioning that M.2 Key E is not always used for PCIe. Rather it also supports other interfaces like USB 2.0, UART, SDIO. Our focus will specifically be on PCIe.  This blog assumes that you have a basic understanding of PCIe. What is PCIe? Why is it used? What is a link and lane? among other details. For the uninitiated, feel free to pause here and explore the web to get a basic understanding before eventually coming back to this blog. One of the links that prove to be resourceful yet crisp:- Microsoft PowerPoint - 03-05_-_Winkles_-_PCI_Express_Basics At this point, if you have physical access to the board, feel free to inspect and look at the M.2 Key E PCIe slot. M.2 keys are essential notches on connectors. It looks something like this: -   M.2 Key E slotM.2 Key E slot Figure-1 There are several M.2 key types that support PCIe, each designed for different use cases. Some of them are: - Slot type         Common-uses                                                Form Factor Key M :-          NVMe SSDs (supports x4)                             2280, 22110,2260,2242,2230 Key B  :-          SATA, cellular modems (supports x2)        2242,2260, 2280 Key E  :-          Wifi/BT modules (supports x1)                     2230, 1630, 3030 Key A :-           Wifi/BT (supports x2)                                    2230, 1630, 3030 These slots come in different form factors as you can see from the above list. The form factor refers to the width and length of the module. Each M.2 size uses a code that shows these dimensions. For example, “2280” means the module is 22 mm wide and 80 mm long. Similarly, "22110" means 22mm wide and 110mm long. On i.MX 95 evaluation kits and carrier boards, the M.2 Key E slot typically uses the 2230 form factor. For educational purpose we only refer to an illustration of M.2 connector from iMX95EVK schematic. Readers may obtain the schematic/design files from the NXP's official website.  The below image shows the M.2 Key E connector and the PCIe signals coming in and out of the iMX95EVK board's M.2 key E header.   M.2 Key E schematicM.2 Key E schematic Figure-2 The M.2 Key‑E slot is the Wi‑Fi/BT connector, and the PCIe-related nets exposed there include the PCIe differential data pair(s), reference clock, reset, clock request, and wake signals. M.2 Key E signals For PCIe bring‑up, the most important signals on this slot are: 1. PCIE1_TX0_P, PCIE1_TX0_N → slot PET_P0, PET_N0 Direction - Output from i.MX95 RC to Endpoint module PCIe transmit pair from host/root complex. With these signals, the root complex (i.MX95 side) transmits toward the Wi‑Fi module In the Image above that shows M.2 Key E connector, please observe that there's a capacitance of 0.22uF on each of the lines of a TX differential pair.   As per the PCIe specification, there are 3 main reasons to place coupling capacitors on the Tx lines: a. DC Isolation: - Since the differential signal is recovered by measuring the potential difference between the pairs, the AC caps remove any DC offset induced on the signal when a driver and receiver run at different voltages. This factors out any ground offset between a motherboard and a PCIe card. b. Detecting plug/unplug events: - Some PCIe endpoints are hot-swappable. The capacitors on a Tx pair allow the driver to use an RC time constant to detect the presence of a receiver at the end of a lane. c. Detecting Lane count: - In components that have multiple PCIe lanes, the plug/unplug events will occur across each lane, and the number of triggered lanes can be sensed by the PCIe-capable device. Note - The capacitors also need to pass as much signal as possible up to high frequencies, meaning they should have high enough self-resonant frequency. 2. PCIE1_RX0_P, PCIE1_RX0_N → slot PER_P0, PER_N0 Direction - Input to i.MX95 RC from module PCIe receive pair to host/root complex. With these signals, the root complex (i.MX95 side) receives from the Wi‑Fi module. TX0_P/N and RX0_P/N are the high-speed differential PCIe lane signals. These are the lines that carry: a. LTSSM training traffic b. configuration transactions c. memory reads/writes d. Interrupts as PCIe messages (MSI/MSIX) In a hardware bring-up, if these pairs are swapped or there's a missing AC coupling, the link will not train properly. As seen in Figure-2, The Key‑E connector exposes a second PCIe lane group (PET_P1/N1, PER_P1/N1, REFCLK_P1/N1, PERST1, CLKREQ1, PEWAKE1), but for a normal M.2 Wi‑Fi module usually x1 PCIe is used. 3. PCIE_WIFI_CLK_P, PCIE_WIFI_CLK_N / PCIE1_CLKIN_P, PCIE1_CLKIN_N → slot REFCLK_P0, REFCLK_N0 Direction - Clock output toward module PCIe needs a stable, low-jitter reference clock. The slot exposes REFCLK sourced from the board PCIe clock path. In PCIe, mainly there are 2 types of clocking:- a. Common reference clock - Both link partners share exact same 100MHz clock source   Figure-3Figure-3 b. Independent reference clock - Link partners using different 100MHz clock source Figure-4Figure-4 iMX95EVK by default uses Common reference clock, meaning that the host[iMX95EVK] and the PCIe endpoint connected to it would be sharing the 100MHz clock source. In the schematic image, PCIE_WIFI_CLK_P and PCIE_WIFI_CLK_N [100MHz] going towards the M.2 Key E slot are coming from the Si5332 clock generator on the board. In other words, it can be said that - the PCIe M.2 Key.E Wi-Fi module expects the iMX95EVK board to provide it the 100MHz reference clock. PCIe uses CDR (Clock Data Recovery), in which the clock is embedded in the data stream itself, not sent as a separate signal. So PCIe TX/RX pairs carry: - a. Data (encoded using 8b/10b or 128b/130b) b. Clock (embedded in signal transitions) Note: - CDR needs a reference frequency to lock onto. Both link partners must operate at the same base frequency, otherwise bit errors and even link failures can occur. Standard Ref clock used - 100MHz Differential clock (+-300ppm) Question - why not just send a separate clock signal instead of CDR? - That's because like in the older parallel buses, there would be clock skew issues at high speeds. More pins would be required. With CDR, fewer signals are used (just RX/TX pairs) and the clock travels with the data itself.   Figure-5Figure-5 The image above indicates that the PCIe link partners have PLL that uses REFCLK to generate the internal clocks. Each device uses their respective PLLs to generate higher-frequency clocks: Gen1: 2.5 GT/s (Giga-transfers/second) Gen2: 5.0 GT/s Gen3: 8.0 GT/s Gen4: 16.0 GT/s   what does it mean? - PLL uses REFCLK to generate internal clocks - A PLL is a frequency multiplier circuit that takes a low-frequency input (reference clock) and generates a higher-frequency output that's phase-locked (synchronized) to the input.   Figure-6Figure-6 Figure-7Figure-7 Figure-8Figure-8 Figure-9Figure-9 Question - Why use PLL internally instead of sending High-Frequency clock directly ? - Following are the reasons: - a. Routing a high frequency clock directly from host's main oscillator to PCIe slot would cause signal degradation, EMI and power loss. b. Difficult to route on the PCB. c. Using PLLs internally is much cheaper. d. At multi-GHz speeds, tiny deviation in clock timing can lead to data transmission errors. The PLL's loop filter continuously aligns the phase of the high-speed output signal with the reference clock.   Question - If CDR embeds clock in data transmission, then why is Reference clock provided as a separate signal?   Figure-10Figure-10 As can be seen from the above image, CDR doesn't work in isolation. It extracts clock from data, but it needs to know what frequency to look for. Without a reference clock, CDR sees transitions in data stream, but it doesn't know if it's 2.5, 5.0, 8.0GHz or some other frequency for that matter.   Imagine trying to catch a ball: Without REFCLK (no reference): - You don't know if the ball is coming at 10 mph or 100 mph Question - What would happen if the link partners have even minimal difference in reference clock? - As per the specification, small differences are tolerable (±300 ppm), but larger differences cause link failure. ±300 ppm means: 100 MHz ± 300 ppm = 100 MHz ± 0.03 MHz = 99.97 MHz to 100.03 MHz For 2.5 GHz (after ×25 multiplication): 2.5 GHz ± 300 ppm = 2.5 GHz ± 0.75 MHz = 2,499.25 MHz to 2,500.75 MHz   During link training, devices exchange training sequences: Transmitter sends: 10101010... at 2.5000 GHz Receiver expects: 10101010... at 2.5025 GHz The receiver's CDR tries to lock but phase keeps drifting. -Bit errors accumulate -Link training timeout -Link stays in "Detect" state This ultimately results in PCIe link failures.   4. PCIE1_RST_B -> slot PERST0 (active low reset) - PCIe reset Direction - Output from host to module It is PCIe reset to the endpoint. It is like host indicating to EP - "now you may start PCIe" The endpoint card should stay in reset until: 3.3V rail is valid REFCLK is stable host side PCIe controller is ready Then the host de-asserts PERST# and the endpoint begins PCIe initialization. The firmware/software driver sequencing is wrong if:   reset may be released too early endpoint may boot before clock/power are stable endpoint may remain held in reset host may start LTSSM while endpoint is still not alive And then if you go on debugging such a board, you notice reference clock and power rails are fine at the moment of probing but somehow PCIe never enumerates. So, timing of PERST# signal is of utmost importance.   Event Symptom PERST# never deasserts Card stays invisible PERST# deasserts too early Intermittent or no enumeration   5. WiFi_CLKREQ_B / PCIE1_IMX_CLKREQ_B / slot CLKREQ0 - PCIe clock request Direction - Open-drain Bi-directional In PCIe, CLKREQ# is an active-low bidirectional, open drain sideband signal which can be used by root complex and endpoint. It allows multiple devices to share a single wire. Devices can pull the CLKREQ# low to signal state changes and release it to floating state, allowing an external resistance to pull it high. Let's try to understand what open-drain bidirectional signal means:   An open-drain output can do only two things: pull the line low (drive a logic 0), or release the line and become high-impedance (Hi-Z).   It cannot actively drive the line high by itself. So, if you want the line to be high when nobody is pulling it low, you must provide a pull-up resistor to a supply rail (for example 3.3 V) Hence electrically the line becomes: -   No one pulls low --> pull-up resistor makes line HIGH Any device pulls low --> line becomes LOW   Bi-directional open-drain means: - Both connected devices: can observe/read the line state, and can also assert the line by pulling it low. So it is a shared wire where both sides participate. The circuit looks something like this: -   Figure-11Figure-11 One can observe from the above circuit diagram that the host-side PCIE1_IMX_CLKREQ_B and the module-side WiFi_CLKREQ_B are tied together through 0 Ohm links onto a single shared net. A 10K Ohms resistance to pull the line high to VDD_3V3 when nobody is driving it low. Here bi-directional means: -   the SoC side can observe the state of the shared line and can also assert it by pulling LOW, the Wi‑Fi endpoint side can also observe the same shared line and can also assert it by pulling LOW. For PCIe CLKREQ#, that means the two ends of the link (upstream port / downstream port) are connected to the same physical signal, and either side can request “clock” by pulling it low. Why is CLKREQ# used in PCIe? It is used by link partners to request reference clock for power state coordination. What this means is - with the help of this signal, power consumption can be managed by allowing either link partners to request, start or stop the 100MHz reference clock. Root complex monitors the CLKREQ# pin to detect when an endpoint is requesting a clock to wake up the link. In some SoC designs, the host can also drive this pin to control clock gating or to indicate an exit from low-power state. Endpoint pulls CLKREQ# low to request that the host resume providing the reference clock so the device can transition from a sleep state back to active data transmission. This signal is essential for the software to enable the ASPM/low-power states. If it is not routed on the board correctly: -   link may come up initially but fail in suspend/resume L1/L1SS transitions may break the module may disappear after idle periods Wi‑Fi may fail after runtime PM kicks in Question - What happens if the CLKREQ# signal was implemented as normal push-pull instead of open-drain Bi-directional signal? - one side could accidentally drive HIGH while the other drove LOW, creating contention and a direct short circuit between the power supply and ground. Open drain avoids that because nobody ever actively drives HIGH. If either side wants LOW, it simply sinks the line. Otherwise, both sides release the line, and the pull-up makes it HIGH. Question - Why active-low and why not active-high? - In a shared open-drain system, LOW is the easy state to actively assert. Open-drain hardware naturally pulls downward to ground using an NMOS / sink path, while HIGH is simply the released state created by the pull-up resistor. So active-low is the most natural form for such a signal What exactly happens on the wire in different cases ? Considering an open-drain bi-directional CLKREQ# has pull-up resistance to 3.3V  Case-A: No link partner needs the clock RC releases the line EP releases the line pull-up resistance pulls the wire HIGH results in CLKREQ#=1 de-asserted Case-B: Endpoint needs the clock endpoint pulls wire LOW host may still be released result: wire goes LOW anyway both sides read CLKREQ# = 0 (asserted) Case-C Host needs the clock host pulls wire LOW endpoint may be released result: wire goes LOW both sides see request asserted Case-D Both sides need the clock both may pull LOW simultaneously no conflict, because both are only sinking the line line stays LOW safely 6. WL_PCIE1_WAKEOUT_B / slot PEWAKE0 - PCIe wake Direction - Input to host from module It is an active-low sideband signal to wake up the host from sleep or low-power state. The hosts go to deep sleep states to conserve power. During this time, the main PCIe clock and data lanes are often completely powered down or disabled. This Wake# signal in M.2 Key E provides a direct out-of-band communication line to alert the host. The M.2 card detects an event that requires the host attention and then pulls the WAKE# low. Upon detecting this transition, the host powers up the necessary rails and re-enable the PCIe clock to fully resume the system. Some use-cases:- a. Wake on Wireless LAN - allows the host to wake up if a Wi-Fi card detects specific network traffic b. Bluetooth Device connection - allows the host to wake up when a paired Bluetooth device attempts to connect  7. M2_KE_PWREN and M2_KE_PD_B Direction - Output from PCAL IO Expander to load switch   M2_KE_PWREN - M.2 Key E Power Enable It is a board control signal used to enable power to the Key‑E slot / module power path. VCC_KE_3V3 is disabled by default to reduce transient power consumption so this control signal is used to turn that power on when the platform is ready. If M2_KE_PWREN is not asserted, the Wi‑Fi module may look completely dead even if PCIe routing is perfect, because the slot power rail may still be off M2_KE_PD_B - M.2 Key‑E Power-Down, active low if M2_KE_PD_B is driven LOW, the board is intentionally telling the module to stay in a disabled / power-down type condition, and if M2_KE_PD_B is HIGH, the module is allowed to operate normally. PD_B is different from PWREN: PWREN is about supplying / enabling slot power PD_B is about telling the module whether it should remain powered-down or active The PCAL IO Expander is controlled via I2C and used as one of the board's GPIO control. If M2_KE_PWREN is not implemented correctly, you may see: no 3.3 V at the socket no current draw from the module no PCIe enumeration If M2_KE_PD_B is incorrect, you may see: slot rail present, but module still appears dead or partially inactive no PCIe link-up even though REFCLK and PERST# seem okay confusing behavior where power looks present, but the module is effectively held off Note: - As seen in the Image, The Key‑E connector exposes a second PCIe lane group (PET_P1/N1, PER_P1/N1, REFCLK_P1/N1, PERST1, CLKREQ1, PEWAKE1), but for a normal M.2 Wi‑Fi module usually x1 PCIe is used. Debugging lens   Assuming, you have connected the PCIe M.2 Key E Wi-Fi card such as this one - AW693 on iMX95EVK. And booted it up with the latest Linux BSP. You notice that on 'lspci', there is no respective device entry for this M.2 module. There are 2 routes of debugging from this point onwards, assuming that the PCIe card is not faulty:- Hardware perspective: - Is VCC_KE_3V3 present and stable? Are the PCIe pairs routed correctly and with the intended controlled impedance? Is REFCLK present at the module? Is PERST# timing sane? Is CLKREQ# behaving or stuck? Is the module actually powered/enabled versus held in M2_KE_PD_B/power control state?  Software perspective: - Is the PCIe RC node enabled in firmware/device tree? Is the controller coming out of reset? Is LTSSM starting? Does the kernel ever detect link up? Does configuration space read succeed? Is ASPM/clock PM breaking early bring-up? So, one of the intuitive debugging steps can be: -          1. Observe link training in the software by checking: - kernel logs PCIe controller status LTSSM state if available whether device appears in config space 2. Check if the module gets 3.3V at the slot or not? 3. Check whether PERST# is initially asserted low and later released high. 4. Check whether the 100 MHz PCIe reference clock is present at the slot. 5. Observe CLKREQ# behavior before/after reset release. 6. Only after you have verified that the PCIe link is stable, move on to debug ASPM, suspend/resume or wake handling logic. There's a reason we start with checking the software first as it doesn't involve physical efforts of connecting probes to the test-points and setting up a scope for it. Debugging the software by putting logs or observing PCIe initialization in 'dmesg' is the quickest way to check what's wrong. If you do not get a clue, then you should definitely consider the hardware perspective. That's all for today. This was a rather lengthy blog but rightly so. This will help to build up an understanding of how PCIe cards work from a perspective of embedded software engineer so that we move on to understand how it is brought up via firmware/software. Feel free to DM in case of any doubts/comments. Until next time!   The i.MX95 EVK features an M.2 Key E slot, typically used for WiFi/BT combo cards. While plugging in a module is straightforward, understanding how the PCIe link actually comes up require diving into hardware signals, firmware initialization, and software enumeration.  In this blog, we will: - 1. Examine the M.2 Key E physical connector and identify PCIe signals on it. 2. Understand what those PCIe signals do and why are they needed? 3. What could be the possible routes while debugging PCIe in a system? IMX95EVK
View full article
Using S32M2 motor control examples with AMMCLIB 1.1.44 - optimal performance settings This article concerns the motor control examples for S32M2 and it is recommended to apply the following procedure to all SW examples mentioned in this article, S32M2xx - Motor control use cases, provided they are used with AMMCLIB release 1.1.44 (or later, future version). This procedure concerns S32M2 motor control examples installed by the installer version 1.2 (or earlier) and will be fixed in the next S32M2 motor control example installer release. Since AMMCLIB release 1.1.44 uses a slightly different compiler settings compared to the previous version, it is necessary to adjust the settings of the motor control example SW for optimal performance as follows: Right-click on project and choose properties Navigate to C/C++ Build, choose Settings Navigate to Standard S32DS C Linker -> Miscellaneous and add the following to Linker flags field: -fno-lto Apply and close Rebuild the project with these settings Alternatively, you can use AMMCLIB release 1.1.43 (or earlier) without the above-mentioned procedure.
View full article