Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
EB Tresos configuration : XRDC domain master instance, Xrdc_0_HSE_B is not available Hello, I'm migrating from RTD 4.0.0_P20 to 7.0.1 + 7.0.2_P02. I'm using EB tresos for configuration. In the RM module, I have an error in XRDC domain master instance => Domain master assignement => Xrdc Master instance  I can't choose Xrdc_0_HSE_B. As I remember without this my software stuck when using HSE jobs. what should I do ? Sophie Re: EB Tresos configuration : XRDC domain master instance, Xrdc_0_HSE_B is not available Hello @sobo, I've triggered an internal discussion regarding this configuration, as it seems a specific SBAF and HSE framework version does not need MDAC3 assignment through RTD. I will let you know as soon as I get a response. Best regards, Julián
View full article
FRDM-A-S32K358 Arduinoシールドはお持ちですか? FRDM-A-S32K358を購入しようと思っているのですが、データシートや回路図が見つかりません。Arduinoシールドが入手可能かどうか、S32k3X8EVB-Q289よりもピン数が少ないかどうか、あるいはボード自体に大きなハードウェア上の違いがあるかどうかを知りたいです。回路図は入手できないのですか?あるいはDSNファイルでしょうか? Re: Do you have the FRDM-A-S32K358 Arduino shield? S32K358のデモボードは、公式サイトに以下の3種類ありますが、どれについてお話されていますか? RD-K358BMU RD-BESSK358BMU EVBMA6X02BMU Arduinoコネクタがないようです Re: Do you have the FRDM-A-S32K358 Arduino shield? こんにちは、 1. Arduinoとの互換性 FRDM-A-S32K358は、NXPのFRDM車載エコシステムの一部であり、プロトタイプの作成の容易さを念頭に置いて設計されています。 このボードはArduino互換のヘッダーを備えているため、標準的なArduinoシールドを使用して迅速なアプリケーション開発を行うことができます。 参考までに、S32K3X8EVB-Q289評価ボードは、Arduino互換のピン配置もサポートしています。 https://www.nxp.com/design/design-center/development-boards-and-designs/S32K3X8EVB-Q289 2. ピンの利用可能性 以下の点を区別することが重要です。 MCU の機能 (S32K358 デバイス) 対 評価ボード上のアクセス可能なピン S32K358 MCUは(パッケージによって異なりますが)多数のGPIOをサポートしています。 S32K3X8EVB-Q289は、複数のコネクタと拡張インターフェースを介してMCUのピンに幅広くアクセスできる、フル機能の評価ボードです。 FRDM-A-S32K358は、設計上、コンパクトでコスト効率に優れた基板であるため、主にArduino互換ヘッダーを介して、限られた数のピンのみを露出させています。 そのため、FRDMボード上では、MCUのすべてのピンやペリフェラル信号が外部から利用できるわけではありません。 3. FRDMとEVBのハードウェアの違い この2つのボードは、それぞれ異なる用途を想定しています。 FRDM-A-S32K358 コンパクトで低コスト ラピッドプロトタイピング、ソフトウェア開発 Arduinoシールド S32K3X8EVB-Q289 総合評価プラットフォーム ハードウェアの総合的な評価と検証 Arduino + 追加のコネクタとインターフェース S32K3X8EVB-Q289は通常、より幅広い外部インターフェース、コネクタ、および測定機能を統合しているため、詳細なハードウェア評価やシステム検証に適しています。 4. 回路図および設計ファイル この製品は比較的新しいため、公開ウェブページには専用のドキュメントが見当たりません。 ページの更新を待つか、NXP.comのNXPサポートチケットを通じてリクエストしてください。 よろしくお願いいたします。 ピーター Re: Do you have the FRDM-A-S32K358 Arduino shield? こんにちは、 S32K3X8EVB-Q289 https://www.nxp.com/design/design-center/development-boards-and-designs/S32K3X8EVB-Q289 あなたが挙げたボードは、汎用的な評価ボードと同等のものではなく、バッテリー・マネジメントシステム(BMS)に特化したアプリケーション固有のリファレンス・デザインです。 上記の投稿で述べたとおりです。 よろしくお願いいたします。 ピーター
View full article
MIMX9352XVVXMACの電圧マージンに関する質問 技術コミュニティチームの皆様へ MIMX9352XVVXMACプロセッサの電源レールに関して、いくつか質問があります。現在の設計では、供給電圧がデータシートに記載されている最大動作電圧範囲をわずかに超えるシナリオが存在します。 デザインの信頼性を確保するため、以下の点についてご説明いただければ幸いです。 軽微な過電圧の影響:電源レールが最大動作限界を数ミリボルト(mV)超えた場合、デバイスにどのような潜在的なリスクや長期的な影響が生じる可能性がありますか? セーフティマージン:データシートに記載されている動作電圧範囲には、固有のセーフティマージンが含まれていますか?そうだとすれば、具体的にどのような利益率なのでしょうか? 温度依存性:これらの絶対最大値と推奨動作電圧範囲は、特に高温動作時において、温度によってどのように変化するのでしょうか? お時間とご協力に感謝いたします。ご指導をお待ちしております。 Re: Questions About Voltage Margins on MIMX9352XVVXMAC i.MXの絶対最大定格は以下のとおりです。
View full article
S32K3のデバッグに関する問題 こんにちは。S32DS3.6.7を使用してS32K324のデバッグを行っていた際、純正のJ-Linkを使用していました。V11. 次のような問題が発生しました。どうすれば解決できますか? このボードにはデバッグパスワードが設定されていないため、PEを使用して通常どおり接続およびデバッグできます。 Re: S32K3 Debug问题 こんにちは@Chenxu1 SEGGERは、IDコードダイアログ(共有画像に示されているとおり)を介した認証メカニズムを使用していることを理解しています。彼らのドキュメントによると、デバッグアクセスを有効にするには有効なキーを提供する必要がある。詳細については、リンク先の「デバッグ認証」セクションを参照してください。 この現象はSEGGERのツール特有のものであるため、SEGGERのサポートにお問い合わせいただくことをお勧めします。 ご理解いただき、ありがとうございます。 BR、VaneB
View full article
Guider Emulation Error Guider version 1.10.1 creates projects using LVGL 8.3.10 Simulation suddenly reports an error after a few new pages, what's the reason? ✓ Compilation completed! build\bin\simulator.exe mingw32-make: *** [run] Error -1073741819 Re: Guider仿真报错 There is no special operation, copy and paste all the components of the problem page to a new page and then run the new page is normal, very strange, when the problem backed up the project, if it is convenient, you can leave your e-mail address to send a copy of the problem project. It is not convenient to upload files here. It's just that this error is reported after switching to a certain page. Re: Guider仿真报错 Are there any special operations? Does it reproduce consistently every time? I just tried it on my end and it didn't reproduce your problem. Can you describe it more specifically?
View full article
S9KEAZN8 — 低功耗模式入门代码示例和睡眠时的 PWM 信号检测 我使用的是 S9KEAZN8。我想知道如何进入低功耗模式。谁能提供一个代码示例,说明如何做到这一点? 另外,我需要检测 MCU 处于低功耗模式时的 PWM 信号变化。正确的处理方法是什么? 参考手册没有代码示例。如能提供任何示例代码或指导,将不胜感激。 谢谢。 Re: S9KEAZN8 – Low power mode entry code example and PWM signal detection in sleep 你好@ssjj 您使用的是哪个集成开发环境?如果您使用的是 S32DS,则有适用于 KEA128 的示例项目。这些示例稍作修改后也可用于 KEA8。 关于进入低功耗模式,您可以通过 WFI 指令进入。具体实现可参考 pmc.c 文件,其中包括 PMC_SetMode() 等函数。   如果您有任何其他问题,请随时联系我。 BR 爱丽丝
View full article
S9KEAZN8 – Low power mode entry code example and PWM signal detection in sleep I am using S9KEAZN8. I would like to know how to enter low power mode. Could anyone provide a code example showing how to do this? Also, I need to detect PWM signal changes while the MCU is in low power mode. What would be the proper way to handle this? The Reference Manual does not have code examples. Any sample code or guidance would be appreciated. Thanks. Re: S9KEAZN8 – Low power mode entry code example and PWM signal detection in sleep Hello @ssjj  Which IDE are you using? If you are using S32DS, there are example projects available for KEA128. These examples can also be used for KEA8 with minor modifications. About enter low power mode, you can enter through the WFI instruction. For the specific implementation, you can refer to the pmc.c file, which includes functions such as PMC_SetMode().   If you have any other questions, please feel free to get back to me. BR Alice
View full article
PN7462 I2CM Configuration and EEPROM Communication Example Request Hi Team, I am trying to use the PN7462 I2C Master (I2CM) interface to communicate with an external EEPROM (24AA025UID / AT25M02). My I2CM initialization is as follows: phStatus_t I2C_Init(void) { phStatus_t status; uint8_t bBaudRate; bBaudRate = (uint8_t) ((PH_EXHIF_HW_CRYSTAL_CLK / 100000UL) - PH_EXHIF_HW_CRYSTAL_CLK_MHZ); status = phhalI2CM_Init( PH_EXHIF_HW_I2CM_TX_FIFO_THRES, PH_EXHIF_HW_I2CM_RX_FIFO_THRES, PH_EXHIF_HW_I2CM_TIMEOUT, PH_EXHIF_HW_I2CM_RETRY_CNT); if(status != PH_ERR_SUCCESS) { return status; } status = phhalI2CM_Config( 243, 0x09, E_I2CM_7BIT_ADDR_MODE); phHal_Nvic_EnableInterrupt(PH_HAL_NVIC_I2C_MASK); return status; } I am using phhalI2CM_SlaveCheck(), phhalI2CM_Transmit(), and phhalI2CM_Receive() to access the EEPROM. Could you please provide: I have initialized I2CM using phhalI2CM_Init() and phhalI2CM_Config(), and enabled the I2C interrupt. However, when I call phhalI2CM_SlaveCheck(), I get a HardFault. Could you please share: Any I2CM EEPROM read/write example project for PN7462. The recommended I2CM initialization sequence. Any required PCR/PAD configuration. Any OSAL/Event initialization required before using phhalI2CM_SlaveCheck(), phhalI2CM_Transmit(), and phhalI2CM_Receive(). Currently, transmit and slavecheck results in a HardFault, so I would like to verify that the I2CM initialization and usage sequence is correct. Thanks, Uday Re: PN7462 I2CM Configuration and EEPROM Communication Example Request Hello @uday_gowda Unfortunately, there is no specific demo for I2C EEPROM read/write. I will recommend you referring to PN7462AU_ex_phExHif demo (from latest NFC Reader Library for PN7462) for I2CM initialization and operation. For I2CM Tx tests, please comment the lines used for GPIO evaluation or sync: - src/phExHif.c -> around lines 76, 84, 94, 108 (this line is used for reception) - src/phExHif_Hw.c -> around lines 120, 126, 142 (hardcode bHifInterface), 210 (hardcode bCommChannel to 1) Also, please consider changing Optimization level to None (-O0). Regards, Eduardo. Re: PN7462 I2CM Configuration and EEPROM Communication Example Request Hello @EduardoZamora, Thank you for your response. I am using the following I2CM initialization and EEPROM read implementation, which works correctly in the PN7462AU_ex_phExHif demo project: phStatus_t I2C_Init(void) { phStatus_t status; uint8_t bBaudRate; bBaudRate = (uint8_t) ((PH_EXHIF_HW_CRYSTAL_CLK / 100000UL) - PH_EXHIF_HW_CRYSTAL_CLK_MHZ); status = phhalI2CM_Init( PH_EXHIF_HW_I2CM_TX_FIFO_THRES, PH_EXHIF_HW_I2CM_RX_FIFO_THRES, PH_EXHIF_HW_I2CM_TIMEOUT, PH_EXHIF_HW_I2CM_RETRY_CNT); if(status != PH_ERR_SUCCESS) { return status; } status = phhalI2CM_Config( 0x40, 0x09, E_I2CM_7BIT_ADDR_MODE); return status; } #define EEPROM_ADDR (0x50U) #define EEPROM_MFG_ADDR (0xFAU) #define EEPROM_DEV_ADDR (0xFBU) #define EEPROM_UID_ADDR (0xFCU) phStatus_t EEPROM_ReadUID(uint8_t uid[4]) { return EEPROM_Read( EEPROM_UID_ADDR, uid, 4); } static phStatus_t EEPROM_Read(uint8_t memAddr, uint8_t *pData, uint16_t length) { phStatus_t status; uint32_t txBuf[4]; uint32_t rxBuf[64] = {0}; txBuf[0] = memAddr; status = phhalI2CM_Transmit( EEPROM_ADDR, 1, txBuf); if(status != PH_ERR_SUCCESS) { return status; } status = phhalI2CM_Receive( EEPROM_ADDR, length, rxBuf); if(status != PH_ERR_SUCCESS) { return status; } memcpy(pData, (uint8_t *)rxBuf, length); return PH_ERR_SUCCESS; } This exact code works in the PN7462AU_ex_phExHif demo. However, when integrated into my application and also phExMain example, it causes a HardFault. Apart from commenting the GPIO evaluation/sync lines and changing the optimization level to -O0, is there any additional configuration required in phExMain and on my application for I2CM operation? Regards, Uday Gowda Re: PN7462 I2CM Configuration and EEPROM Communication Example Request Hi, We will continue the communication in your post PN7462 I2CM configuration - NXP Community. Regards, Eduardo.
View full article
iMx95 FRDM 板的内核源代码 git 链接和编译程序 我最近有了 FRDM iMX95 开发板。你能否分享编译步骤、入门指南和内核源代码 git 链接。 我们从哪里获取预构建的基础图像?请提供解决方案。谢谢。 Re: Kernel Source git link and build procedure for iMX95 FRDM board 有很多方法可以做到这一点。我会让恩智浦 SE/CAS 工程师提供他们的答案,并将其作为官方答案。 1) 如果您想要 LTS NXP 内核(稳定内核) $ git clonehttps://github.com/nxp-imx/linux-imx.git $ git checkout lf-6.18.y $ export ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- $ make imx_v8_defconfig $ make -j8 # 这将创建 Image、dtb 和模块。 2) 如果您需要尖端内核 $ git clonegit://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git # 现在从 linux-imx 树中复制 imx_v8_defconfig,并使用相同步骤获取映像、dtb 和模块。 对于预构建图像,您只需使用 IMX95 FRDM 登陆页面:https://www.nxp.com/document/guide/getting-started-with-frdm-imx95:GS-FRDM-IMX95?section=get-software。 Re: Kernel Source git link and build procedure for iMX95 FRDM board 你好。 这是我目前所在的分部。 FRDM/版本/linux-imx$ git branch -a lf-6.12.y * lf-6.18.y remotes/origin/HEAD -> origin/lf-6.12.y remotes/origin/git.kernel.org/linux-stable/linux-2.6.11.y 最后一次提交是 frdm/build/Linux-imx$ git 日志提 交 f49f45233f7b10006ce7e9c826ee882bb14ac8b5(HEAD-> lf-6.18.y,标签:lf-6.18.2-1.0.0,origin/lf-6.18.y) 作者: Laurentiu PalcuLaurentiu Palcu 日期Wed Feb 11 12:59:05 2026 +0000 MA-24383 Revert"LF-16490-3 dts: arm64: freescale:设置 Maxim CSI SerDes 的默认 FSYNC 间隔" 此操作还原了提交 ee3206dd51df41e8386c87723fb790e416cab463。 在启用 FSYNC 后,如果一个传感器的 在曝光增加后比其他传感器的帧延迟更多,则另一个 传感器的流媒体似乎无法激活。只有当 同时在所有传感器上启动时,流媒体才会运行良好。 因此,在我们找出 问题所在之前,请禁用默认 FSYNC 设置。 签署人: Laurentiu Palcu 审查人:Robert Chiras 测试者:Antoine Bouyer 收件人:Jason Liu commit 5304400e20c8036690bd7718e2d8e3ed01b23037 Author:Gaurav Jain 日期: Tue Feb 10 16:17:57 2026 +0530Tue Feb 10 16:17:57 2026 +0530 LF-17497 uio:v2x prime:添加预留内存映射 增加了对 ——从设备树中读取预留内存节点 ——为预留内存创建 map1 ——使用 mmap 在用户空间中映射的支持。 签署人:Gaurav Jain 审查人:Pankaj Gupta 收件人:Jason Liu 这是从https://github.com/nxp-imx/linux-imx克隆的,你曾提到过。 Re: Kernel Source git link and build procedure for iMX95 FRDM board 好的,我明白了使用预先刷新的二进制文件可以正常工作,但是对于由你编译的版本的代码却行不通。你需要做一个二等分。找出哪个内核是预先刷新的二进制文件,然后研究当前补丁以查看哪个是错误的补丁。 否则,是的 - 请专门为此创建另一个问题,以便适当的恩智浦支持人员处理您的问题。 Re: Kernel Source git link and build procedure for iMX95 FRDM board 您好,感谢您的回复。我已经构建并检查了启动程序。运行正常。 为了验证 ISP,我从 NXP 购买了 OS08A20 摄像头模块和套件。我能够使用预先闪存的二进制文件进行流式传输,但是如果我尝试使用替换的图像和模块在环境中进行流式传输,我将面临以下问题。我附上了 gstreamer 错误和相应的 dmesg 日志。 版本 根目录 @imx95 -15x15-lpddr4x-frdm:~# GST_DEBUG=3 gst-launch-1.0libcamerasrc camera-name="${CAMERA0} " !video/x-raw, width=3840, height=2160, format=YUY2 !队伍waylandsink 将管道设置为 PAUSED ... [0:00:44.561152921][750] INFO Camera camera_manager.cpp:340libcamera v0.0.0+6489-lf-6.18.2-1.0.0 [0:00:44.679792462][754] INFO IPAProxy ipa_proxy.cpp:180使用调整文件 /usr/share/libcamera/ipa/nxp/neo/os08a20.yaml [0:00:44.679997696][754] INFO NxpNeoIPA neo_ipa.cpp:146nxpneo: IPANxpNeo NXPNEO_IPA_v0.0.0+6489-lf-6.18.2-1.0.0 [0:00:44.681633606][754] INFO Camera camera_manager.cpp:223为管道处理程序 nxp/neo 添加摄像机 '/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36' 管道已启动,不需要 PREROLL ... 0:00:00.393998203 750 0xffffa4000dc0 FIXME default gstutils.c:4169:gst_element_decorate_stream_id_internal: 创建随机流标识,请考虑使用确定的 c 方式创建流标识 管道已 PREROLLED ... 设置管道为播放状态 ... 0:00:00.394882923 750 0xffffa4000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 R10 0:00:00.394955545 750 0xffffa4000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 R12 新时钟:GstSystemClock 0:00:00.395147188 750 0xffffa4000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_too_caps:不支持 DRM 格式 XVUY [0:00:44.685461470][756] INFO Camera camera.cpp:1215配置数据流: (0) 3840x2160-YUYV/sYCC 0:00:00.0/ 99:99:99. 预编译 根 @imx95 -15x15-lpddr4x-frdm:~# GST_DEBUG=3 gst-launch-1.0libcamerasrc camera-name="${CAMERA0} " !video/x-raw, width=3840, height=2160, format=YUY2 !队伍waylandsink 将管道设置为 PAUSED ... [0:01:11.941028172][784] INFO Camera camera_manager.cpp:340libcamera v0.0.0+6489-lf-6.18.2-1.0.0 [0:01:12.052290407][788] INFO IPAProxy ipa_proxy.cpp:180使用调整文件 /usr/share/libcamera/ipa/nxp/neo/os08a20.yaml [0:01:12.052450707][788] INFO NxpNeoIPA neo_ipa.cpp:146nxpneo: IPANxpNeo NXPNEO_IPA_v0.0.0+6489-lf-6.18.2-1.0.0 [0:01:12.053531983][788] INFO Camera camera_manager.cpp:223为管道处理程序 nxp/neo 添加摄像机"/base/soc/bus@42000000/i2c@42540000/os08a20_mipi@36" 管道已启动,不需要 PREROLL ... 0:00:00.380374002 784 0xffffa0000dc0 FIXME default gstutils.c:4169:gst_element_decorate_stream_id_internal: 创建随机流标识,请考虑使用确定的 c 方式创建流标识 管道已 PREROLLED ... 将管道设置为播放 ... 新时钟:GstSystemClock 0:00:00.381201872 784 0xffffa0000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_too_caps:不支持 DRM 格式 R10 0:00:00.381301351 784 0xffffa0000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 R12 0:00:00.381493811 784 0xffffa0000dc0 WARN default gstlibcamera-utils.cpp:369:gst_libcamera_stream_formats_to_caps:不支持 DRM 格式 XVUY [0:01:12.057204764][790] INFO Camera camera.cpp:1215configuring streams: (0) 3840x2160-YUYV/sYCC 0:00:00.525188577 784 0xffffa0000be0 WARN wlwindow gstwlwindow.c:546:gst_wl_window_new_internal:init surface_state 失败,回退到 scale=1 全屏 (1920x1048) 重新分配延迟... 失败案例的 DMESG 日志 [ 20.994118] ox05b1s 3-0036: 检测到摄像头 os08a20,芯片_id=530841 [ 40.900644] kauditd_printk_skb: 抑制了 26 个回调 [ 40.900670] audit: type=1334 audit(1781075420.425:26):prog-id=21 op=UNLOAD [ 45.294168] ox05b1s 3-0036: Failed to apply mode 3840x2160,bpp=12 [ 100.138752] ox05b1s 3-0036: Runtime PM usage count underflow! 如何解决这个问题。请帮助我,谢谢 Re: Kernel Source git link and build procedure for iMX95 FRDM board @Harish_V我认为这是另一个问题。最初的问题是关于 Linux 树的。 如果您决定创建另一个问题,请指明您的树上的确切树/最新提交、您使用的 dts 以及您添加到 dts 中的附加代码。另外,我不熟悉摄影机,所以帮不上忙。 此外,如果代码属于上游树(例如 linux-next、linux mainline),您也可以向 IMX 上游社区发送电子邮件: [email protected]
View full article
MPX5999Dセンサーの用途の問題 「こんにちは。MPX5999D製品に関するいくつかの問題について質問させてください。」 基準圧力P2はリアルタイムで読み取られるのですか、それとも電源投入時に一度だけ読み取られるのですか? 基準ポートP2の圧力が大気圧より低い場合、センサは正常に動作しますか? センサーの内部回路が校正を行う際、大気圧が校正条件として使用されますか? Re: MPX5999D传感器的应用问题 このセンサを電子圧力コントローラに使用した場合、P2 = 100 kPa のときは電子圧力コントローラは正常に動作しますが、P2 が 100 kPa から 80 kPa に低下すると、電子圧力コントローラの出力流量はゼロに近づき、設定値よりもはるかに低くなります。基準圧力が低いことがセンサの誤作動の原因になっていると推測されます。 Re: MPX5999D传感器的应用问题 こんにちは、ユウウェイさん ご質問への回答は以下のとおりです。 1.このセンサーは、ダイヤフラムの両側に加わる差圧(P1 − P2)を継続的に測定するため、P2における基準圧力は電源投入時だけでなく、リアルタイムで出力に影響を与えます。 2. はい、P1 ≥ P2 であり、規定の圧力制限が守られている限り、P2 が大気圧より低い場合でもデバイスは動作可能です。 3. いいえ、内部回路は基準となる校正条件として大気圧を使用していません。センサの内部校正は工場での工程であり、自律的な実行時ルーチンではありません。 BRs、トーマス 追記:STマイクロエレクトロニクスは、NXPのMEMSセンサ事業の買収を既に完了しています。これらのセンサの製造、サポート、およびドキュメントはすべてST社に完全に移管されました。
View full article
S32K312 CAN MB vs RxFIFO Hello, I would like to ask a few questions regarding the CAN reception mechanism on the S32K312, specifically the differences between Message Buffers (MBs) and Rx FIFO. If I configure MB0 to MB30 as receive message buffers and set them to accept all CAN messages, what happens when a new message arrives while MB0 already contains an unread message? Will the new message be automatically stored in MB1 (or the next available MB), or will it overwrite MB0 / be discarded? Is there any performance difference between using Message Buffers (MBs) and Rx FIFO for CAN reception? For example, is one method faster than the other in terms of receiving back-to-back CAN frames, or is the difference negligible? I am trying to determine which approach is more suitable for handling a high volume of CAN traffic on the S32K312. Thank you for your help. Re: S32K312 CAN MB vs RxFIFO Hi@lua40927 1.Yes — if you configure multiple RX message buffers with the same acceptance criteria, FlexCAN does not simply overwrite MB0 immediately. With the normal matching behavior, it scans RX MBs from low number to high number, and if the first matching MB is not “free-to-receive,” it keeps looking for another matching MB that is free. So if MB0 already contains an unread matching frame, the next matching frame can be stored in MB1, then MB2, and so on, as long as those MBs are also matching and free. If no matching/free MB remains, FlexCAN overwrites the last matched MB and sets its CODE to OVERRUN .  2.No such info available. I can give you some experience summaries and comparisons. If your priority is strict receive order + simpler draining logic , FIFO is better aligned to that use case because it is a true ordered queue with internal pointer handling., If your priority is maximum buffering depth using many RX slots for Classic CAN traffic, dedicating many MBs to reception can give you much more room than the six-deep legacy FIFO, at the cost of more software management and possible reordering by timestamp.,, If you want DMA-based reception , the available S32K material says DMA is supported for RX FIFO, not MBs. Specifically, an S32K support answer states “DMA is supported only over RXFIFOs (legacy or enhanced) no over MBs.” On S32K312,  Enhanced Rx FIFO is available only on FlexCAN0 and that legacy and enhanced FIFO cannot be enabled at the same time. Note: We recommend using your company email to register your NXP account, as general email addresses offer limited technical support. Re: S32K312 CAN MB vs RxFIFO Okay, thank you very much for your suggestion. I will try using the company email address next time.
View full article
Basic SPI Communication with NXP MCX Microcontrollers and SDK: SPI's Four Modes and Actual Signal Verification (Japanese Blog) Introduction In the previous installment, as the first part of our exploration of SPI communication, we used two FRDM boards to run a sample SPI communication application. Basic SPI communication using NXP's MCX microcontroller and SDK: Practical testing with two connected units (Japanese blog) This time, we will try changing the settings for four different SPI modes and check the actual SPI signals that are sent and received. This article assumes that you have completed the steps in the following [Part 1] article. [Part 1] Let's run a sample application for SPI communication. [Part 2] We will observe the actual SPI signals while changing the SPI mode and see how they change. (Estimated time: 20 minutes) *Assumes that the content of the first part (MCUXpresso for VSC, SDK installed, and SPI application operation confirmed) has been completed. table of contents Things to prepare SPI mode Check the CPOL and CPHA settings (Where are they configured in the sample code?) Actually verifying the SPI signal Measurement results of signals in each SPI mode In conclusion 1. Things to prepare hardware FRDM-MCXN947 (USB cable included) x 2 • Jumper wires: Multiple wires • Logic analyzer (for SPI signal analysis) software SDK for FRDM-MCXN947 * SDK for MCX N947 (ver. This explanation assumes that version 26.3.0) has been installed in VS Code. For instructions on setting up the development environment (MCUXpresso for VSC) and installing the SDK, please refer to the following article. Article: Installing MCUXpresso for VSC and SDK (Japanese Blog)   2. SPI mode The article "SPI Bus Overview" (Japanese blog) explains that there are a total of four modes, based on the combinations of CPOL = 0 or 1 and CPHA = 0 or 1. CPOL (Clock Polarity) : This setting determines which voltage level the clock line (SCLK) is at during "idle time" (when no communication is taking place). CPOL=0: Low during idle CPOL=1: High during idle CPHA (Clock Phase) : Sets whether the data transmission and latch (sampling) timing are aligned with the clock edge (rising or falling edge). CPHA=0: Data is sampled on the first clock edge, and output on the second. CPHA=1: Output data on the first clock edge, sample data on the second. Table 1: Four modes and CPOL, CPHA   CPOL CPHA mode=0 0 0 mode=1 0 1 mode=2 1 0 mode=3 1 1   Figure 1: Behavior based on CPOL and CPHA settings   3. Check the CPOL and CPHA settings (Where are they configured in the sample code?) First, before examining the waveforms, I built and ran the SPI communication sample application from last time using its default settings. I will now check the default CPOL and CPHA settings. CPOL and CPHA are defined in fsl_lspi.h . Figure 2. Definitions of CPOL and CPHA ( fsl_lspi.h ) Next, the SPI initialization was performed within LPSPI_MasterGetDefaultConfig() in fsl_lpspi.c . In the red box in the diagram below, we can see that CPOL=0 and CPHA=0 are set on the controller (master) side. The same file also contains the device (slave) side settings LPSPI_SlaveGetDefaultConfig() , so we will test by changing the CPOL and CPHA parameters in both the master and slave sides. Figure 3 Master side setting location LPSPI_MasterGetDefaultConfig()   Figure 4. Slave-side configuration location: LPSPI_SlaveGetDefaultConfig()   4. Actually verify the SPI signal. Now, referring to the "previous article," connect the two FRDM boards to your PC , open two serial monitors , and verify that the sample applications on each board are running . Figure 5 SPI communication results on the serial monitor In this state, connect the SPI terminals of the two FRDM boards. *Please note that if you connect the wires first and then power on the FRDM board, it may not function correctly. This is the same content as the previous article, but if you look at the circuit diagram of the FRDM-MCXN947, you will see that #8 of the J2 connector is MOSI and #10 is MISO. Figure 6 SPI circuit diagram of FRDM-MCXN947 Connect the J2 connectors on the FRDM-MCXN947 with jumper wires as shown below. *Please connect pins #6 and #8 of J2 in a crossed manner. Table 2 SPI connection between FRDM-MCXN947 LPSPI_master LPSPI_slave J2-14: GND J2-14: GND J2-12: CLK J2-12: CLK J2-6: SOUT(MOSI) J2-8: SIN(MISO) J2-8: SIN(MISO) J2-6: SOUT(MOSI) J2-6: SS(PCS) J2-6: SS(PCS) These are the terminals corresponding to D10, D11, D12, and D13, which are typically used for SPI on Arduino shield sockets. Figure 7 SPI Connection Diagram *This time, we will connect a logic analyzer to check the signal between the Master and Slave. Now, let's actually send and receive SPI signals to check if the logic analyzer is working correctly. Figure 8 shows the results of SPI data transmission and reception displayed on the serial monitor.   Figure 9 shows the results of displaying SPI data transmission and reception using a logic analyzer. Although the text in the image above is small, we were able to confirm that both transmission and reception were working correctly from the Master's perspective. Looking at the transmission section (upper half of the image above), we can see that MOSI (Master Out Slave In) is incrementing, while MISO (Master In Slave Out) remains "High (=hFF)". Conversely, looking at the reception section (lower half of the image above), MOSI is fixed at "High (=hFF)", while MISO is incrementing. This is the correct behavior, as explained in the SPI bus overview (Japanese blog) , the MOSI and MISO outputs are in a high-impedance state when not transferring data. Now let's look at some actual signals. 5. Measurement results of signals in each SPI mode From here, referring to section 3, "Checking CPOL and CPHA settings (Where are they set in the sample code?)" , we performed the following steps on both the master and slave: "Change the CPOL and CPHA values → Build → Write" and then conducted measurements. SPI Mode 0: SPI signal with CPOL=0, CPHA=0 (default setting) Figure 10: Data transmission waveform from Master to Slave when CPOL=0 and CPHA=0. As can be seen in Figure 10, the clock (CLK) is low before data is transferred (idle) (orange box in the figure) , so we can see that POL = 0 . Furthermore, the MOSI data is latched on the rising edge of the first CLK (red line in the figure) , and the MOSI data is changed on the falling edge of the second CLK (green line in the figure) , so we can see that CPHA = 0 . SPI Mode 1: SPI signal with CPOL=0, CPHA=1 Figure 11: Data transmission waveform from Master to Slave when CPOL=0 and CPHA=1. As can be seen in Figure 11 , CLK is low before data is transferred (idle) (orange box in the figure) , so we can see that POL = 0 . In this case, the MOSI data is changed on the rising edge of the first CLK (green line in the figure) , and the MOSI data is latched on the falling edge of the second CLK (red line in the figure) , so we can see that CPHA = 1 . SPI Mode 2: SPI signal with CPOL=1, CPHA=0 Figure 12: Data transmission waveform from Master to Slave when CPOL=1 and CPHA=0. As can be seen in Figure 12 , CLK is high before data is transferred (idle) (orange box in the figure) , so we can see that POL=1 . Furthermore, the MOSI data is latched on the falling edge of the first CLK (red line in the figure) , and the MOSI data is changed on the rising edge of the second CLK (green line in the figure) , so we can see that CPHA = 0 . *The clock polarity has changed, so be careful not to confuse the first and second clock signals. SPI Mode 3: SPI signal with CPOL=1, CPHA=1 Figure 13: Data transmission waveform from Master to Slave when CPOL=1 and CPHA=1. As can be seen in Figure 13 , CLK is high before data is transferred (idle) (orange box in the figure) , so we can see that POL=1 . Furthermore, the MOSI data is changed on the falling edge of the first CLK (green line in the figure) , and the MOSI data is latched on the rising edge of the second CLK (red line in the figure) , so we can see that CPHA = 1 . To summarize the measurement results from this time, they are as follows (Table 3). Table 3: Summary of the relationship between the four modes and CPOL and CPHA SPI mode CPOL CPHA CLK during idle First clock Second CLK mode=0 0 0 Low Data latches at the rising edge. Change the data on the falling edge. mode=1 0 1 Low Change data at the rising edge. Latch data at the falling edge. mode=2 1 0 High Latch data at the falling edge. Data latches at the rising edge. mode=3 1 1 High Change the data on the falling edge. Data latches at the rising edge. 6. Conclusion I actually measured the signals in four different SPI modes, changing CPOL and CPHA. I got confused when the polarity and phase changed while I was taking the measurements myself, but I was able to confirm that it worked as expected. When learning the basics, it might be helpful to not only change the program, build it, and confirm that it works, but also to actually look at the signals to improve your understanding. I encourage you all to try it. Reference Information (Part 1) Basics of SPI communication using NXP's MCX microcontroller and SDK: Actual device testing with two connected units (Japanese blog) NXP Interface Products - Summary Page (Japanese Blog) Overview of the SPI bus (Japanese blog) NXP System Management I²C, I3C, SPI Selector Guide =========================​ We are currently unable to respond to comments left in the " Comment " section of this post . We apologize for the inconvenience, but please refer to " Technical Questions to NXP - How to Contact Us( Japanese Blog) " when making inquiries.(If you are already an NXP distributor or have a relationship with NXP, you may ask your representative directly.) In the previous installment, as the first part of our exploration of SPI communication, we used two FRDM boards to run a sample SPI communication application. Basic SPI communication using NXP's MCX microcontroller and SDK: Practical testing with two connected units (Japanese blog) This time, we will try changing the settings for four different SPI modes and check the actual SPI signals that are sent and received. This article assumes that you have completed the steps in the following [Part 1] article. [Part 1] Let's run a sample application for SPI communication. [Part 2] We will observe the actual SPI signals while changing the SPI mode and see how they change. (Estimated time: 20 minutes) *Assumes that the content of the first part (MCUXpresso for VSC, SDK installed, and SPI application operation confirmed) has been completed. Interface MCUXpresso MCUXpresso SDK MCX Japanese Blog
View full article
pci-imx6 如何在重启期间完全重置 你好 我在我们的板上注意到了这一点,它正在运行 自从切换到 Yocto Scarthgap 以来 ,是 i.mx8M Plus,出现 “Phy 链接从未出现过” 错误 我重启时的 PCIe < /SPAN > 设备。但是 ,如果我在关机时将其完全关闭,我没有这个问题。 除非有人已经为我提供了可行的解决方案,否则我会尝试改编 pci-imx6,因为我看到它在 Yocto Kirkstone 之后已经发生了根本性的变化。由于我不知道是否有可能实现反向移植,我宁愿尝试继续使用当前版本。因此,问题是:如何在软件方面在i.MX8M Plus中实现热启动?我可能需要设置一些东西才能让 PCI 完全 RESET 吗?在这种情况下,我可以在测试期间初始化之前强制完全 RESET。 致以最崇高的敬意 拉尔夫 Re: pci-imx6 how to reset completely during reboot 感谢您的快速回复。 旧内核版本为 5.15.71。 新内核版本为 6.6.23。 需要注意的一件事是,并非所有设备(相同型号)都会发生这种情况。我在现场的所有设备都运行正常。但是,我的同事使用的设备型号与发生这种情况的设备完全相同。他们的设备上都安装了相同的 rauc 包/镜像。我今天可能会在办公桌上收到其中一台出现故障的设备。然后,我将立即发布所要求的输出结果。 附注顺便说一句,我们使用的 WiFi 芯片与我在你的 lspci 输出中看到的一样。这是配备 88w8997 芯片组的村田 1YM 模块。 致以最崇高的敬意, R. Re: pci-imx6 how to reset completely during reboot 你好@rrd 您的内核版本是什么?我已经在装有 pcie Wifi-BT 卡的 i, MX8MP EVK 板上测试了你的场景。当我使用 " reboot " 命令重启板时,没有出现任何问题。请共享您的日志文件。你是如何RESET你的板的? B.R Re: pci-imx6 how to reset completely during reboot 您好,感谢您的回复。 我只是不明白为什么它能在内核 5.15.71 中运行。我对 pci(e) 不太熟悉。 问题更可能是由通过 PCIe 控制的 WiFi 卡造成的,还是由 PCIe 本身造成的? 我们必须想办法控制住这个问题...我以前从未见过这种情况,无论是 Windows 还是 Linux,我都不得不完全关闭操作系统,以便下次启动时硬件能正常工作。 您能给我一些更详细的说明,告诉我如何解决问题吗? 非常感谢。 拉尔夫 Re: pci-imx6 how to reset completely during reboot 你好@rrd 我们的 pcie 设备不支持热RESET。只有冷RESET才能重新枚举 PCIe 设备。这就是为什么你说"如果我用关闭电源完全关闭它,就不会有这个问题" EP 和 RC 都需要关闭电源。接通 EP 电源,然后接通 RC 电源。 B.R
View full article
Qemu上でi.MX8MPEVKのCortex-M7非対称マルチプロセッシングブートサポートを有効にする 今回の短いブログ記事では、Qemuにおいて、i.MX8MP SoCデバイスモデルのCortex-M7コア向けに非対称マルチプロセッシング(AMP)ブートサポートを有効にする方法について説明します。M7ファームウェアは、リモートプロシージャフレームワークを介して、Cortex-A53コア上で動作するLinuxからロードおよび起動できます。 非対称マルチプロセッシング(AMP)ブート AMPとは何か疑問に思っている方へ: これは、異なるプロセッサコアがそれぞれ異なるオペレーティングシステムまたはアプリケーションを独立して実行するブート構成を指します。 i.MX8M Plusには以下のものが含まれています。 Cortex-A53コア×4(Linux/Androidを実行するアプリケーションプロセッサ) Cortex-M7コア×1(RTOS/ベアメタル向けリアルタイムプロセッサ) AMPモードでは、起動シーケンスは通常次のように動作します。 プライマリブート:Cortex-A53コアが最初に起動します(U-Bootが実行され、その後Linuxが起動します)。 セカンダリブート:Cortex-M7はLinuxまたはU-Bootによってロードされ、起動されます。 iMX8MP上のCortex-M7には2つの制御パスがあります。 ファームウェアによる制御(SMC/ATF経由) MMIO駆動パス(SRCおよびGPRアクセス経由) Linux の「fsl,imx8mp-cm7-mmio」は、MMIO パスを選択し、qemu で保証されていないファームウェア インターフェースへの依存を回避するために特別に存在します。 このモードでは、起動/停止制御にSRC sysconブロックとIOMUXC GPRを使用します。 リソーステーブル、vrings のメモリ領域は「 imx8mp-evk-rpmsg.dts」で指定する必要があります。 必要な変更を行うには、こちらのアプリケーションノートを参照してください - https://www.nxp.com/docs/en/application-note/AN5317.pdf Linuxがremoteproc経由でCM7を起動する場合、一般的な流れは次のとおりです。 imx8mp-evk-rpmsg.dtbを使用してLinuxが起動しました。 LinuxはCM7 ELFを予約済みのDDR領域にロードする LinuxはCM7の起動/停止制御(SRC/GPR CPUWAITなど)を切り替えます。 CM7はDDRエントリから実行を開始します 添付のパッチシリーズでは、AMPに必要な以下のペリフェラルモデルを紹介します。   - GPC(汎用電源コントローラ) - GPR(汎用レジスタ) - SRC(システムリセットコントローラー) - MU(メッセージングユニット) - CCMをM7クロック出力で拡張し、i.MX8MP SoCに接続します。 - i.MX8MP EVK機能テストでCortex-M7ブートを有効にする //パッチの適用方法:- 1.qemuリポジトリのマスターブランチを取得し、このブログに添付されているパッチを適用してください。 2. パッチ適用後にqemuをビルドします。ビルド手順はリポジトリのREADMEファイルに記載されています。 https://github.com/qemu/QEMU // Cortex-A53上のLinuxからCortex-M7のAMPブートをテストする 前提条件:- a. iMX8QXPのMCUXpresso SDKからベアメタルM7 elfを構築します。必ずこのビルドスクリプト( build_ddr_release.sh )を使用してください。 デモンストレーションには、この例を使用します - boards/evkmimx8mp/driver_examples/uart/polling あなたはエルフを手に入れるでしょう。 b. imx8mp-evk-rpmsg.dtb は AN5317 の助けを借りて作成されました。 iMX8MPカーネルを~/qemu-emulation/iMX8MP/にコピーします。 imx8mp-evk-rpmsg.dtb を同じ場所にコピーしてください。 i.MXプラットフォーム向けBuildroot 2024.02リリース からimx8mpの.imgをダウンロードしてください | Ezurio テスト:- qemuのビルドフォルダから以下のコマンドを実行してください。./qemu-system-aarch64 -M imx8mp-evk -smp 4,maxcpus=5 -global fsl-imx8mp.enable-cm7=on -m 3G -display none -serial null -serial stdio -serial null -serial pty:/tmp/imx8mp-uart -kernel ~/qemu-emulation/iMX8MP/Image -dtb ~/qemu-emulation/iMX8MP/imx8mp-evk-rpmsg.dtb -append "root=/dev/mmcblk2p1" -drive file=~/qemu-emulation/iMX8MP/20240522-br2024.02-nitrogen8mp_qt5_gst1.img,if=sd,bus=2,format=raw,id=mmcblk2 -net nic,model=imx.enet -net user,hostfwd=tcp::2222-:22       次に、別のCLIタブで、M7コンソールを開くために「screen /tmp/imx8mp-uart 115200」を実行します。空の画面が開きます。 Linuxゲストが実行されているコンソールで、以下を実行します。   これを実行するとすぐに、別のタブでM7バイナリの実行が開始されたことが確認できます。   この短いブログ記事では、非対称マルチプロセッシング(AMP)ブートサポートを有効化します。 Qemuにおけるi.MX8MP SoCデバイスモデルのCortex-M7コア。M7ファームウェアをロードできます そして、リモートプロシージャフレームワークを介して、Cortex-A53コア上で動作するLinuxから開始されました。 IMX8MPLUSEVK
View full article
LLM Edge 工作室 LLM Edge 工作室 在本篇文章中,我将与大家分享LLM Edge Studio 的快速演示。LLM Edge Studio 是一款恩智浦启动器应用程序,用于测试在 i.MX 平台上本地运行的、支持Ara240 DNPU 加速的大型语言模型。 LLM Edge Studio 提供了一个简单的图形用户界面,用于选择模型、加载模型、输入提示以及直接在边缘与 LLM 交互。它通过eIQ AAF 连接器与Ara240 Runtime SDK通信,使用基于 REST 的接口进行提示提交和令牌流响应。   主要功能 在支持的 i.MX 平台上进行本地 LLM 推断 Ara240 DNPU 加速 基于图形用户界面的模型选择和提示输入 流式令牌输出 与 eIQ AAF 连接器和 Ara240 Runtime SDK 集成 支持预建的 Debian 软件包安装或从源代码构建   支持的机型 Qwen2.5-coder-1.5B Qwen2.5-7B-Instruct 这些模型以兼容 Ara240 的 model.dvm 文件提供,用于在目标平台上本地执行。   基本安装 确保 Ara240 运行时 SDK 已安装在目标板上后,复制 Debian 软件包: scp llm-edge-studio.deb root@ : 用以下工具安装 dpkg -i llm-edge-studio.deb 安装可能需要几分钟时间,因为所需的模型会在安装过程中下载。   运行 LLM Edge Studio 启动应用程序: run_llm_edge_studio 启动前,请确保 Ara240 运行服务正在运行: systemctl status rt-sdk-ara2.service --no-pager -l 一旦图形用户界面出现,点击 "加载"(LOAD)即可加载所选模型。模型准备就绪后,输入提示并提交,即可开始与 LLM 互动。   演示视频 在随附的视频中,我展示了如何启动LLM Edge Studio、加载支持的模型、提交提示以及查看在带有Ara240 DNPU加速的i.MX平台上本地运行的生成的响应。 (function() { var wrapper = document.getElementById('lia-vid-6396693184112w960h540r329'); var videoEl = wrapper ? wrapper.querySelector('video-js') : null; if (videoEl) { if (window.videojs) { window.videojs(videoEl).ready(function() { this.on('loadedmetadata', function() { this.el().querySelectorAll('.vjs-load-progress div[data-start]').forEach(function(bar) { bar.setAttribute('role', 'presentation'); bar.setAttribute('aria-hidden', 'true'); }); }); }); } }})(); (在我的视频中查看)   摘要 LLM Edge Studio 是一款有用的工具,用于在使用 Ara240 DNPU 加速的恩智浦 i.MX 平台上快速评估本地 LLM 推断。它提供了一个简单的工作流程,可直接在边缘进行模型加载、及时测试和观察标记流。 链接 LLM Edge Studio 存储库: https://github.com/nxp-imx-support/llm-edge-studio ARA2-M2-16G-GT ARA240 实践培训
View full article
用于 MCXW71 的 PN7160 NXP-NCI 2.0 SPI 示例迁移指南 本文章将介绍如何使用 SPI 接口将 NXP NCI 2.0 NFC 库中的示例项目移植到 MCXW71 Wireless MCU,以便与 PN7160 SPI EVK 通信。 要使用本指南,请使用以下环境: MCUXpresso IDE 25.06.136. FRDM-MCXW71 SDK v25.12.00(MCUXpresso IDE 的最新版本)。 FRDM-MCXW71。 OM27160B1(PN7160 SPI EVK)。 硬件设置。 MCXW71 作为 OM27160B1 板符合 Arduino 接头标准,因此您可以直接将子卡连接到 FRDM-MCXW71 上,因为两者的引脚连接相匹配,这样设备之间就可以轻松连接。考虑到这种设置迫使我们使用 MCXW71 的 LPSPI1 实例,可以使用其他实例,但我们无法直接连接主板,而是需要使用跳线进行连接。 下载基本项目并为 MCXW71 移植进行调整。 要开始移植工作,请从本页下载 NXP-NCI 示例项目。这个压缩文件包含不同板的基础项目,这将允许我们进行必要的修改以增加对 MCXW71 的支持。下载完成后,将 SW6705 文件解压缩到已知路径(如下载文件夹)中,以便稍后将项目导入集成开发环境。解压缩后的文件夹应包含一个.zip 文件。文件,其中包含我们稍后将导入到集成开发环境的示例。 从SDK Builder 页面下载 FRDM-MCXW71 的 SDK,确保选择 25.12.00 版本,因为它是可在 MCUXpresso IDE 中使用的最新 SDK。 现在我们必须将之前提取的 nxp-nci2.0_mcuxpresso_examples.zip 文件导入到 IDE 的工作区,为此,单击 “ 从文件系统导入项目”,然后在 “项目存档 (zip)” 选项卡中,浏览步骤 1 中提取的文件 (nxp-NCI2.0_mcuxpress o_examples.zip) ,然后单击 Next > 注意: 如果 IDE 因为没有默认板(imxRT1170、LPC55s6x、LPC82x)的软件开发工具包或者版本不同而显示错误信息,请不要担心,关闭警告消息,我们只需要这些示例来复制 NCI 库和示例文件。 您的工作区现在应该如下图所示: 从 FRDM-MCXW71 SDK 中导入hello_world示例: 右键单击项目,将 SPI 驱动程序添加到导入的项目中,将光标悬停在 SDK 管理选项上,然后选择 “管理 SDK 元器件” 选项: 选择驱动程序,单击 “确定”,如果要求您刷新文件,则接受该驱动程序,之后您应该能够在 " 驱动程序中看到该驱动程序项目的 " 文件夹。 复制 iMXRT1170 项目源文件夹和 NfcLibrary 文件夹的内容,并将其粘贴到导入的hello_world项目中: 确保删除hello_world.c和hello_word.mex文件,因为我们不会再用到它们。 完成此过程后,您的项目应如下图所示: 为避免编译问题,请从版本文件中排除 nfc_example_P2P.c和nfc_example_RW.c、要执行此操作,请右键单击该文件,转到 “资源配置”,选择 “从版本中排除...”,然后选择所有配置。对每个文件都这样做。 添加预处理器宏:BOARD_NXPNCI_INTERFACE_SPI,因为示例使用该宏来选择与主板的接口。为此,请右键单击该项目并选择 “属性”,然后下拉 “C/C++ 构建” 选项并转到 “设置” 选项卡。在此,在预处理器选项中添加宏,点击应用并接受索引重建。 在 C/C++ 常规 > 路径和符号 > 源位置选项卡中添加根文件夹,单击 “确定”,然后单击 “应用”: 仍在 “路径和符号” 中,转到 “包含” 选项卡并添加工作空间中的源、TML 和工具文件夹,单击 “确定” 和 “应用”。确保逐一添加。 现在,转到 C/C++ 版本 > Settings > Includes 并从 Workspace 添加以下文件夹。您可以同时选择并添加它们,也可以逐个添加。完成后,点击 "应用"和 "应用并关闭"。如果要求您重建索引,请执行。 "${workspace_loc:/${ProjName}/source/TML}" "${workspace_loc:/${ProjName}/source/tool}" "${workspace_loc:/${ProjName}/NfcLibrary}" "${workspace_loc:/${ProjName}/NfcLibrary/inc}" "${workspace_loc:/${ProjName}/NfcLibrary/NdefLibrary}" "${workspace_loc:/${ProjName}/NfcLibrary/NdefLibrary/inc}" "${workspace_loc:/${ProjName}/NfcLibrary/NdefLibrary/src}" "${workspace_loc:/${ProjName}/NfcLibrary/NxpNci20}" "${workspace_loc:/${ProjName}/NfcLibrary/NxpNci20/inc}" "${workspace_loc:/${ProjName}/NfcLibrary/NxpNci20/src}" 源代码更改。 在看板文件夹中,打开 board.h文件,并添加以下定义,以指代要使用的外设和时钟。请注意,您可以更改 LPSPI 实例,但是您需要连接跳线,而不是通过 FRDM 直接连接子卡。 #ifdef BOARD_NXPNCI_INTERFACE_SPI #define BOARD_NXPNCI_SPI_CLOCK (CLOCK_GetIpFreq(kCLOCK_Lpspi1)) #define BOARD_NXPNCI_SPI_INSTANCE (LPSPI1) #define BOARD_NXPNCI_SPI_BAUDRATE (400000) #endif #define BOARD_NXPNCI_IRQ_PORT (GPIOC) // J2.10 - GPIO0 [PN7160] - IRQ -> J2.10 GPIOC0 [MCXW71] #define BOARD_NXPNCI_VEN_PORT (GPIOA) // J4.1 - GPIO1 [PN7160] - VEN -> J1.8 GPIOA21 [MCXW71] #define BOARD_NXPNCI_DWL_PORT (GPIOA) // J4.2 - GPIO2 [PN7160] - REQ -> J1.7 GPIOA20 [MCXW71] #define BOARD_NXPNCI_IRQ_PIN (0U) #define BOARD_NXPNCI_VEN_PIN (21U) #define BOARD_NXPNCI_DWL_PIN (20U) 现在我们需要为我们的主板添加所需的时钟、外设和引脚初始化。为此,请转到hardware_init.c将文件存入板文件夹,然后使用以下内容覆盖 BOARD_InitHardware 函数: void BOARD_InitHardware(void) { BOARD_InitPins(); BOARD_BootClockRUN(); BOARD_InitDebugConsole(); CLOCK_SetIpSrc(kCLOCK_Lpspi1, kCLOCK_IpSrcFro192M); CLOCK_SetIpSrcDiv(kCLOCK_Lpspi1, kSCG_SysClkDivBy16); } 要为 SPI 和 GPIO 引脚添加正确的引脚复用和配置,请转到pin_mux.c文件(也在看板文件夹中),然后用以下内容覆盖 board_initPin s 函数: void BOARD_InitPins(void) { /* Clock Configuration: Peripheral clocks are enabled; module does not stall low power mode entry */ CLOCK_EnableClock(kCLOCK_GpioA); CLOCK_EnableClock(kCLOCK_GpioC); CLOCK_EnableClock(kCLOCK_PortA); CLOCK_EnableClock(kCLOCK_PortB); CLOCK_EnableClock(kCLOCK_PortC); /*IF SHORTING SH11, SH12, SH13, SH14 needed for LPSPI1*/ const port_pin_config_t portb0_pin46_config = {/* Internal pull-up resistor is enabled */ (uint16_t)kPORT_PullUp, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPSPI0_PCS0 */ (uint16_t)kPORT_MuxAlt2, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTB0 (pin 46) is configured as LPSPI1_PCS0 */ PORT_SetPinConfig(PORTB, 0U, &portb0_pin46_config); const port_pin_config_t portb1_pin47_config = {/* Internal pull-up resistor is enabled */ (uint16_t)kPORT_PullUp, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPSPI0_SIN */ (uint16_t)kPORT_MuxAlt2, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTB1 (pin 47) is configured as LPSPI1_SIN */ PORT_SetPinConfig(PORTB, 1U, &portb1_pin47_config); const port_pin_config_t portb3_pin1_config = {/* Internal pull-up resistor is enabled */ (uint16_t)kPORT_PullUp, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPSPI0_SOUT */ (uint16_t)kPORT_MuxAlt2, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTB3 (pin 1) is configured as LPSPI1_SOUT */ PORT_SetPinConfig(PORTB, 3U, &portb3_pin1_config); const port_pin_config_t portb2_pin48_config = {/* Internal pull-up resistor is enabled */ (uint16_t)kPORT_PullUp, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPSPI0_SCK */ (uint16_t)kPORT_MuxAlt2, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTA19 (pin 14) is configured as LPSPI1_SCK */ PORT_SetPinConfig(PORTB, 2U, &portb2_pin48_config); /*IF SHORTING SH11, SH12, SH13, SH14 needed for LPSPI1*/ const port_pin_config_t irq_pin = {/* Internal pull-up/down resistor is disabled */ (uint16_t)kPORT_PullUp, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as PTC0 */ (uint16_t)kPORT_MuxAsGpio, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTC0 (pin 37) is configured as PTC0 */ PORT_SetPinConfig(PORTC, 0U, &irq_pin); const port_pin_config_t ven_pin = {/* Internal pull-up/down resistor is disabled */ (uint16_t)kPORT_PullDisable, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as PTA20 */ (uint16_t)kPORT_MuxAsGpio, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTA20 (pin 17) is configured as PTA20 */ PORT_SetPinConfig(PORTA, 20U, &ven_pin); const port_pin_config_t req_pin = {/* Internal pull-up/down resistor is disabled */ (uint16_t)kPORT_PullDisable, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as PTA21 */ (uint16_t)kPORT_MuxAsGpio, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTA21 (pin 18) is configured as PTA21 */ PORT_SetPinConfig(PORTA, 21U, &req_pin); const port_pin_config_t portc2_pin39_config = {/* Internal pull-up/down resistor is disabled */ (uint16_t)kPORT_PullDisable, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPUART1_RX */ (uint16_t)kPORT_MuxAlt3, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTC2 (pin 39) is configured as LPUART1_RX */ PORT_SetPinConfig(PORTC, 2U, &portc2_pin39_config); const port_pin_config_t portc3_pin40_config = {/* Internal pull-up/down resistor is disabled */ (uint16_t)kPORT_PullDisable, /* Low internal pull resistor value is selected. */ (uint16_t)kPORT_LowPullResistor, /* Fast slew rate is configured */ (uint16_t)kPORT_FastSlewRate, /* Passive input filter is disabled */ (uint16_t)kPORT_PassiveFilterDisable, /* Open drain output is disabled */ (uint16_t)kPORT_OpenDrainDisable, /* Low drive strength is configured */ (uint16_t)kPORT_LowDriveStrength, /* Normal drive strength is configured */ (uint16_t)kPORT_NormalDriveStrength, /* Pin is configured as LPUART1_TX */ (uint16_t)kPORT_MuxAlt3, /* Pin Control Register fields [15:0] are not locked */ (uint16_t)kPORT_UnlockRegister}; /* PORTC3 (pin 40) is configured as LPUART1_TX */ PORT_SetPinConfig(PORTC, 3U, &portc3_pin40_config); } 要添加芯片所需的特定接口应用程序接口,我们需要修改TML文件夹中的tml.c文件,在该文件中用以下函数覆盖INTF_INIT、INTF_WRITE 和 INTF_READ:INTF_INIT、INTF_WRITE和INTF_READ函数: static void INTF_INIT(void) { lpspi_master_config_t userConfig; uint32_t srcFreq = 0; /*SPI configuration*/ LPSPI_MasterGetDefaultConfig(&userConfig); userConfig.baudRate = BOARD_NXPNCI_SPI_BAUDRATE; srcFreq = BOARD_NXPNCI_SPI_CLOCK; userConfig.whichPcs = (lpspi_which_pcs_t)kLPSPI_Pcs0; userConfig.pcsActiveHighOrLow = (lpspi_pcs_polarity_config_t)kLPSPI_PcsActiveLow; /*Initialize SPI*/ LPSPI_MasterInit(BOARD_NXPNCI_SPI_INSTANCE, &userConfig, srcFreq); } static status_t INTF_WRITE(uint8_t *pBuff, uint16_t buffLen) { uint8_t temp[1000]; temp[0] = 0x7F; memcpy(temp+1, pBuff, buffLen); masterXfer.txData = temp; masterXfer.rxData = NULL; masterXfer.dataSize = buffLen+1; masterXfer.configFlags = kLPSPI_MasterPcs0 | kLPSPI_MasterPcsContinuous | kLPSPI_MasterByteSwap;; return LPSPI_MasterTransferBlocking(BOARD_NXPNCI_SPI_INSTANCE, &masterXfer); } static status_t INTF_READ(uint8_t *pBuff, uint16_t buffLen) { status_t status; uint8_t temp[257]; temp[0] = 0xFF; masterXfer.txData = temp; masterXfer.rxData = temp; masterXfer.dataSize = buffLen+1; masterXfer.configFlags = kLPSPI_MasterPcs0 | kLPSPI_MasterPcsContinuous | kLPSPI_MasterByteSwap;; status = LPSPI_MasterTransferBlocking(BOARD_NXPNCI_SPI_INSTANCE, &masterXfer); if(status == kStatus_Success) memcpy(pBuff, temp+1, buffLen); SDK_DelayAtLeastUs(10, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY); return status; } #endif 我们还需要重写函数:tml_init、tml_deinit 和 tml_ reset,以调整它们以使其适用于我们主板的 GPIO 的特定 API。 static Status tml_Init(void) { gpio_pin_config_t in_config = {kGPIO_DigitalInput, 0}; gpio_pin_config_t out_config = {kGPIO_DigitalOutput, 0}; GPIO_PinInit(BOARD_NXPNCI_IRQ_PORT, BOARD_NXPNCI_IRQ_PIN, &in_config); GPIO_PinInit(BOARD_NXPNCI_VEN_PORT, BOARD_NXPNCI_VEN_PIN, &out_config); GPIO_PinInit(BOARD_NXPNCI_DWL_PORT, BOARD_NXPNCI_DWL_PIN, &out_config); INTF_INIT(); return SUCCESS; } static Status tml_DeInit(void) { GPIO_PortClear(BOARD_NXPNCI_VEN_PORT, 1U << BOARD_NXPNCI_VEN_PIN); return SUCCESS; } static Status tml_Reset(void) { /* Set DWL_REQ low for NCI protocol */ GPIO_PortClear(BOARD_NXPNCI_DWL_PORT, 1U << BOARD_NXPNCI_DWL_PIN); GPIO_PortClear(BOARD_NXPNCI_VEN_PORT, 1U << BOARD_NXPNCI_VEN_PIN); Sleep(10); GPIO_PortSet(BOARD_NXPNCI_VEN_PORT, 1U << BOARD_NXPNCI_VEN_PIN); Sleep(10); return SUCCESS; } 最后,修改主文件,使其使用 API 来初始化我们的电路板时钟和引脚: #include #include #include "app.h" #include "board.h" #include "pin_mux.h" #include "fsl_debug_console.h" extern void nfc_example (void); int main(void) { BOARD_InitHardware(); #ifdef BOARD_NXPNCI_INTERFACE_I2C PRINTF("\nRunning the NXP-NCI2.0 example (I2C interface)\n"); #else PRINTF("\nRunning the NXP-NCI2.0 example (SPI interface)\n"); #endif nfc_example(); } 测试示例。 此时我们已准备好使用 SPI 接口构建和刷新我们的示例,您可以通过按下蓝色的甲壳虫按钮继续编译和调试/刷新示例: 示例刷新后,打开 Teraterm 等串行终端,设置如下: 波特率115200. 数据:8 位 奇偶校验:奇偶校验:无。 停止位:1 位 无流量控制。 运行时,示例应向终端输出以下日志: 当标签被放置在天线附近时,示例应在终端中打印标签信息,如图所示: NFC 控制器解决方案 NFC读取器库
View full article
MCUオプションの長期サポートに関する問い合わせ チームの皆様へ 以下のMCUの長期サポート計画に関する情報をご提供いただけますでしょうか。 MCU 1:NXP S32K148 MCU 2:NXP S32K344 MCU 3:NXP S32K348 具体的には、それらの製品の現在のライフサイクル状況と、長期的な入手可能性に関する入手可能な情報を知りたいと考えています。 よろしくお願いします、 アディティヤ1世 Kinetis KシリーズMCU Re: Query on long-term support for MCU options こんにちは、 @AdityaI さん。 NXP Semiconductorsの製品寿命に関するページで、当社の長期サポート状況をご確認いただけます。 NXP S32K148:2037年3月まで長期使用プログラムを継続。 S32K34x: 今後は、S32Kに関する適切なフォーラム(S32K - NXPコミュニティ)に投稿してください。 お役に立てれば幸いです。 BR セレステ
View full article
Bloom White美白パウダーのレビュー2026:本当に効果があるのか?私の専門分野 黄色い歯。コーヒーの染み。写真に写る時に、自分の歯並びが気に入らないから笑顔を避けてしまう瞬間。アメリカ、イギリス、オーストラリアでは、何百万人もの人々が毎日この問題に直面している。 Bloom Whiteの美白パウダーは最近TikTokで大人気で、再生回数は1億回を超えている。しかし、それは実際に何か効果があるのだろうか?それとも、単に見た目が綺麗で、大げさな宣伝文句を謳っているだけの製品なのだろうか? 製品ページ、お客様レビュー、成分表示などをすべて確認し、明確で正直な回答をお伝えします。私が調べた結果は以下のとおりです。 公式サイト  Bloom Whiteホワイトニングパウダーとは何ですか? BloomWhiteは、通常の歯磨き粉のように使う歯のホワイトニングパウダーです。歯ブラシを濡らし、容器に浸して2分間磨くだけ。使い方はこれだけです。 微細な研磨粒子を用いて、歯の表面の汚れを取り除きます。コーヒーの染み、紅茶の染み、ワインの染み、さらには古いタバコの染みまで。この処方は100%天然成分で、過酸化物などの刺激の強い漂白剤は一切使用していないため、知覚過敏の歯にも優しい処方です。 各瓶は15g(約0.5オンス)入りで、1日1回の使用で15日以上持ちます。さらに、爽やかなミント風味で、歯磨き後も息がすっきりします。 DSC
View full article
AAOS OTA アップグレード失敗: スロット切り替え後にデバイスがブートローダーで停止します (Android オートモーティブ 13.0.0_2. NXPサポートチームの皆様、こんにちは。 問題報告: Android オートモーティブ 13.0.0_2.3.0 (Linux 6.1.36_2.1.0BSP) → Android オートモーティブ 14.0.0_1.1.0(LF_v6.1.55BSP) OTAアップグレード失敗(A/Bスロットスイッチがブートローダーで停止) **環境:** * ソースバージョン(動作確認済み): * Android オートモーティブ OS: 13.0.0_2.3.0 * BSP: Linux 6.1.36_2.1.0 * 対象バージョン(アップグレード): * Android オートモーティブ OS: 14.0.0_1.1.0 * BSP: LF_v6.1.55 * ビルドタイプ: * ユーザーデバッグ(ソースビルドとターゲットビルドの両方) * ハードウェアプラットフォーム: * i.MX8Q (mek_8qxp mek) --- **OTAパッケージの詳細:** * OTAタイプ:A/B OTA(payload.binベース) * ペイロードの位置: 「`」 /data/ota_package/payload.bin 「`」 * プロパティファイル: 「`」 /data/ota_package/payload_properties.txt 「`」 --- **使用されたOTAコマンド:** 「`」 update_engine_client \ --payload=file:///data/ota_package/payload.bin \ - アップデート \ --headers="$(cat /data/ota_package/payload_properties.txt)" 「`」 --- **観察された行動:** 1. OTAアップデート処理は、直ちにエラーなく完了します。 2. アップデート後にデバイスが再起動する。 3. アクティブスロットの変更: 「`」 getprop ro.boot.slot_suffix _a → _b(期待される動作) 「`」 4.しかし、デバイスはAndroid 14で起動しません。 5. デバイスがブートローダーのループに陥る: 「`」 U-Boot SPL 2023.04 (2026年5月1日 15:11:21 +0530) 通常起動 MMC1から起動しようとしています 認証キーはまだプログラムされていません bootloader_bから起動しています... 「`」 (繰り返し) --- **その他の所見:** * OTAアップデート前: 「`」 getprop ro.build.version.release 13 「`」 * 再起動後: * スロットスイッチが正しく作動します * しかし、Androidのユーザー空間は一度も登場しない 追加のログや詳細情報が必要な場合はお知らせください。 再開まで今しばらくお待ちください。 よろしくお願いします、 ハリシュ・K 評価ボード Re: AAOS OTA Upgrade Failure: Device Stuck in Bootloader After Slot Switch (Android Automotive 13.0. こんにちは、 セキュリティ保護されたデバイス(閉じる)を使用してテストしていますか? また、ヘッダーがpayload_properties.txtの内容と完全に一致していることを確認してください。「スペース」や「リターン」文字はもう使用できません。 よろしくお願いいたします。 アルド。
View full article
通过以太网在 S32Z280-594EVB 上闪烁应用程序 您好,NXP团队, 我正在使用 S32Z280-594EVB 评估板,想知道是否有可能通过以太网接口对应用程序二进制进行闪存/编程,而不是使用调试器 (J-Link /P & E)。 如果支持基于以太网的闪烁: 有哪些可用的方法来实现这一目标? 是否有支持以太网编程的引导加载程序或固件更新机制? 是否有任何示例项目、应用笔记或参考文档? 主机需要哪些工具和软件? 能否请您指导我通过以太网对 S32Z280 进行编程的推荐方法? 感谢您的支持。 致以最崇高的敬意 Karthik Re: Flashing Application via Ethernet on S32Z280-594EVB 你好,@karthik_nikil 谢谢你的帖子。 通过查看最新的 GreenVIP,似乎未实现/支持通过以太网将映像编程到闪存,因此没有相关示例可供直接参考。 很抱歉给您带来不便。 BR 切宁
View full article