Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
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 petervlna_0-1781765394629.png 最接近的是 MPC564xB,它与 MPC5644A 具有相同的 Z4 内核。 顺祝商祺! Peter Re: MPC5644A manufacturer library 我使用的是MPC5644A芯片组。 我需要一个用于核心测试的SCST库。 我联系了 NXP 在线聊天,被告知要向 NXP 社区咨询。 我如何才能获得 SCST 库? Re: MPC5644A manufacturer library 你好, 我不太清楚您在寻找什么。 您能解释得更详细些吗? 顺祝商祺! Peter Re: MPC5644A manufacturer library nfinc_0-1782107930346.png 我按下了方框内的下载按钮。 nfinc_1-1782108010952.png 然而,下载并未运行,屏幕上显示如下内容。 我该如何下载? Re: MPC5644A manufacturer library 接上一个问题 我根据你发来的图片自行查阅了 NXP 网站。 我搜索了mpc5644A,然后出现了以下页面。 https://www.nxp.com/products/MPC564xA nfinc_1-1782109037999.png 红色方框内有一个名为“Power Architecture e200 Core Self Test Software”的项目,您可以下载它。 我可以用这个对MPC5644A进行CORE测试吗? Re: MPC5644A manufacturer library 您还能回答其他问题吗?
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 KaiLi_0-1781700931206.png 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 Re: SPI(Slave )+DMA 数据接收异常 こんにちは、 @GLBさん 受信データの不整合の原因として、新しいトランザクション開始前にLPSPI RX FIFO状態とDMA RX TCD状態間の同期が不完全であることが考えられます。 最初に受信したフレームシーケンスは正確ですが、RX FIFOに保留中のデータが含まれている場合、その後の転送でシフトされる可能性があります。DMA要求を無効にし、LPSPIのFIFOをクリーンアップし、SPIとDMAステータスフラグをクリアし、RX/TX DMA TCDを読み込み直してから新しい転送を開始することができます。同様の手法は、Thread SPIスレーブDMAチップセレクトリスタートにも実装されています。S32K144デバイスに特有のものではありませんが、有用な参考資料として役立ちます。 さらに、S32K1 SDKの例lpspi_dma_s32k144も参考文献として利用できます。 Re: SPI(Slave )+DMA 数据接收异常 マスターは10ms周期でデータを送信し、スレーブも10ms周期でDMAをトリガーしてデータを転送します。この通信方法は妥当でしょうか?スレーブがDMAでデータを転送する前にFIFOをクリアしたとしても、データのずれは依然として発生する可能性がありますよね? Re: SPI(Slave )+DMA 数据接收异常 こんにちは、 @GLBさん タイミングの変動でも多少のズレが生じることがあります。両側がしっかり同期していればうまく機能するでしょう。 Re: SPI(Slave )+DMA 数据接收异常 S32K144のマニュアルを確認したところ、SPIには受信割り込みと送信割り込みしかなく、チップセレクト割り込みはなく、DMAには転送完了割り込みしかないことがわかりました。SPI受信割り込みを設定してみましたが、依然として位置ずれが発生します。SPI自体に頼るだけではこの問題を解決できないようです。SPIの正確性を確保するためには、マスターとスレーブの間に同期信号を追加する必要があると考えています。他に何かご提案はありますでしょうか?よろしくお願いいたします。
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 Re: SPI(Slave )+DMA 数据接收异常 Hi @GLB  A possible reason for the observed receive data misalignment could be an incomplete synchronization between the LPSPI RX FIFO state and the DMA RX TCD state before starting a new transaction. The first received frame sequence is correct, but subsequent transfers could become shifted if the RX FIFO still contains pending data. You can try disabling DMA requests, clean the LPSPI FIFOs, clearing SPI and DMA status flags, and reloading the RX/TX DMA TCDs before initiating a new transfer. A similar approach is implemented in the Thread SPI slave DMA chip select restart; although it is not specific to the S32K144 device, it can serve as a useful reference. Additionally, the S32K1 SDK example lpspi_dma_s32k144 can also be used as a reference. Re: SPI(Slave )+DMA 数据接收异常 Hi @GLB  Timing variations can still lead to some misalignment. It could work well as long as both sides stay tightly synchronized. Re: SPI(Slave )+DMA 数据接收异常 The master sends data at a 10ms cycle, and the slave also triggers DMA to move data at a 10ms cycle. Is this communication method reasonable? Even if the FIFO is cleared before the slave DMA moves data, data misalignment is still possible, right? Re: SPI(Slave )+DMA 数据接收异常 I checked the S32K144 manual and found that the SPI only has receive and transmit interrupts, not chip select interrupts, and the DMA only has a transfer completion interrupt. I tried configuring the SPI receive interrupt, but the misalignment still occurs. It seems that SPI itself cannot solve this problem. I think an additional synchronization signal needs to be added between the master and slave to ensure the correctness of the SPI. Do you have any other suggestions? Thank you.
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 KaiLi_0-1781700931206.png 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)。 构建您的设备。 Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C 你好@Ziv_Wang 能否分享一下 I2C(SDA 和 SCK)/VEN/IRQ 的波形? Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C 你好@Ziv_Wang 请分享 I2C(SDA 和 SCK)/VEN/IRQ 的波形以及启动日志。
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 petervlna_0-1781765394629.png 最も近いのはMPC564xBで、これはMPC5644Aと同じZ4コアを搭載しています。 よろしくお願いいたします。 ピーター Re: MPC5644A manufacturer library 私はMPC5644Aチップセットを使用しています。 コアテスト用のSCSTライブラリが必要です。 NXPライブチャットにお問い合わせしましたところ、NXPコミュニティに問い合わせるように言われました。 SCSTライブラリはどのように入手できますか? Re: MPC5644A manufacturer library こんにちは、 あなたが何を探しているのかよく分かりません。 もう少し詳しく説明してもらえますか? よろしくお願いいたします。 ピーター Re: MPC5644A manufacturer library 前の質問に続いて あなたが送ってくれた画像を参考に、自分でNXPのウェブサイトを調べてみました。 mpc5644Aで検索すると、次のページが表示されました。 https://www.nxp.com/products/MPC564xA nfinc_1-1782109037999.png 赤いボックスの中に「Power Architecture e200 Core Self Test ソフトウェア」というアイテムがあり、ダウンロードできます。 これを使ってMPC5644AのCOREテストを行えますか? Re: MPC5644A manufacturer library nfinc_0-1782107930346.png 四角の中にあるダウンロードボタンを押しました。 nfinc_1-1782108010952.png しかし、ダウンロードは実行されず、画面に表示されているとおりの状態になりました。 どうやってダウンロードできますか? 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. Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C Hello @Ziv_Wang  Could you share the waveform of I2C(SDA and SCK)/VEN/IRQ? Re: NFC PN7160 cannot feedback I2C address 0x28 ACK by I2C Hello @Ziv_Wang  Please share the waveform of I2C(SDA and SCK)/VEN/IRQ, and the log of start-up.
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 Re: SPI(Slave )+DMA 数据接收异常 嗨@GLB 观察到的接收数据错位的一个可能原因是,在开始新事务之前,LPSPI RX FIFO 状态和 DMA RX TCD 状态之间同步不完整。 接收到的第一个帧序列是正确的,但如果 RX FIFO 中仍然包含待处理的数据,则后续传输可能会发生偏移。您可以尝试禁用 DMA 请求、清理 LPSPI FIFO、清除 SPI 和 DMA 状态标志,并在启动新的传输之前重新加载 RX/TX DMA TCD。Thread SPI 从设备 DMA 片选重启中也采用了类似的方法;虽然它并非专门针对 S32K144 设备,但可以作为有用的参考。 此外,还可以使用 S32K1 SDK 示例 lpspi_dma_s32k144 作为参考。 Re: SPI(Slave )+DMA 数据接收异常 主机10ms周期发送数据,从机也是10ms周期触发dma搬运数据,我这样的通讯方式是否合理呢?即使在从机DMA搬运数据之前清空FIFO也是有可能出现数据错位的情况吧。 Re: SPI(Slave )+DMA 数据接收异常 嗨@GLB 时序上的差异仍然可能导致一些偏差。只要双方保持紧密同步,这种方式就能奏效。 Re: SPI(Slave )+DMA 数据接收异常 我看了S32K144手册SPI只有接收发送的中断,没有关于片选的中断,DMA也只有传输完成中断。尝试了配置SPI接收中断也还是会有错位的现象。感觉只靠SPI本身好像解决不了这个问题。我觉得需要在主从之间再增加一条同步信号,才能确保SPI的正确性。您这边有其他的一些建议吗,谢谢。
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。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS こんにちは、クリスティンさん。 私はPCM/I2Sピンを使用していません。ソフトウェアHFP経由UARTを使います。 私はTI am62p Soc Android バージョン16を使っています。 bluetooth_managerログを添付しました。 よろしくお願いします。 ロシャン Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS こんにちは、 @Roshan888 ダンプファイルと情報を提供していただきありがとうございます。 ダンプファイルから判断すると、RFCOMMは既に開かれており、SCOも正常に作成され、ハンドラも既に初期化されているようです。 さらにデバッグのために、以下の情報提供をいただけませんか? 1.Bluetooth HCIのスヌープログで、全プロセスを含む完全な接続、A2DPは接続されているのにHFPが動作しないプロセス? Androidでは、 HCIのスヌープログ Bluetooth in Developer Options を有効にし、Bluetoothを一度切り替えてキャプチャを開始し、その後ログをエクスポートすることで adb をキャプチャできます。 手順: 開ける 開発者向けオプション 有効にする Bluetooth HCIスヌープログ Bluetoothの切り替え 一度オンオフを繰り返して 問題の再現を試みています。 ADBコマンドを使用してログファイルを取得します。 2. ADBシェルダンプsys media.audio_policy> audio_policy.txt ADB Shell Dumpsys media.audio_flinger> audio_flinger.txt adb logcat -b all -d > logcat_log.txt (デバイスの起動時に実行)   よろしくお願いいたします。 Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS こんにちは、 @Roshan888 この問題を進めるために、リクエストされたログの提供を手伝ってもらえますか? よろしくお願いいたします。 Christine。 Re: BT HF is not working by using NXP sd8987 wifi+BT combo module in android OS こんにちは、 @Roshan888 問題は解決しましたか? まだ私たちのサポートが必要ですか? もしそうなら、この問題を進めるために求められたログの提供をご協力いただけますか? よろしくお願いいたします。 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: JoJa_0-1781701257620.png 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
关于 S32K311 的 ECU 核心配置说明 你好,@danielmartynek和团队 我们有一个关于核心配置的问题。在 S32K311(单核)上,生成的代码定义了: DET_NO_ECU_CORES = 4 NUMBER_OF_CORES = 4 鉴于我们面临内存限制: 我们可以安全地将这些简化为1吗? MCAL/DET 是否有任何副作用? 另外,有没有办法在 NXP 配置工具或其他配置中进行设置,而无需手动编辑生成的文件? 谢谢 & 问候, Yusup Khan S32K3 S32DS-ARM S32K31XEVB-Q100 Re: ECU Core Configuration Clarification on S32K311 你好,@yusupkhan241、 请参考 RTD 软件开发团队提供的以下回答: https://community.nxp.com/t5/S32K/RTD-memory-occupation/td-p/2148479 该参数无法通过配置工具进行配置,目前也没有计划支持此类功能。 此致, 丹尼尔
View full article
P1013 CPU/CCB/DDRのアンダークロックによる熱および通信安定性の向上 開発ボードには古いP1013NSE2MHBコンポーネントが搭載されています。 コンポーネントの熱負荷を軽減するためにクロック周波数を下げ、PCIeおよびSPI規格の通信クロックとしてP1013NSE2LFBコンポーネントのクロックを使用したいと考えています。これは私が最もよく知っているコンポーネントです。 要するに、P1013NSE2MHBにP1013NXE2LFBのPLLクロック設定を使用させたい、つまりP1013NSE2MHBのCPU/CCB/DDRの最終クロックレートを1067/533/533MHzにしたいのです。 AN4343のセクション6に基づくと、両方のコンポーネントは1067/533/533のクロック速度をサポートできるはずです。 私が唯一懸念しているのは、P1013NSE2MHBのCCB制限が480MHzとされている点です。これには、CCBクロック400MHzと480MHzのみが内蔵PLL設定を使用して最大1200MHzに到達できるという理由以外に、特に根拠が見当たりません。(AN4343のセクション6.2.1、表16を参照) CPUのコアクロックを1067MHzにしたいだけです。 P1013NSE2MHBとP1013NXE2LFBはどちらも全く同じラインに属しており、同じアーキテクチャを共有しているはずです。CPUの最大クロックが1200MHzに向上しても、以前に実装されたCCBアーキテクチャを使用してより低いCPUクロック速度を実現することは妨げられません。CCBバスを再設計しない限り、新しいCPUをサポートすることはできないだろう。再設計は莫大な資源の無駄遣いになるが、新しいCPUは根本的に異なるわけではない。 ご意見をお聞かせいただければ幸いです。 QorIQ P1デバイス Re: P1013 CPU/CCB/DDR Underclocking for Thermal and Communication Stability 以下のデータによると、アーキテクチャが異なる可能性があり、CPU/CCB/DDRは同じ傾向を示さない可能性があるようです。 CPU/CCB/DDR周波数(MHz)LF=1067/533/667 MH=1200/480/800 しかし、これは古いデバイスなので、説明についてはNXPの社内チームに確認する必要があるかもしれません。 Re: P1013 CPU/CCB/DDR Underclocking for Thermal and Communication Stability T2080やT2081は私が尋ねているプロセッサではありません。 P1013/P1022プロセッサを検討しています。 Re: P1013 CPU/CCB/DDR Underclocking for Thermal and Communication Stability こんにちは、 はい — ドキュメントは、CPU/コア、プラットフォーム/CCB、DDRがT2080/T2081で同じスケーリング傾向に従う必要はないというあなたの観察を裏付けています。なぜなら、それらは異なるPLLドメインで生成され、メモリバスは独自のPLLによって明示的に決定されているからです。コアおよびプラットフォームクロックは異なるPLLによって生成され、T2080/T2081のクロックマップはコアクラスターPLL、プラットフォームPLL、DDRのPLLごとに別々のステータス/制御ポイントを公開しています( Clocking_PLLCnGSR 、 Clocking_PLLPGSR 、 Clocking_PLLDGSR )。ハードウェア仕様では、メモリバスのクロック速度は独自のPLLによって決定されることも明記されています。 SO、アーキテクチャ的な説明は次の通りです: CPU/コアの周波数はコアクラスタPLLから供給され、構成に応じてPLL/1、/2、または/4で動作します。 プラットフォーム/CCB周波数は、独自の許可されたSYSCLK比率を持つ独立したプラットフォームクロックドメインです。 DDR周波数は再び独立しており、メモリバスクロックはDDRデータレートの半分で、独自のPLLによって制御される。 そのため、次のような非単調に見えるペアが存在します。 LF = 1067 / 533 / 667 MH = 1200 / 480 / 800 原理的には建築的に妥当である。3つの領域が同時に上昇したり下降したりする必要はない。しかし、利用可能なT2080/T2081資料には、その正確な2つのT2080周波数トリプレットが記録されているものは見つかりませんでした。   よろしくお願いします。
View full article
S32K344's rx interrupt can't work Hi,     I am working on S32K344's UART. We use this chip's UART0/UART1/UART8, and every UART connect to a RS485 chip and pull out A/B pin to external circuit. I connect UART1 RS485's A to UART8' RS485's A, and UART1 RS485's B to UART8' RS485's B. I set UART1 RS485's DE/RE=1, and UART8 RS485's DE/RE=0. I try to send data from UART1 to UART8, and I observe there is waveform in LPUART1_TX and LPUART8_RX in scope. That means, data has been sent from UART1 to UART8. But there is no rx interrupt in UART8, so the uart8's rx procedure can't run. During Debug, I can see the UART8 CTRL's RE=1/RIE=1 , but STAT's RDRF=0. I switch to UART8 sending and UART1's receiving, but the phenomeno is same. Could you help to check where is the problem? I attach the project. Thanks. Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO) S32K344's rx interrupt can't work Hi Julián, Thank you for your reply. Yes, other interrups, such CAN, PIT is OK. Now I comments out all code in callback(that means tx and rx interrupt won't run the rx function in callback), but the code still can't run out of the check receiver status loop and can't get RDRF flag set(see red rectangle in interrupt.png). I don't use Rx FIFO, so, when data is received, the RDRF ought to become 1. But it dosen't. I send char 'R'(ASCII=0x01010010) and 'Q'(ASCII=0x01010001) from UART1 and measure the the UART1's TXD and UART8's RXD, it seems the waveform is correct. Is there any other possible reason to cause this issue? I also attach my SDK version. Re: S32K344's rx interrupt can't work Hi @Jimmybai, I imagine other interrupts work with no issue? (PIT, CAN, etc). Are you pinning breakpoints inside the callback to confirm if interrupt is firing?  From your code, I can see you are using both Lpuart_Uart_Ip_SyncReceive & Lpuart_Uart_Ip_AsyncReceive. SyncReceive uses polling, while AsyncReceive function enables reception and immediately leaves function. The application has to get the receive status to know when the receive is complete. After receiving is completed (defined number of bytes received), you need to call AsyncReceive again to start new reception. However, inside the callback, instead of calling AsyncReceive again, use the Lpuart_Uart_Ip_SyncReceive function for blocking reception. You never re-arm UART's reception.  There are some examples in our community you can refer to:  [RTD600 IP] S32K312-EVB Lpuart interrupt echo - NXP Community Example S32K344 LPUART RX/TX ISR FreeRTOS S32DS36 RTD600 - NXP Community Best regards, Julián Re: S32K344's rx interrupt can't work I wonder why my attachment is missing. re-attach it. S32K344's LPUART rx interrupt can't work Hi Julián,       I found the root cause. In below code, the Async receive code should be put before the Async send code. Becasue uart transmit is very fast, when send complete, the data have sent to receiver bus. At this time, you start receiver recv procedure, the data signal has disappeared in bus. So, we need enable receiver, when data signal come, the receiver can work. What we only need to do is to check receiver's receive interrupt signal. Thank you for helping analysis my code. Jimmybai_0-1781766992780.png
View full article