Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
NETC IEEE 1588タイマーソフトウェアはRMの要件を満たしていません S32ZE NETCリファレンスマニュアルの「文書識別子:S32E27NETCRMリファレンスマニュアルRev. 4、2024-12-12」、3.2.5.3.1ドリフトおよびエラー調整付き通常モードでは、「通常動作中、TMR_ADD更新を除く1588タイマー構成(たとえばTMROFF_H/L)を変更するには、タイムゲートスケジューリング、時間指定出発スケジューリング、ストリームゲーティング、レートポリシングなどのTSN関連機能を無効にする必要があります。」と記載されています。しかし、gPTP ソフトウェアも NETC ドライバもこの仕様を満たしていません。 GPTP_STACK RTD Re: NETC IEEE 1588 timer software does not meet the requirement of RM NXP の gPTP ソフトウェア モジュールがありますが、正しいでしょうか? 現在の時刻を更新するために関数「EthSwt_43_NETC_CorrectPtpClk」を呼び出します。 「タイマーの修正に関する機能を提供する」ということについては話していません。 私の質問は、gPTP が EthSwt_43_NETC_CorrectPtpClk() 関数を呼び出して現在の時刻を更新している間に、802.1Qbv 機能に影響を与えないようにするにはどうすればよいかということです。 Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん ETH ドライバー RTD2.0.1 は、次のようなタイムスタンプ用のいくつかの API 関数を含む ASR 21-11 に準拠しています。 このため、おっしゃる通りタイマーの修正に関する機能は提供されていないのではないかと思います。タイマー修正に関する機能は ASR23-11 でサポートされるようですが、ASR21-11 でそれらを使用する必要がある場合は、gPTP は要件を変更して要求を行う必要があります。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM ご清聴ありがとうございました。「ドライバーはこれまで、TMR レジスタから現在のタイマーを取得することだけをサポートしており、それらを構成することはサポートしていません」と述べられていますが、理解できません。OFFSET レジスタを変更する gPTP ソフトウェアはどうでしょうか?gPTP ソフトウェアでは OFFSET レジスタを必ず変更する必要があると思います。私の質問は、gPTP ソフトウェアが OFFSET レジスタを変更しようとしている間に、802.1Qbv 機能などの TSN 機能をスムーズに動作させるために、RM をどのようにフォローアップするかということです。 Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん NETC ドライバに関するこのトピックに回答します。 - ZE の最新リリースは RM rev 3 に続く RTD 2.0.1 であり、私の知る限り、次のリリース RTD 2.0.2 も RM Rev 3 に続きます。ただし、RM バージョンに関する更新がある場合、SW チームには新旧の RM 間の変更を確認するためのチケットがあります。彼らはその変化を感知CANと思います。 - 私の知る限り、タイムスタンプはこれまでドライバーでサポートされていたもので、デフォルトのカウント TMR_CTRL[TE] = 0 と、1588 タイマー TMR_CTRL[TE] = 1 で動作する RTD 2.0.1 に追加された EthEnableFreeRunningTimer 機能です。現在のタイマーは 1588 レジスタ TMR_FRT_L/H から取得されますが、TE をどこにも設定しなかったため、ここでバグが発生しているようです (詳細については、チケット: ARTDCC1-593)。とにかく、ドライバーはこれまで、TMR レジスタから現在のタイマーを取得することだけをサポートしており、それらを構成することはサポートしていませんでした。あなたが言った主張は、ユーザーが 1588 レジスタの設定を変更したい場合にのみ発生するようです。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん つまり、1588 レジスタ リストを変更する前に TSN 機能を停止したいということですか? 現在のドライバでは、TSN を停止する機能をサポートしていないことがわかりました。TSN の各機能を無効にしたい場合は、各テーブルのエントリを削除する必要があるようです。例えば: - レートポリシー: Netc_EthSwt_Ip_DeleteRatePolicerTableEntry(); - Netc_EthSwt_Ip_DeleteStreamGateControlListTableEntry(); - EthSwt_43_NETC_StopTas(); よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん ETH ドライバーについてもう何もわからない場合は、このトピックから RTD を削除して、gPTP の担当者が回答できるようにしてください。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは、 はい、まだ質問があります。イーサネット ドライバーの観点から 802.1Qbv を無効化/再有効化する方法の確認にご協力ください。また、このようなアクションが 802.1Qbv スケジュール サイクルの重大なトラフィック遅延を引き起こすかどうかを分析するのにご協力ください。 ありがとうございます ジェフ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは、 大変助かりました。ありがとうございます。 車載のお客様にとって非常に重要な点を 1 つ強調しておきます。TSN IEEE802.1Qbv 機能を使用している場合、当然ながら、802.1Qbv の時間同期要件に従って gPTP も有効にする必要があります。 gPTP が 1 つの 802.1 Qbv スロットにある重要なトラフィックに影響を与えるかどうかが懸念されています。私たち(NXP)はそれを明確にし、その方法を提供する必要があります。これは非常に厳密かつ明確な要件です。これは状況を理解するための良い例、あるいはユースケースです。 はい、確かに、お客様が有効にしている TSN 機能がいくつあるかはわかりません。しかし、すべてのユーザーが使用できるように、解決策が必要です。お客様はユースケースに基づいて適切な選択を行うことができます。 ありがとうございます ジェフ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは、 gPTP がタイマー オフセット レジスタを変更する前に TSN 機能を無効にしたいわけではありません。これは NETC RM の要件です。 お客様はNXPのRM仕様を満たすための公式ソリューションを求めています。TSN機能を無効にする方法、つまりこのような状況下でのIEEE802.1Qbv。お客様は、これはハードウェア要件とハードウェア関連のコーディングであるため、NXP によって提供されるはずだと想定しています。 ところで、あなたの提案はよく設計される必要があると思います。特に 802.1Qbv の場合、gPTP 同期アクションによってアプリケーション トラフィックが影響を受けないようにする方法。たとえば、一部のトラフィックが 1 つの Qbv スケジュール サイクル遅延する可能性はありますか? ありがとうございます ジェフ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん 私の観点からすると、TSN を停止する公式機能では、ETH ドライバからのこの要件を満たすことは困難です。ご覧のとおり、ポート ゲート タイム スケジュールを無効にするには、タイム ゲート有効ビットPTGSCR [TGE]をリセットするだけです。ただし、レート ポリシーなどの一部の TSN 機能では、この機能はこの表の要素に基づいて有効化/無効化されます。しかし、ETH からは、要素を削除または更新して無効にするためにこのテーブルにエントリが追加されたかどうかを知ることはできませんが、上位層ではこれをより適切に処理できます。このため、前回の回答では、各テーブルのエントリを削除する関数を呼び出すことを提案しました。 ユーザーがオプション機能(レートポリシング、ストリームゲート制御リストなど)を有効にしていない場合、関数EthSwt_43_NETC_StopTas()を使用して TSN を無効にすることができます。 とにかく、チケット ARTDCC1-607 を作成しました。何か見逃した場合に備えて、このチケットをフォローして SW チームからの分析を取得できます。RM Rev4 はまだ RTD リリースに適用されていません。このトピックに関して ETH について詳しいアイデアがない場合は、お知らせください。このCASEについては gPTP に任せ、引き続き gPTP 側からCAN回答させていただきます。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん 私の観点からすると、問題は有効になっている TSN 機能の数だけではありません。お客様が ASR コンテキストを使用する場合、これらの機能はマクロによってプリコンパイル時に有効/無効にされるだけでなく、各機能にも存在するためです。ご存知のとおり、レート ポリシング、ストリーム ゲートなどの各機能は、以下の表を通じて制御されます。 ユーザーが構成ツールで要素を構成しただけの場合、SW チームは、この機能を無効にするときに、エントリ ID を持つエントリをいくつ削除するかを制御できます。しかし、ユーザーが関数を呼び出して要素を追加した場合、SW はそれを知る方法がありません。しかし、ユーザーはアプリケーションからこれを制御できると思います。何か見逃したのかもしれませんが、TSN はタイマー値を参照するので、タイマー構成を変更する前に停止し、新しいタイマー値を取得するために再度開始するのが理にかなっていると理解しています。SW チームはそのチケットを分析する際に深い洞察力を発揮できると信じています。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは、 あなたはまだ私の質問を理解していないようですね。より詳しい説明をお願いします。お客様が Qbv 構成を持っており、それが以下のパラメータで実行状態にあると仮定します。 1. サイクルタイムは10msです 2. 10 ミリ秒の期間内に、それぞれ 5 ミリ秒のスロットが 2 つあります。つまり、ゲート リストには 2 つのエントリがあります。 3. 最初のタイムスロットが開いている間に、NETC が重要なフレームを送信していると仮定します。この時点で gPTP は現在の時刻の更新を開始します。RM 要件に従って、お客様は 802.1Qbv を無効化/再度有効化する必要があります。 4. 802.1Qbv が再度有効になった後、NETC ハードウェアが引き続きタイム スロット 1 を開いたり、ゲート リストの 2 番目のエントリに移動したり、新しい Qbc スケジュール サイクルを待機したりする可能性があります。ハードウェアが 2 番目のエントリに進むと、NETC キュー内の重要なフレームが次の 10 ミリ秒サイクルで送信されることを意味します。そして、大きな遅延が発生し、アプリケーションに影響を及ぼす可能性があります。 5. お客様はこのような状況を回避する方法を尋ねています。つまり、アプリケーションへの影響を軽減するために、Qbv をスムーズに無効化/再有効化する方法です。 物事が明らかになることを望みます。 ありがとうございます Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは@shuangjunzhuさん 802.1 Qbv の機能は NETC とスイッチの両方をサポートしていることがわかりました。したがって、この機能は次の方法で設定できます。 - Eth_NETC: - ポートスイッチ: 機能は次のとおりです。 ETH_NETCの場合: - Eth_43_NETC_StartTas() - Eth_43_NETC_StopTas() ポートスイッチの場合: - EthSwt_43_NETC_StartTas() - EthSwt_43_NETC_StopTas() この質問「この種のアクションが 802.1Qbv スケジュール サイクルの 1 つで重大なトラフィック遅延を引き起こすかどうかを分析する」については、私の観点からすると、この機能を有効/無効にする関数 Netc/PortSwt_Ip_ConfigPortTimeGateScheduling() を見るとわかるように、この機能を無効にするには、1 ビットをリセットするだけで、この機能を有効にするには、ゲート タイムを有効にして、ゲート タイム テーブルを設定する必要があります。今回は計測可能です。 「 802.1Qbv スケジュール サイクルの 1 つ」とは、ゲート制御リストの実行時間を繰り返す必要があるという意味だと理解していますか?そうであれば、これを設定することができます。 よろしくお願いいたします。 ニ Re: NETC IEEE 1588 timer software does not meet the requirement of RM こんにちは、 前回の返信で述べた 2 つの機能以外に、TAS を有効/無効にする別の方法は見つかりませんでした。私の観点からすると、タイム ゲート制御を無効にすると、時間間隔、サイクルなどのすべての機能も無効になります。TAS の無効化と有効化の間の期間には、gPTP からのタイマーの更新を完了するまでの時間が含まれます。TAS を有効にすると、ベース時刻が現在の時刻に更新されます。ただし、新しいベース時間 = 次の古い間隔時間でない場合は、要件を確認できません。 これについてはもうわかりませんが、SW チームがあなたのCASEについて提案できるように、上記のチケットでこの質問も更新しました。 よろしくお願いいたします。 ニ
View full article
[过滤器:垃圾邮件] nismkiki 的帖子正文匹配了 " phon**epe ",板 " 电源管理单元 "。 [过滤器:垃圾邮件] nismkiki 的帖子正文匹配了 " phon**epe ",板 " 电源管理单元 "。 帖子主题:如何退还错误的交易 职位机构: 如何从 PhonePe 上的错误交易中取回钱款(客户服务号码 📞076995 95414) 如果您不小心将钱汇入了错误的帐户或在 PhonePe 上进行了错误的交易(客户服务号码 👉+9176,,995,,,954,,,14👈),请按照以下步骤操作:在 PhonePe 应用程序中进行投诉。如何取回在 PhonePe 上意外支付的款项? 通过应用程序提出投诉: 打开 PhonePe 应用程序 → 我的(或设置)→ 帮助 & 支持 → 交易问题。TAP错误的交易 → 选择提出投诉 → 写下原因(例如,错误的账户、重复付款)→ 提交。   联系官方客服: 致电:080-6872-7374(免费电话)或 +91-22-6872-7374 提供:注册手机号码、交易编号、唯一参考号码(URN)。电子邮件:[[email protected]](mailto:[email protected])请在邮件主题行注明"Wrong Transaction Reversal" ,并发送您的手机号码、交易 ID 和问题描述。   向银行申请退款: 请就近前往银行网点或通过网上银行/手机银行提交书面申请。获取并保留银行的UTR号码(唯一交易参考)以进行撤销。   后续行动和预防措施: 尽快(最多 48 小时内)提交投诉。妥善保存截图、收据和交易 ID。切勿将您的 OTP、密码或个人信息透露给任何非官方号码或个人。仅使用官方渠道(上述提供的应用程序、网站、电话号码/电子邮件)。   注意:撤销程序通常需要 7-10 个工作日。如果没有及时收到退款,请再次联系客户服务中心或银行。 正文"PhonePe(客户服务号码 📞076995 95414) 如果您不小心将钱汇入了错误的帐户或在 PhonePe 上进行了错误的交易(客户服务号码 👉+9176,,995,,,954,,,14👈),请按照以下步骤操作:在 PhonePe 应用程序中进行投诉。如何取回在 PhonePe 上意外支付的款项" 匹配的过滤模式"phon**epe" 。 用户[id=258406,login=nismkiki]的发帖因以下最终用户面临的错误而被拒绝: 邮件正文包含 PhonePe(客户服务号码 📞076995 95414) 如果您不小心将钱汇入了错误的帐户或在 PhonePe 上进行了错误的交易(客户服务号码 👉+9176,,995,,,954,,,14👈),请按照以下步骤操作:在 PhonePe 应用程序中进行投诉。如何取回不小心在 PhonePe 上支付的款项,这在本社区是不允许的。请在发送您的帖子前删除这些内容。
View full article
如何替换自定义板的 Yocto 电路板支持包中的 DDR 二进制文件? 你好 正在尝试替换自定义板的 Yocto 电路板支持包 中的 DDR 二进制。 新计算机已创建,配方 ddr-firmware 的目录也是在自定义元层中创建的,其中包含所需的文件。但是,为 SRC_URI 分配新值并删除配方附加中的原始值并不能阻止 Bitbake 在评估板的原始路径中搜索。不使用配方追加也不会改变本次搜索的任何内容。 似乎唯一有效的方法是掩盖原始配方并在自定义层中创建新配方。 但我不认为这是一种可取的方式。使用为自定义计算机创建的 DDR 二进制文件应该很容易做到这一点。这里可能遗漏了什么? 谢谢您! 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 好的,它能用。似乎与 NXP_FIRMWARE_LOCAL_DIR 中设置的文件夹不一致。但不管怎么说,它还是有用的。 还有一个问题,如何关闭自定义层 .bbappend 中的 NXP-EULA 许可证? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,仙鹤 感谢您的回复。 客户的 DDR 还应该有 DDR 固件,你能否尝试参考 S32G3_Linuxbsp_44.0_user_Manual.pdf 在 Yocto 中版本电路板支持包期间添加 DDR 固件。 BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 你好,乔伊、 感谢您的回复。 它是 S32G3,电路板支持包 是 "bsp44.0"。 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 感谢您与我们联系。 你使用的是哪个版本的电路板支持包? 您使用的是 S32G3 还是 S32G2 芯片? BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,乔伊、 添加 .bbappend 时尝试过,但不起作用用于定制板。 ERROR: /home/crane/work/yocto/sources/meta-alb/meta-alb-bsp/recipes-bsp/ddr-firmware/ddr-firmware.bb: Unable to get checksum for ddr-firmware SRC_URI entry NXP-EULA: file could not be found The following paths were searched: 尝试了 .bbappend只有 SUMMARY,LICENSE ="CLOSED" 和 LIC_FILES_CHKSUM ="" ,也试过不使用 .bbappend、都得到了相同的错误信息。 这是处理自定义 DDR 二进制文件的唯一方法是掩盖恩智浦的原始配方并创建自定义配方,而不是根据原始配方添加配方附加吗? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,仙鹤 请尝试修改文件夹 (fsl-auto-yocto-电路板支持包-build_s32g274ardb2/conf) 中 local.conf 文件。 accept_fsl_eula ="1" BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 您是否在文件夹中添加了 NXP-EULA 文件? BR 乔伊 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,乔伊、 我试图将这个文件复制到原始配方或自定义配方中,但都不起作用。两种方法都能找到文件,但都会产生以下错误信息: ERROR: No recipes in default available for: /home/crane/work/yocto/sources/meta-crane/recipes-bsp/ddr-firmware/ddr-firmware_%.bbappend 由于我没有使用恩智浦的DDR二进制文件,我认为使用恩智浦生成的NXP-EULA没有意义。禁用检查 NXP-EULA 是感知的,对吧? 此致, 起重机 Re: How to replace DDR binaries in Yocto BSP for the custom board? 嗨,起重机 感谢您的回复。 我们应该找到问题的根源。请尝试在 Yocto 中版本 BSP44 以使用恩智浦的 DDR 固件和 NXP-EULA 文件。如果你能成功版本 BSP44,你可以尝试更换 DDR 固件,然后重新版本。 BR 乔伊
View full article
MPC5748G devkit 的 HSM 启用问题 我在使用恩智浦 MPC5748G devkit [SPC5748GHMKU6] HSM 模块 时遇到了问题,保密协议 [网络安全参考手册 - HSM 网络安全固件标准代码包 - HSM 网络安全固件基本软件包] 全部可用。 问题是我设法通过 DCF 记录启用了 HSM,我验证它已通过 SSCM_UOPS_HSE = 1 启用, 但是对于 HADR(HSM 起始地址),SSCM_HSA_HADR = 0x00000000 这意味着没有 HSM 启动标头可用。 因此,我怀疑我的目标上是否闪存了 HSM 固件。 问 1: 如何验证我的 devkit 是否有可用的 HSM 固件? 问题 2:如果我已经有了 HSM 固件,我应该在以下 HSM 代码/数据块中看到什么? 问题 3: 如果我的目标上没有闪存固件,我该如何获取固件? 特别是我已经有 100 多件了 问题 4:如果有固件可用,在哪里可以找到 HSM 的启动地址? 我使用带有 PE micro 插件的 S32ds 集成开发环境进行闪存和调试,并使用 PKGPPC NEXUS STARTER 应用程序加载我的 DCF 记录 [UTest Algorithm]。 #MPC5748G #HSM Re: HSM Enabling Issue for MPC5748G devkit 你好@Yousry 请注意,带有 HSM 固件的设备仅提供给经批准的客户(批量非常大)。标准设备 SPC5748G... 未安装 HSM 固件。带有 HSE 固件的设备具有特殊的部件号。 如果你还没有与恩智浦的销售部门达成协议来购买此类设备,那么获得这些设备的机会就很小了。 强烈建议选择带有 HSE(硬件安全引擎)的设备。所有用户均可免费使用 HSE 固件。建议将 S32K3 系列设备作为 MPC5748G 的替代品: https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-general-purpose-mcus/s32k3-microcontrollers-for-automotive-general-purpose:S32K3 此致, Lukas Re: HSM Enabling Issue for MPC5748G devkit 你好@lukaszadrapa 我们已经订购了SPC5748GHMKU6 参考手册 " 订单信息 " 部分提到了这个,因为它已经有 HSM 了 那么你能指导我通过回答我之前问过的问题来弄清楚吗? 预先感谢 , Yousry   Re: HSM Enabling Issue for MPC5748G devkit 我不得不同意数据表令人困惑的说法。我过去曾要求澄清这一点,但一直没有得到更新。因此,虽然有 HSM 模块,但没有 HSM 固件。我上面的回答仍然有效。 此致, Lukas
View full article
ヘルプが必要です: RT1189 上の FlexSPI2 QSPI フラッシュからの起動 カスタム ハードウェア上でユーザー アプリケーションを起動しようとしています。このカスタム ハードウェアには、ポート A のプライマリ ピン グループを使用してコネクテッドされた FlexSPI2 QSPI フラッシュのみがあります。フラッシュ デバイスは、Micron MT25QU256ABA です。RT1189 (RT1189CVM8C) に搭載されたブート ROM がメモリを正しく構成せず、ブートに失敗します。ただし、NXP セキュア プロビジョニング ツールは、これに正常に読み取りと書き込みを行うことがCANできます。 フラッシュ構成ブロック (FCB) は、セキュア プロビジョニング ツールを使用して作成されました。 XIP ブート ヘッダーはイメージのコンパイル自体で無効化されました。代わりに、セキュア プロビジョニング ツールは、上記のスクリーンショットに示されている設定とまったく同じ設定を使用して、簡略化された UI から生成された FCB を使用するように構成されました。上記のスクリーンショットには表示されていませんが、「テスト接続」は成功しています。 さらに、セキュア プロビジョニング ツール (以下、「SPT」と呼びます) から外部メモリを構成するように要求された場合、FlexSPI2 メモリはプロセッサとツールによって正常に読み取ることができます。これを以下に図示します。 ユーザーがフラッシュ プログラマ ツールを開き、ポップアップで「はい」をクリックするか、「外部メモリの構成」ボタンをクリックすると、SPT は上記のフラッシュ構成ブロック設定を使用して、FlexSPI2 フラッシュ メモリをプログラミング用に初期化します。 以下のスクリーンショットは、完全なアプリケーション イメージ (FCB はオフセット 0x400、ユーザー アプリケーションはオフセット 0x1000) をフラッシュした後にキャプチャされたものです。 これにより、フラッシュ構成ブロックが正しいと考えられます。 RT1180 で次のヒューズ ビットが焼損しました。その他のヒューズビットはすべてデフォルトです。 BOOT_CFG0[6] (BT_FUSE_SEL) -> 1b、ヒューズからのブートを有効にする BOOT_CFG2[7] (FLEXSPI_INSTANCE) -> 1b、FlexSPI2を選択する(デフォルトはFlexSPI1) BOOT_MODE ピンを 000b (内部ヒューズからのブート) に設定すると、RT1189 は何もアクティビティを行いません。再度通信できるようにするには、「無限ループ」モードで起動し、その後シリアル ダウンローダー モードに戻す必要がありました。 BOOT_MODE ピンを 100b (「FlexSPI からのブート」) に設定すると、RT1189 は「スタック」したままになりますが、JLink デバッグ プローブによって停止できます。 BOOT_MODE 100b を使用して FlexSPI から起動しようとした後に停止すると、FlexSPI2 のメモリ領域を調べるとすべてゼロが表示されます。 ここで興味深いのは、「すべてゼロ」が RT1189 の FlexSPI2 メモリ領域のデフォルト状態と一致しないことです。次のスクリーンショットは、外部メモリを構成せずにシリアル ダウンローダー モードで起動した後にキャプチャされたものです。 最後にもう 1 つ: ユーザー アプリケーションの MCUXpresso サンプルのリンカー スクリプトが、FlexSPI2 から起動するように変更されました。 注意: スクリーンショットのキャプションには「0x14000000」と表示されていますが、コードで実際に使用されている値は「0x04000000」です。これはタイプミスです これは SPT に反映されています。 これらすべてを念頭に置いて、私の現在の理解は次のとおりです。 FCB は正しくなければなりません。そうでないと、SPT は FlexSPI2 バンク A に接続された外部フラッシュと対話できません。 ROM 自体は、起動時に、SPT とは異なる何らかの方法でこの外部メモリを初期化しようとしているはずです。RT1189 ブート ROM のソース コードがなければ、リバース エンジニアリングを行わずにデバッグを続けることはできませんが、NXP のお客様として、リバース エンジニアリングを行うつもりはありません。 私の質問: この動作を引き起こす設定の何が問題なのでしょうか? フラッシュの初期化に失敗する理由を理解するためにブート ROM をデバッグする方法はありますか? ありがとう!! Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 数週間の努力の末、XIP ではなく ITCM (0xFFE00000) にリンクすることでプロセッサを起動することができました。ただし、このThreadはまだ関連性があります - FlexSPI2 上の XIP が正しく動作しないのはなぜですか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 @Sam_Gao 、 ご返信ありがとうございます。 元の投稿で述べたように: ブートインスタンスの選択は、コメントとAN14589で指定されているものとまったく同じです。BOOT_CFG2[7]はFlexSPI2を選択するために書き込まれます。 アプリケーション コードは、指定どおりに FlexSPI2 メモリ マップ領域 (0x04000000) にリンクされます (m_start_flash が 0x04000000 に変更されます)。返信ではこれを「0x40000000」としていますが、これは上記のアプリケーション ノートや RT1189 のリファレンス マニュアルに記載されているとおり正しくありません。 FCB は予想されるオフセットに存在します。フラッシュ チップを動作中の MIMXRT1180EVK のものと交換してみましたが、それでもまだ動作しません。 ロジック アナライザを使用して、フラッシュ構成ブロックがブート ROM によって読み取られている可能性が高いことを判断できました。クロック速度はすぐに 30 MHz から 125 MHz に変化し、読み取りデータは SPI データ ラインを介して送信されます。 ブート ROM またはブート シーケンスをさらにデバッグできるメカニズムはありますか? Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 こんにちは、 RT1189 のようなデバイス上の FlexSPI2 QSPI フラッシュからの起動に失敗する原因は、通常、いくつかの一般的な構成領域にあるようです。ここでは、潜在的な問題の詳細と、ブート ROM プロセスをデバッグして根本原因を特定する方法について説明します。 AN14589 を参照: https://www.nxp.com/docs/en/application-note/AN14589.pdf 1. ブートインスタンスの選択を確認する: ブートROMに、デフォルトのFlexSPI1ではなくFlexSPI2を使用するように明示的に指示する必要があります。これは BOOT_CFG2[7] によって制御されます。 ヒューズまたはピン。BOOT_CFG2 BOOT_CFG2[7] が 1 に設定されている FlexSPI2 を選択する ブートインスタンスとして 。プライマリブートモードピン( BOOT_MODE[2:0] )シリアルNORフラッシュからブートするには、正しく設定する必要があります(例: '100') 2. アプリケーション リンカー アドレス: FlexSPI2 のブート可能なイメージをビルディングする場合、アプリケーション コードを FlexSPI2 メモリ マップから実行するようにリンクする必要があります。FlexSPI2 の開始アドレスは 0x40000000 です。プロジェクトのリンカー ファイルを変更して、フラッシュ開始アドレス ( m_flash_start ) を 0x40000000 に設定する必要があります (参照: AN14589 の 7 ページ)。 3. FCB: ブートROMには、外部QSPIデバイスを正しく初期化するために、フラッシュメモリの先頭(通常はオフセット 0x400 )に有効な512バイトの構成ブロックが必要です。このブロックが欠落しているか、破損しているか、使用している特定のフラッシュ チップと一致していない場合、ブート ROM はフラッシュとの通信に失敗します。詳細については、 https://docs.mcuxpresso.nxp.com/secure/latest/06_processor_specific_workflow.html#preparing-source-image-for-rt118x-devicesをご覧ください。 Re: Help Needed: Booting from FlexSPI2 QSPI Flash on RT1189 問題はないようです。 ブート ROM とブート シーケンスの詳細については、 https://www.nxp.com/docs/en/application-note/AN14589.pdfを参照してください。 デバイスが「スタック」している場合は、リセットしないでください。JLink/デバッガーを使用して実行中のカーネルに直接アタッチし、次のレジスタの状態を確認します。例: プログラムカウンタ(PC): PC が 0x2xxxxxxx (ROM 領域) にある場合、ROM はまだ実行中であるか、無限ループに陥っています (たとえば、ペリフェラルの応答を待機している)。 PC が 0x002xxxxx (OCRAM) または別の RAM 領域を指している場合、ROM はジャンプを試みたものの、アプリケーションがクラッシュした可能性があります。 PC が 0x4000xxxx (FlexSPI2 AMBA 領域) を指していて、すべてゼロまたはバス エラーとして読み取られた場合、ジャンプは発生しましたが、XIP アクセスは失敗しました。
View full article
lwip 实践 您好, 我正在使用 s32K148 开发板并使用以太网功能。 请将这两个项目也发给我,它们似乎对我也有帮助, lwip_s32k148_HandsOn_Server lwip_s32k148_HandsOn_Client 这两个例程在网上都找不到。 我的邮箱是 [email protected] 期待您的回复。 Re: lwip HandsOn 你好@G_Z、 我给你发了一条私信。 lwip HandsOn 请将这两个项目发给我。 lwip_s32k148_HandsOn_Server lwip_s32k148_HandsOn_Client 我的电子邮件是 [email protected] Re: lwip HandsOn 谢谢您! Re: lwip HandsOn 你好,@lengrudie、 我已就这些项目给您发送了私人信息。 致以最崇高的敬意, Julián。
View full article
k344中心对齐pwm中心点触发adc bctu采样 基于https://community.nxp.com/t5/S32K-Knowledge-Base/RTD400-K344-Center-Aligned-PWM-Trigger-ADC-BCTU/ta-p/2034211、我想知道为什么需要三次 BCTU 触发信号中断才能触发 BCTU 水印。我想实现只触发信号一次中断,然后在中断中修改PWM周期,读取ADC值等。在 EB MCAL 开发的基础上,有哪些好的解决方案或示例例程可以实现相同的功能? Re: K344中心对齐PWM中心点触发ADC BCTU采样 感谢您关注我们的产品并为我们的社区做出贡献。 您可以直接回复帖子,以获得帖子主人的反馈。 另一方面,你可以参考另一种方法,使用单个 BCTU 触发信号: S32M27x/S32K3 - eMIOS/BTCU/ADC/DMA - [RTD600] -> https://community.nxp.com/t5/S32M-Knowledge-Base/S32M27x-S32K3-eMIOS-BTCU-ADC-DMA-RTD600/ta-p/2155542 有关 MCAL 的实现,请参阅 ADC 到 PWM 的硬件抽象层示例: 前往 S32K3 页面 -> 设计资源-> 软件-> S32K3 参考软件-> 汽车软件-S32K3-硬件抽象层-> SW32K3 HAL 集成示例 2025.07 它执行以下 ADC 触发信号: 同时,它根据捕获的 ADC 值更新占空比。 希望这些信息对您有所帮助。 Re: K344中心对齐PWM中心点触发ADC BCTU采样 感谢您的解决方案。我想知道多次触发信号中断的原因以及避免此类中断的方法。或者,我是否有可能通过配置禁用该中断源? Re: K344中心对齐PWM中心点触发ADC BCTU采样 您好, 如果启用 BCTU 触发信号通知,则在 BCTU 触发信号 ADC 时调用。如示例中的 BCTU CL 包含 3 个项目,每个输入 (EMIO) 触发信号将触发三次 ADC。 只需在“触发信号”选项中输入 NULL 即可禁用此通知。 BR, Petr
View full article
T1024 PCSリンクアップデバッグ この記事では、お客様のイーサネットPCSがリンクアップできなかった場合に、T1024に基づいて段階的にデバッグする方法を説明します。 多くのイーサネットはSerDesによって設定されるため、リンクエラーの原因がSerDesまたはPCS自体であるかを確認するにはどうすればよいでしょうか。この記事ではいくつかのヒントを提供します。 SerDesレーン&ピンズ まず、使用しているSerDesレーンを確認してください。SerDesレーンを確認するには、QorIQ T1024リファレンス・マニュアルを参照してください。以下の設定のように、ユーザーケースがRCW[128:136]にSRDS_PRCTL_S1=0x05Bと設定される場合、アプリケーションはSGMII.m1とSGMII.m2を利用します。 この記事では、SGMII.m1をユーザーケースとして検討します。次に、SGMIIはフレームマネージャのMAC1に配置されます。 SerDesのレーン割り当てを確認して、SerDesのレーンを確認してください。SGMII.m1の場合、特定のレーンピン名はSD1_TX3P/NとSD1_RX3P/Nで、レーン3として認識されます。 MAC番号はSerdesのレーン番号とは関係ありません。ピンを入手するには特定の表を確認する必要があります。 このイーサネットを使用したハードウェアテストは、ピンに関連している必要があります。以下のコンポーネントのピン番号を参照してください。 このレーンのRXピンのアイダイアグラムをテストすると、周波数が正しいかどうかを確認できます。このレーンをSGMII 1.25Gに設定すると、アイダイアグラムで速度が正しく設定されていることを確認できます。 上のアイダイアグラムは、SerDesの速度を示しています。 ループバックを正しく行うことは非常に重要ですが、他のデバイスに接続することも可能です。 SerDesのリンクアップを確認する方法 以下のQorIQ T1024リファレンス・マニュアルでレーンレジスタをご確認ください。 このユーザーケースはレーン3となるため、レーン3のレジスターを読み出して、SerDesレーン3が正常に動作するかどうかを確認してください。以下のように。 # レーン 3 md.l 0xFFE0EA8C0 1 - aa611080 # LN3GCR0 md.l 0xFFE0EA8C4 1 - 101c4019 # LN3GCR1 md.l 0xFFE0EA8CC 1 - 00002800 # LN3SSCR0 md.l 0xFFE0EA8D0 1 - 0f0fc01f # LN3RECR0 md.l 0xFFE0EA8D4 1 - 0f0f0fa8 # LN3RECR1 md.l 0xFFE0EA8D8 1 - 00003006 # LN3TECR0 md.l 0xFFE0EA8E0 1 - 39000400 # LN3TTLCR0 md.l 0xFFE0EA8E4 1 - 00000000 # LN3TTLCR1 md.l 0xFFE0EA8F4 1 - 00000000 # LN3TCSR1 md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3 SerDes_LNnTCSR3は重要なデバッグテストレジスタであり、CDR_LCKはCDRがロックされているかどうかを確認するためのものです。 CDR_LCK=0は、有効なビットストリームが検出されないことを意味します。テストとして、レーンをループバックモードLN2TCSR3[LPBK_EN]=01に設定できます。CDRはデジタルループバックモード(内部ループバック)でロックされる必要があります。そうでない場合、デバイス自体に問題がある可能性があります。 そのため、LPBK-ENを「01」ループバックモードに設定できれば、SerDes自身のTX信号とRX信号がループバックモードに設定され、外部信号が除外されます。CDR_LCKが1の場合は、SerDes自体が正常に機能します。とにかく、CDR_LCKは常に設定されているはずです。 "md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3"では、CDR_LCK=0となっており、SerDesレベルの問題が疑われます。 通常の状態では、以下の通りである必要があります: => md fe0ea8fc 1 fe0ea8fc: 08000000 PCSリンクアップを確認する方法 MACおよびPHYレジスタは、T1024DPAArm、QorIQ T1024 データ・パス・アクセラレーション・アーキテクチャ (DPAA) リファレンス・マニュアルから詳細を取得する必要があります。 DPAARMでオフセットアドレスを見つけてください。 SGMIIのMACアドレスはオフセット+0x1000でなければなりません。 T1024DPAARMの6.5.4 MDIOイーサネット管理インターフェイス に従って、MDIOレジスタを読み取ってください。 このアプリケーションでは、SGMII1、MAC1のMAC1アドレスはFM1_mEMAC1: 4E_0000であり、したがってFM1_mEMAC1 MDIOレジスタは4E_1000hになります。 ユーザーケースでは、プロトコルはSGMIIで、T1024DPAARMの6.5.4.3 22条項読み取りフローに従う必要があります。 6.5.4.3 第22条 読み出しフロー 1) MDIO_CFG[BSY] = 0になるまで待ちます。 2) MDIO_CTLに適切なPHY_ADDRとREGISTER_ADDRを設定し、ビット16をセットして書き込んでください。 3) MDIO_CFG[BSY] = 0になるまで待ちます。 もしアドレスされた PHY が応答しなければ、MDIO_CFG[MDIO_RD_ER]が設定されます。 それ以外の場合は、MDIO_DATAの値を読み取ってください。 このユーザーケースでは、MDIO_SGMII_SRを読むと、QorIQ T1024リファレンス・マニュアルの30.5.5 1000Base-KX PCS MDIO メモリマップ/レジスタ定義にレジスタ定義が見つかります 重要なビットは以下の通りです。 こちらがユーザーケースの結果です: MDIO_SGMII_SRを読み取る際は、遅延時間の要件を満たすことができる手動入力を使用してください。 手動で入力できない場合は、フローに従い、「MDIO_CFG[BSY] = 0」を待ってから、MDIO_DATAの値を読み取ってください。 SGMII1 MDIOレジスタを読み取ってください === セルデステスト1 ===。 0xFFE0EA8FC 値: 0x08000000 PCS0レジスタ 0xFFE4E1030-0xFFE4E103Cをダンプしてください: 0x40001408 0x00000000 0x00001340 0x00001340 0x8002、devmem 0xFFE4E1034 32 0x8002を選択 読み取り:0x00000083 0x8003, devmem 0xFFE4E1034 32 0x8003を選択 読み取り:0x0000E400 0x8001、devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x00000029 0x8001 devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x0000002D 0x8001, devmem 0xFFE4E1034 32 0x8001を選択 Serdes0 ステータス: 0x0000002D 最初はリンクされておらず、LINK_STATは0(0x00000029)で、次に1(0x0000002D)に変わります。 これで、PCSリンクが確立され、HWループバックチェックが完了しました。
View full article
S32K144:SimulinkでPWM生成にFlexIOピンを使用する方法はありますか 現在、SimulinkでPWM生成にFlexIOピンを使用する方法を理解しようとしています。Simulinkには、PWM生成にFlexIOピンを使用するためのブロックは見当たらず、I2C、SPI、およびUARTのみに使用されています。どんな助けでも大歓迎です。 Re:S32K144:SimulinkでPWM生成にFlexIOピンを使用する方法はありますか 教えて頂きありがとうございました
View full article
clrc663 lpcd i 和 q 值 i 得到 0x00 我正在使用 clrc663 作为读卡器我在那里实现了 lpcd 模式我在运行 lpcd 校准功能时遇到了问题我得到了 i 而且 q 值是 0x00 我从天线得到的是什么问题怎么解决这个问题 我使用的这个函数   /* 执行 LPCD 校准 */ phStatus_t Calibrate_LPCD(uint32_t dwLPCDDemo, uint32_t *pdwLPCDRefValue) { phStatus_t wStatus; uint8_t bValueI = 0; uint8_t bValueQ = 0; uint8_t bVersion = 0; uint8_t bDigitalFilter = PH_ON; uint16_t wDetectionOption = PHHAL_HW_RC663_FILTER_OPTION1; uint16_t wPowerDownTimeMs = LPCD_POWERDOWN_TIME; uint16_t wDetectionTimeUs = LPCD_FIELD_ON_DURATION; DEBUG_PRINTF("\nLPCD 校准开始。"); phhalHw_FieldOn(pHal); phhalHw_Wait(pHal, PHHAL_HW_TIME_MILLISECONDS, 5);   /* 配置 LPCD 模式默认值,以执行 LPCD 校准循环。 * 提供输入参考 I 和 Q 值为零,并将检测时间提供给 * 在此持续时间内打开射频,使用 I 和 Q 通道值测量负载变化。 * 配置合适的掉电时间以节省 RC663 读卡器IC 的功耗。*/ wStatus = phhalHw_Rc663_Cmd_Lpcd_SetConfig(pHal,PHHAL_HW_RC663_CMD_LPCD_MODE_DEFAULT、 bValueI、bValueQ、wPowerDownTimeMs、wDetectionTimeUs); CHECK_STATUS(wStatus); DEBUG_PRINTF("\nphhalHw_Rc663_Cmd_Lpcd_SetConfig."); /* 读取版本寄存器,以区分 RC663 Old(RC66301、RC66302)和 RC663 Plus(RC66303)。*/ wStatus = phhalHw_Rc663_ReadRegister(pHal,PHHAL_HW_RC663_REG_VERSION,&bVersion); DEBUG_PRINTF("\nphhalHw_Rc663_ReadRegister."); CHECK_STATUS(wStatus); 如果 (bVersion == PHHAL_HW_CLRC663PLUS_VERSION)     { /* 配置充电泵,使其具有较高的检测范围。 * 启用电荷泵会在检测阶段增加功率级 * 探测范围。这导致平均电流消耗增加。*/ wStatus = phhalHw_SetConfig(pHal,PHHAL_HW_RC663_CONFIG_LPCD_CHARGEPUMP,PH_ON); CHECK_STATUS(wStatus); DEBUG_PRINTF("\nphhalHw_SetConfig."); /* 配置数字滤波器会触发信号 RC663 Plus 算法以获得倍数的平均值 * 检测 I 值和 Q 值的变化。这反过来又延长了射频开启时间 * 增加平均电流消耗。*/ wStatus = phhalHw_SetConfig(pHal,PHHAL_HW_RC663_CONFIG_LPCD_FILTER、 ((uint16_t)(bDigitalFilter)|wDetectionOption)); CHECK_STATUS(wStatus);    }   /* 执行 LPCD 校准周期并获取 LPCD 参考 I 和 Q 值。*/ wStatus = phhalHw_Rc663_Cmd_Lpcd_GetConfig(pHal,&bValueI,&bValueQ); DEBUG_PRINTF("\nphhalHw_Rc663_Cmd_Lpcd_GetConfig."); CHECK_STATUS(wStatus);   *pdwLPCDRefValue = ((bValueI) | (bValueQ<< 0x8)); DEBUG_PRINTF("\npdwLPCDRefValue.");   DEBUG_PRINTF("\nLPCD 校准成功。");   返回 PH_ERR_SUCCESS; } 然后我在主 while 循环中调用 /* ------------------------------------------------------------------ * 开机后运行一次 LPCD 校准 * ------------------------------------------------------------------ */ phStatus_t LPCD_Calibrate(void) { phStatus_t status; uint32_t refVal; char dbg_buf[64]; // 确保在校准前开启 RF phhalHw_FieldOn(pHal); phhalHw_Wait(pHal,PHHAL_HW_TIME_MILLISECONDS,5); status = Calibrate_LPCD(LPCD_DEMO_MODE_DEFAULT,&refVal); // 校准后关闭射频 phhalHw_FieldOff(pHal); if (status == PH_ERR_SUCCESS) { gLpcdValueI = (uint8_t)(refVal& 0xFF); gLpcdValueQ = (uint8_t)((refVal 0xFF)); gLpcdValueQ = (uint8_t)((refVal 0xFF)).>> 😎 & 0xFF); gLpcdCalibrated = 1; sprintf(dbg_buf,"LPCD Calibration OK (I=0x%02X, Q=0x%02X)\r\n", gLpcdValueI, gLpcdValueQ); DEBUG_UART2((unsigned char*)dbg_buf, strlen(dbg_buf)); } else { DEBUG_UART2((unsigned char*)"LPCD Calibration FAILED\r\n", 28); } return status; } 如果 (!lpcdCalibrated)     { 如果 (LPCD_Calibrate() == PH_ERR_SUCCESS) { lpcdCalibrated = 1; // 标记为已完成 DEBUG_UART2((unsigned char*)"LPCD Calibration OK\r\n", 23);          } 不然 { DEBUG_UART2((unsigned char*)"LPCD Calibration FAILED\r\n", 28);      }    } Re: clrc663 lpcd i and q value i getting 0x00   您好,先生, 非常感谢您与我们分享您的示意图。不过,我还是要问一下你们天线的史密斯图。我们确实有一份应用笔记,其中显示了使用廉价的纳米VNA进行这些测量的步骤。 Re: clrc663 lpcd i and q value i getting 0x00 我在这里附上我的硬件测试和原理图,在正常模式下,我得到的是 uid,这不是问题;在 lpcd 模式下,我得到的是 0x00,0x00 的 q 值。在此查看我的测试文件。 Re: clrc663 lpcd i and q value i getting 0x00 抱歉,但是对自定义板的支持非常有限。   要提供任何具体信息,我需要您的硬件,因为评估套件的天线设置配置与您的配置存在很大差异。   不过,您是否介意分享一下天线的史密斯图和原理图,这将是我们提供良好建议的一个很好的起点。   正如我在上一篇文章中提到的那样,我们建议从一开始就遵循一些步骤。其中之一是将我们的 EVK 与您的新天线和新的匹配电路一起使用。所有这些都显示在我们的许多文档中。请看 NFC天线设计|恩智浦半导体视频2。   发送 RF 开启命令后,I 和 Q 值应显示与 0x0 不同的值。 Re: clrc663 lpcd i and q value i getting 0x00 我使用的是带有 stm32 硬件的定制 PCB Clrc663,只有在软件中天线调谐是正确的,我使用了 nfcrdlibEx6_rc663_LPCD_Demo.c 库中的校准演示代码,但 i 和 q 值均为 0x00,然后我使用错误寄存器来确定我在其中出现了什么错误。 printf debug i getting === EEPROM / LPCD 检查开始 === VERSION(0x7F)=0x1A ERROR(before)=0x00 ERROR(after LOADREG)=0x80 > > > EEPROM 错误 (0x80) 仍然存在。LPCD 可能无法正确校准! === EEPROM / LPCD 检查完成 === // 这是代码 phStatus_t Rc663_EepromInitAndCalibrateLPCD( phhalHw_Rc663_DataParams_t *pHal, uint32_t *pdwLPCDRefValue) { phStatus_t status; uint8_t bVersion, bIrq1, bErr; uint8_t bValueI = 0, bValueQ = 0; char dbg[64]; uint8_t eepromVal; uint8_t addr; sprintf(dbg,"\r\n=== EEPROM + LPCD Init ===\r\n"); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 1.读取芯片版本 */ status = phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_VERSION,&bVersion); CHECK_STATUS(status); sprintf(dbg,"VERSION(0x7F)=0x%02X\r\n", bVersion); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 2.清除任何现有错误 */ phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_ERROR,&bErr); sprintf(dbg,"ERROR(before)=0x%02X\r\n", bErr); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 3. 强制将 LOADREG 从 EEPROM 写入寄存器 */ status = phhalHw_Rc663_WriteRegister(pHal, PHHAL_HW_RC663_REG_COMMAND, PHHAL_HW_RC663_CMD_LOADREG); CHECK_STATUS(status); /* EEPROM 加载稍有延迟 */ phhalHw_Wait(pHal, PHHAL_HW_TIME_MILLISECONDS, 5); /* 4.再次检查错误寄存器 */ phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_ERROR,&bErr); sprintf(dbg,"ERROR(after LOADREG)=0x%02X\r\n", bErr); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); if (bErr& PHHAL_HW_RC663_BIT_EE_ERR) { sprintf(dbg,"> > > EEPROM 错误 (0x%02X) detected!\r\n" 、berR); DEBUG_UART2 ((uint8_t*) dbg、strlen (dbg)); /*---EEPROM 转储(前 16 个字节用于调试)---*/ for (addr = 0;addr < 0x10;addr++) { phalHW_rc663_cmd_reade2 (phAL,addr,1,& eePromade2) val); spr intf (dbg," EEPROM [0x%02X] = 0x%02X\ r\n ",addr,eepromVal);DEBUG_UART2 ((uint8_t*) dbg,strlen (dbg));} /*---绕过 EEPROM 继续手动初始化---*/ sprintf (dbg," 绕过 EEPROM,使用手动 RF 设置...\ r\n "); DEBUG_UART2 ((uint8_t*) dbg、strlen (dbg));phhalHW_rc663_WriteRegister(phal,PHHAL_HW_RC663_RC663_REGISTER,PHAL_HW_RC663_RC663_RC663_); phalHW_RC663_WriteRegister REG_TXAMP,0x1F);phhalHW_RC663_WriteRegister(phal,PHHAL_HW_RC663_REG_DRVCON,0x18);} else {sprintf(dbg," EEPROM LOADREG OK。 \ r\n "); DEBUG_UART2 ((uint8_t*) dbg,strlen (dbg));} /* 5. 清除 IRQ 标志 */ phHALHW_RC663_WriteRegister(phal、PHHAL_HW_RC663_REG_IRQ0、0x7F);phalHW_RC663_WriteRegister(phal、PHHAL_HW_RC663_REG_IRQ1、0x7F);/* 6。 启用校准模式 */ phHALHW_RC663_WriteRegister (phAL、PHHAL_HW_RC663_REG_LPCD_OPTIONS、0x02);/* 7. 启动 LPCD_CALIBRATE(0x37 是隐藏的校准命令)*/ phhalHW_RC663_WriteRegister( phal,PHHAL_HW_RC663_REG_COMMAND,0x37);/* 8。 等待 LPCDIRQ */ 做 {phHalHW_rc663_readRegister ( phAL、PHHAL_HW_RC663_REG_IRQ1、& birQ1);} while (! (birQ1 & PHHAL_HW_RC663_BIT_LPCDIRQ)); /* 9. 读取 I/Q 结果 */ phHALHW_RC663_readRegister(phal、PHHAL_HW_RC663_REG_LPCD_RESULT_I、& bValueI);phalHW_rc663_readRegister(phal、PHHAL_HW_RC663_REG_LPCD_RESULT_Q、& bValueQ);/* 10。 存储 */ *pdwLPCDRefValue = (uint32_t)bValueI | ((uint32_t)bValueQ<< 8); sprintf(dbg,"[LPCD] 校准完成:I=0x%02X Q=0x%02X Ref=0x%08X\r\n", bValueI, bValueQ, *pdwLPCDRefValue); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); return PH_ERR_SUCCESS; } Re: clrc663 lpcd i and q value i getting 0x00 您好,先生, 为了校准 CLRC663 的 LPCD,我们强烈建议您使用NFC Cockpit。 这是一个图形用户界面工具,允许用户以图形方式对天线进行微调,同时进行LPCD 校准(第 4.5 节)。我们鼓励您使用这种方法,因为校准必须根据您自己的设计进行。没有任何手册可以按部就班地完成这一程序。 NFC Cockpit 允许用户在读写器卸载和加载时进行实时校准。 请探讨查看以下天线设计视频系列的第 4 段视频的可能性:NFC 天线设计 | 恩智浦半导体
View full article
GD3162 新しい回路図デザインで GD3162 ゲート ドライバを使用する予定です。NXP のサイトで短いデータシートを見つけました。完全なデータシートはありますか? Re: GD3162 この製品に関して要求されたドキュメントは管理リリース下にあり、NDA (秘密保持契約) に基づいてセキュア ファイル経由でアクセスできます。 アクセスをリクエストするには、こちらをクリックしてください: https://www.nxp.com/webapp-signup/docstoreReg  フォームの送信時に、有効な NDA のコピーをアップロードするよう求められることにご注意ください。NXPについてにまだNDAがない場合は、まずNDAのフォームにご記入ください。 https://www.nxp.com/webapp-signup/ndaReqForm NDA の準備ができたら、安全なファイルへのアクセスをリクエストできます。 プロセスを理解するには、以下のリンク/FAQを確認してください。 https://www.nxp.com/support/support/secure-access-rights:SEC-ACCESS https://www.nxp.com/support/support/secure-access-rights/secure-access-rights-faqs:SEC-ACCESS-FAQS
View full article
MCUXpresso SDK:CI/CD 流水线 概述 在不断发展的嵌入式系统开发领域,支持自动化和高效的工作流程变得越来越重要。本文将探讨如何使用 GitHub Actions、Docker、MCUXpresso SDK 和 Visual Studio Code 为嵌入式项目量身打造一个强大的 CI/CD 管道。通过集成这些工具,开发人员可以自动构建、运行测试,并确保在不同团队和环境中一致地交付固件。 我们首先概述了 CI/CD 在嵌入式工作流程中的优势,包括更快的迭代周期、减少人为错误以及增强协作。接下来,我们深入探讨实际设置:使用 Docker 封装构建环境,利用 GitHub Actions 协调构建和测试,以及在 VS Code 中借助 MCUXpresso SDK 来管理和开发固件项目。真实案例和可重复使用的模板将引导读者创建一个可扩展、可维护且针对基于恩智浦的开发板进行了优化的管道。 无论您是希望实现工作流程现代化的嵌入式工程师,还是希望缩短交付时间的产品经理,本指南都将帮助您在开发生命周期中利用自动化的力量。 前提条件 MCUXpresso for VS Code MCUXpresso SDK 24.12 或更高版本 Git GitHub 帐户 Docker 目录 嵌入式工作流程中的 CI/CD 优势 容器 - Docker 自动化 - GitHub Actions 使用流水线 结束语 1. CI/CD 在嵌入式工作流中的优势 在嵌入式系统开发中实施持续集成和持续部署 (CI/CD) 具有变革性优势,尤其是在使用 MCUXpresso SDK 等复杂工具链和特定硬件限制时。以下是主要优势: 自动构建和测试 CI/CD 管道通过自动编译、链接和闪存流程,消除了手动构建步骤。这可确保每次代码更改都能在一致的构建环境中得到验证,从而降低人为错误的风险,节省宝贵的工程时间。 及早发现问题 通过将自动单元测试、静态分析和在环硬件 (HIL) 测试集成到管道中,开发者可以在错误和回归进入生产硬件前及早发现。这将使固件更加稳定,减少集成过程中的意外情况。 使用 Docker 实现一致的环境 使用 Docker 对构建环境进行容器化,可确保开发机器和 CI 运行程序之间的一致性。开发人员不再需要担心工具链版本不匹配或依赖项缺失的问题,一切都已定义并可重现。 改善协作和代码质量 CI/CD 鼓励频繁提交和拉取请求,这些请求会自动验证。这促进了团队成员间更好的协作,执行编码标准,并确保只有经过测试的代码被合并到主分支中。 更快的迭代和部署 借助自动化管道,固件更新可以快速构建、测试并部署到目标设备或暂存环境中。这加快了开发周期,实现了快速原型开发,尤其适用于敏捷或迭代开发模式。 可追溯性和可审计性 CI/CD 系统会记录每一次构建、测试结果和部署,从而提供清晰的更改历史记录。这对于在汽车或医疗设备等受监管行业中进行调试、确保合规性和维持高质量标准至关重要。 跨项目的可扩展性 管道一旦建立,就可以在多个嵌入式项目中重复使用或调整。这种可扩展性减少了新板或应用程序的设置时间,并促进了团队之间的最佳实践。 2. 容器 - Docker 什么是容器? 容器是轻量级、可移植的软件单元,它将代码与其所有依赖项、库和配置文件组成一个代码包,因此可以在不同的计算环境中可靠地运行。 将容器视为一个独立的盒子,其中包含应用程序运行所需的一切。有几个平台可以用来容器化工作区。本指南将重点介绍 Docker。 Docker是什么? Docker 是一个开源平台,它使开发人员能够在容器中构建、打包和运行应用程序。它简化了创建隔离环境的过程,该环境包括应用程序在不同系统上持续运行所需的代码、库、工具和设置等所有内容。 Docker 的核心是确保开发、测试和部署环境相同,无论您是在本地还是在云中工作,都能帮助解决“它在我的机器上运行”的问题。 使用 Docker 对 MCUXpresso SDK 和构建系统进行容器化的步骤 使用 Docker 对 MCUXpresso SDK 和构建系统进行容器化需要以下组件。 Dockerfile - 这是一个文本文件,其中定义了构建 Docker 镜像的步骤,例如安装软件包、复制文件和设置环境变量。 Docker 镜像 - 这是容器环境的快照。它由 Dockerfile 构建,用于创建容器。 Docker 容器 - Docker 镜像的运行实例。它具有隔离性、轻便性和便携性。 编写 dockerfile 1. 打开文本编辑器(例如 VS Code) 2. 创建一个新的文本文件。将其命名为 dockerfile。将此文件保存为 Docker 文件类型。 3. 创建用于容器化 MCUXpresso SDK 和构建系统的 dockerfile 时,必须指定所需的所有元器件。我们在下面提供了一个模板,你可以复制并粘贴到 dockerfile 中。 该模板的用途: - 使用 Ubuntu 22.04 作为容器的基础。这为构建和运行嵌入式工具提供了稳定的 Linux 环境。 - 防止安装期间出现交互式提示 - 安装使用 MCUXpresso SDK 所需的所有软件包(部分为可选软件包) 安装 ARM GNU 13.2 工具链 - 设置一个工作区,以便使用 West 克隆 MCUXpresso SDK - 配置工具链路径环境变量 # Use Ubuntu 22.04 as the base image FROM ubuntu:22.04 # Set environment variables for non-interactive installations ENV DEBIAN_FRONTEND=noninteractive # Install necessary packages /some optional RUN apt update && apt install -y \ curl \ wget \ ca-certificates \ xz-utils \ libncurses5 \ cmake \ ninja-build \ git \ python3 \ python3-pip \ build-essential \ device-tree-compiler \ unzip \ && rm -rf /var/lib/apt/lists/* # =========================================================================================================== # Notes on flags used: # (-LO) follows http redirects and saves the downloaded file with same name as in URL # (-k) ignores SSL certificate verification. This is needed when system security prevents certain actions # Contact IT to whitelist arm servers if needed. # ============================================================================================================ RUN curl -LO -k https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz && \ tar xf arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz && \ rm arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz # Install additional Python packages RUN pip3 install --upgrade west imgtool requests # Set the workspace directory WORKDIR /workspace # Clone the mcuxsdk-manifests repository RUN git clone https://github.com/nxp-mcuxpresso/mcuxsdk-manifests.git # Set the MCUXpresso SDK path environment variable ENV MCUX_SDK_PATH=/workspace/mcuxsdk-manifests # Initialize and update the west workspace RUN cd $MCUX_SDK_PATH && \ west init -l . && \ west update # ARMGCC ENV variable ENV ARMGCC_DIR=/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi # Default command: Start a shell CMD ["/bin/bash"] 构建容器映像 在继续之前,建议设置一个 GitHub 存储库并配置凭据,以便在后续步骤中使用。 1. 创建一个新的存储库。暂时留空。稍后,它将包含以下项目: .github/workflows/docker-build.yml my_app dockerfile README.md 2. 生成个人访问令牌(PAT)。这将允许您访问 GitHub API。 - 点击“我的”图标 - 选择设置 > 开发者设置 > 个人访问令牌 > 令牌(经典版) - 选择“生成新令牌(经典)” - 范围可以根据您的需求自定义。请在本指南中使用以下范围:delete:packages、repo、write:packages - 点击“生成令牌”。生成令牌后,请务必复制并保存该令牌。 - 然后,将个人访问令牌 (PAT) 存储为 GitHub 密钥。GitHub 密钥将用于工作流文件中的身份验证。这样做是为了在不修改工作流文件的情况下提高可重用性、安全性和轮换性。 - 导航到已创建的存储库,然后单击“设置”。 - 选择密钥和变量,然后单击操作。 - 我们将在此处添加 2 个密钥。一个是用户名,另一个是个人访问令牌。点击“新建存储库密钥”。 用户名的密钥 - 这可以个性化定制。然而,在本指南稍后将介绍的工作流文件中,该变量设置为 GH_USERNAME。将名称设置为 GH_USERNAME。在 “密钥” 字段中输入您的 GitHub 用户名。 令牌的密钥 - 工作流已将变量设置为 GH_PAT。将名称设置为 GH_PAT。在 “密钥” 字段中粘贴您的个人访问令牌。 3. 现在我们可以通过命令行构建容器镜像。 - 克隆存储库的本地副本。打开该位置的命令行界面。 - 将 dockerfile 保存到克隆存储库的根目录下。 登录到 GitHub 容器注册表。运行: echo | docker login ghcr.io -u --password-stdin 输出: -构建容器镜像。这是本指南中最长的步骤,但只需构建一次镜像,就能将其推送到 ghcr 以供使用。运行: docker build -t . 输出: - 要验证您的镜像详细信息,请运行: docker images - 标记 Docker 镜像。此命令不会创建新镜像;它只为现有镜像提供新名称和标签。当你准备将镜像推送到像 GHCR 这样的注册表时尤其有用。Docker 要求在推送镜像前必须标记注册表 URL 和存储库名称。运行: docker tag - 将镜像推送到容器注册表。运行: docker push **注意:由于服务器错误,输出可能显示为失败。如果出现这种情况,只需再次运行该命令即可。 再次运行该命令: 恭喜!MCUXpresso SDK 和构建系统现已集成在容器镜像中,可以用于构建项目。接下来,我们将配置 GitHub 以实现自动化。 3. 自动化 - GitHub Actions 为什么要使用 GitHub Actions? GitHub Actions 是 GitHub 内置的自动化工具,允许你定义工作流,根据推送或拉取请求等事件来构建、测试和部署代码。它使用 YAML 文件来配置这些工作流,从而可以直接在存储库中轻松设置 CI/CD 管道。 1. 在本地克隆您的存储库。然后导航到其根目录。 - 在项目根目录内创建 .github/workflows 目录。 - 导航至 VS 代码并创建一个新文件。将其命名为:docker-build.yml - 我们在下面提供了一个模板,您可以将其复制并粘贴到 docker-build.ymll 中。 该模板的用途: 在推送或 PR 时运行 使用包含 MCUXpresso SDK 工具的容器 检查您的存储库 将您的应用复制到 West 工作区 使用 West 为 FRDM-MCXA153 构建它 name: Build MCUXpresso Project on: push: # branches: [ main ] pull_request: jobs: build: runs-on: ubuntu-latest container: image: ghcr.io/nxp-jose/mcuxpresso-sdk:latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Copy my_app into west workspace run: | cp -r $GITHUB_WORKSPACE/my_app /workspace/mcuxsdk-manifests/my_app - name: Build project using west working-directory: /workspace/mcuxsdk-manifests run: | echo "Building project..." west build -b frdmmcxa153 my_app 4. 使用管道 完成您的工作区设置 该过程的最后一步是创建一个项目以用于我们的管道。 1. 打开适用于 VS Code 的 MCUXpresso 2. 点击“从存储库导入示例” 3. 从 MCUXpresso SDK 24.12 或更高版本导入一个项目,作为独立示例。将导入位置设置为克隆存储库的根目录。 4. 将更改暂存、提交并推送到您的存储库。现在,您的存储库中应该包含: *注意:如果在本地构建项目,您将看到 .vscode 目录。将此目录推送到存储库是完全可选的。 5. 推送完成后,在 GitHub 上启用工作流。启用工作流后。连续的推送或拉取请求将触发自动项目构建。 6. 检查构建细节。 - 导航至 GitHub 上的“操作”选项卡 - “操作”选项卡将显示工作流已运行的所有实例。 - 点击“构建”查看详细信息。 - 显示的详细信息是构建过程中执行的各个步骤。点击步骤以查看具体详情。 5. 结论 本指南中概述的 CI/CD 管道为使用 Docker、MCUXpresso SDK 和 GitHub Actions 自动构建提供了一个简单而有效的起点。虽然该示例以基本工作流为重点,但可对其进行广泛自定义,以满足项目的特定需求,例如集成自动测试、添加质量检查或使用自定义 MCUXpresso SDK 清单。利用这些工具,团队可以简化开发流程,确保一致性,并以最少的人工干预来扩展流程。 MCUXpresso SDK
View full article
Example S32K312 ADC_IP Continuous Scan DMA S32DS36 RTD600 * ================================================================================================== * Detailed Description: * * This example shows how to implement ADC continuous scan with DMA read. * ADC1 is set to perform continuous scan of 4 channels (S10/S11/S12,S13) with DMA request enabled * for last channel S13. DMA reads respective sequential ADC data registers in one major loop. * * ADC1 channel S10 is connected to board's potentiometer, converted value is used to dim board's LED. * * ================================================================================================== * Test HW: S32K312EVB-Q172 * MCU: S32K312_172LQFP * Compiler: S32DS 3.6.3 * RTD release: S32K3_S32M27x Real-Time Drivers ASR R21-11 Version 6.0.0 * Debugger: On-Board Debugger (J40), Lauterbach * Target: Internal_FLASH * ==================================================================================================   Any support, information, and technology (“Materials”) provided by NXP are provided AS IS, without any warranty express or implied, and NXP disclaims all direct and indirect liability and damages in connection with the Material to the maximum extent permitted by the applicable law. NXP accepts no liability for any assistance with applications or product design. Materials may only be used in connection with NXP products. Any feedback provided to NXP regarding the Materials may be used by NXP without restriction.  
View full article
SMI-N2078 SECO-从制造到制造-缺失的环节 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 得益于新的创客运动,如今的新企业家和创新者可以快速制作原型。然而,这个看似无限可能的世界在大规模生产产品时却遇到了很大的限制,因为在概念验证和制造之间缺少一个步骤或环节。本次演讲将展示 SECO 如何通过其社区运动和委员会 UDOO 将其嵌入式专业知识与新获得的创客运动经验融合在一起,弥补创客与工业之间的差距。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 得益于新的创客运动,如今的新企业家和创新者可以快速制作原型。然而,这个看似无限可能的世界在大规模生产产品时却遇到了很大的限制,因为在概念验证和制造之间缺少一个步骤或环节。本次演讲将展示 SECO 如何通过其社区运动和委员会 UDOO 将其嵌入式专业知识与新获得的创客运动经验融合在一起,弥补创客与工业之间的差距。 智能机械和工业自动化
View full article
FTF-ACC-F1247 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将涵盖当前变更管理面临的各种主题,包括产品变更通知 (PCN) 对飞思卡尔客户的重要性(特别是在降低成本方面)以及产品和制造流程的质量改进。本次会议还将讨论从金线到铜线转变的几个方面,包括这一转变的技术细节、飞思卡尔为实现这一转变所做的工作、按产品系列进行的推出时间审查以及客户批准的重要性。FTF-ACC-F1247 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本次会议将涵盖当前变更管理面临的各种主题,包括产品变更通知 (PCN) 对飞思卡尔客户的重要性(特别是在降低成本方面)以及产品和制造流程的质量改进。本次会议还将讨论从金线到铜线转变的几个方面,包括这一转变的技术细节、飞思卡尔为实现这一转变所做的工作、按产品系列进行的推出时间审查以及客户批准的重要性。FTF-ACC-F1247
View full article
MCX N947 TFLM Modelrunner Inference of Neutron Converted Models I want to benchmark a bunch of tflite models (<500KB in size) on my FRDM MCXN947 (CPU vs. NPU) via the TFLM modelrunner using HTTP. The problem: CPU inference does not work for all models and NPU inference not at all. hardware: - FRDM-MCXN947 development board (connected to my windows machine via USB and Ethernet) software and tool setup: - host: windows 11 machine - eIQ Neutron SDK: eiq-neutron-sdk-windows-3.0.1 - MCUXpresso SDK: SDK_26_03_00_FRDM-MCXN947 - Project from SDK: frdmmcxn947_tflm_modelrunner_cm33_core0 ML models for CPU inference: - ad01_int8.tflite - kws_ref_model.tflite - pretrainedResnet_quant.tflite - vww_96_int8.tflite ML models neutron converted with Neutron Converter (part of eIQ Neutron SDK) for NPU inference: eiq-neutron-sdk-windows-3.0.1\bin neutron-converter --target mcxn94x --input ad01_int8.tflite --output ad01_int8_converted_3_0_1.tflite - ad01_int8_converted_3_0_1.tflite - kws_ref_model_converted_3_0_1.tflite - pretrainedResnet_quant_converted_3_0_1.tflite - vww_96_int8_converted_3_0_1.tflite Steps performed 1. Update eIQ Projects with the Latest eIQ Neutron SDK Libraries Copy from: eiq-neutron-sdk-windows-3.0.1\target\mcxn94x\common\include\NeutronErrors.h eiq-neutron-sdk-windows-3.0.1\target\mcxn94x\driver\include\NeutronDriver.h eiq-neutron-sdk-windows-3.0.1\target\mcxn94x\mcxn\libNeutronDriver.a eiq-neutron-sdk-windows-3.0.1\target\mcxn94x\mcxn\libNeutronFirmware.a to: frdmmcxn947_tflm_modelrunner_cm33_core0\include\NeutronErrors.h frdmmcxn947_tflm_modelrunner_cm33_core0\driver_include\NeutronDriver.h frdmmcxn947_tflm_modelrunner_cm33_core0\mcxn\libNeutronDriver.a frdmmcxn947_tflm_modelrunner_cm33_core0\mcxn\libNeutronFirmware.a 2. Build and flash the project "frdmmcxn947_tflm_modelrunner_cm33_core0" with vscode 3. Run inference via HTTP using the flashed TFLM Modelrunner Command: curl -X PUT http://192.168.178.75:10818/v1 -F "block_content=@C:\ \ad01_int8.tflite" Output via Serial Monitor: .... run ms: 6.167000 Command: curl -X PUT http://192.168.178.75:10818/v1 -F "block_content=@C:\ \vww_96_int8.tflite" Output via Serial Monitor: .... run ms: 182.042000 For any of the other models it doesnt work Output:  a) No inference after flashing: FLASH 0x104000 Erased, Program at 104000: 16384 bytes == FLASH 0x108000 Erased, Program at 108000: 16384 bytes == FLASH 0x10c000 Erased, Program at 10c000: 16384 bytes == FLASH 0x110000 Erased, Program at 110000: 16384 bytes == FLASH 0x114000 Erased, Program at 114000: 16384 bytes == FLASH 0x118000 Erased, Program at 118000: 16384 bytes == FLASH 0x11c000 Erased, Program at 11c000: 16384 bytes == FLASH 0x120000 Erased, Program at 120000: 16384 bytes == FLASH 0x124000 Erased, Program at 124000: 16384 bytes == FLASH 0x128000 Erased, Program at 128000: 16384 bytes == FLASH 0x12c000 Erased, Program at 12c000: 16384 bytes == FLASH 0x130000 Erased, Program at 130000: 16384 bytes == FLASH 0x134000 Erased, Program at 134000: 16384 bytes == FLASH 0x138000 Erased, Program at 138000: 544 bytes == b) no flashing process at all c) Error HardFault_Handler Line 343: ldr r0,=HardFault_Handler in  SDK_26_03_00_FRDM-MCXN947\mcuxsdk\devices\MCX\MCXN\MCXN947\gcc\startup_MCXN947_cm33_core0.S stopped by debugger Any hints are highly appreciated! MCXN Re: MCX N947 TFLM Modelrunner Inference of Neutron Converted Models Hi @Laurens26  I think the problem is more likely a mix of version alignment, rather than a pure “model size” issue. I think you can refer to this link. How to Update eIQ Projects with the Latest eIQ Neutron SDK Libraries BR Harry
View full article
S32K146 FLEXCAN RJW 配置 在 S32K146 中,FLEXCAN 的 RJW 配置与 PSEG2 相比会有什么影响吗? Re: S32K146 FLEXCAN RJW config 您好@SaLan 这是我的失误;我以为出现了错误信息,表明 RJW 设置有误。 RJW 表示在重新同步期间 PESG1 段的延长时间和 PSEG2 段的缩短时间。PSEG2 段的缩短意味着采样点将向后移动,如果移动幅度过大,则会导致采样误差。 因此,CAN 位定时要求规定,重新同步跳转宽度不能超过 4 个时间片,也不能超过 PHASE_SEG1 段中的时间片数量。 Re: S32K146 FLEXCAN RJW config 如图所示,我将 RJW 设置为 3,并使其大于 PSEG2,但我没有收到任何“不可行的”警告。 如果可以的话,能否告诉我这样配置寄存器会产生什么影响? Re: S32K146 FLEXCAN RJW config 您好@SaLan 当您使用 S32 DS 配置 FlexCan 时,它会明确地告诉您这是不可能的。 Re: S32K146 FLEXCAN RJW config 根据 CAN 协议,SJW ≤ PSEG2 ≤ PSEG1,且 SJW ≤ 4 Tq。 如果将 FLAXCAN 寄存器中的 SJW 配置为大于 PSEG2,这会有任何影响吗? Re: S32K146 FLEXCAN RJW config 您好@SaLan 对于 S32K146 FlexCAN,PSEG2 会影响标称比特时间和采样点,而 RJW 仅限制重新同步调整,不属于标称比特率计算的一部分。 Re: S32K146 FLEXCAN RJW config RJW 值高于 PSEG2 值会产生影响吗?
View full article
VS code extension update broke RTOS viewer Hello, Until now we were using vscode tool version 1.9.20 (old), and we were using https://marketplace.visualstudio.com/items?itemName=mcu-debug.rtos-views to view the status of freertos threads (RT1189). After the update the tool no longer works and just shows "RTOS detection did not finish. It will be resumed on the next halt."  Any suggestions? Thanks Re: VS code extension update broke RTOS viewer Hi, MCUXpresso for VS Code has own RTOS viewer for a long time. Please check https://mcuxpresso.nxp.com/mcux-vscode/latest//html/RTOS-Details.html  Also, old change, the extension migrated from using Microsoft C/C++ Debug Adapter to own debug adapter based on Cortex-Debug. You have to create a new Debug Configuration that will automatically create one based on our debug adapter (you'll notice "mcuxpresso-debug" as type). PS. Please be aware that if you are using Segger debug probe, this requires special enablement for RTOS support (see https://mcuxpresso.nxp.com/mcux-vscode/latest//html/Debug-Views.html#enabling-rtos-awareness) Regards, Cristian Re: VS code extension update broke RTOS viewer Ok I got it working, we where compiling with -Og flag in debug and changing that to -O0 made the viewer work. But I guess the tool needs improvement as Og shall be default for standard edit-debug process?. Unrelated to this, I also see this warning in debug console "warning: could not convert ' \Main.cpp' from the host encoding (CP1252) to UTF-32. This normally should not happen, please file a bug report." Thanks Re: VS code extension update broke RTOS viewer Thanks, In fact the message is coming from MCUXpresso RTOS view itself (I incorrectly referred a different plugin).  I have attached the launch.json and custom device script (it is same as MIMXRT1180-EVK.json for Linkserver 26.3.123, but the "connect-script" is "RT1180_reset.scp".  Our app runs in hyperram and uses SDK 2.16. Freertos variables are correctly set. I can debug an step through our app, but RTOS Details view still shows "RTOS detection did not finish. It will be resumed on the next halt."  Thanks Re: VS code extension update broke RTOS viewer @cristiantepus any updates on this? Re: VS code extension update broke RTOS viewer Today I found that MCUXpresso RTOS viewer does not work in release mode, and does not show anything. But https://marketplace.visualstudio.com/items?itemName=mcu-debug.rtos-views works with -Og and in release modes, but cannot work with current mcuxpresso vscode plugin (gets disabled?). Is there a way to bring that back? Re: VS code extension update broke RTOS viewer Hi @arunkumar_g, The RTOS details view we offer is relying on the existence of some symbols inside the ELF file (e.g. "FreeRTOSDebugConfig", "pxCurrentTCB", "uxCurrentNumberOfTasks", and many more). I agree that the "RTOS detection did not finish. It will be resumed on the next halt." does not guide on what went wrong and we'll make sure to make this clearer. Regarding the results you obtained for "debug" vs. "release", I'd say this is the result of compiler/linker optimizations -- required symbols are stripped-out so any consumer will not find these. In this case, not only the RTOS Details view will fail but the low-level GDB Thread Awareness (LinkServer, J-Link, PEmicro) will be unable to show and debug FreeRTOS tasks in Call Stack view. In this case, I can only suggest you make sure you update the code so that you ensure the presence of the required symbols in both, "debug" and "release" build modes. We'll make sure to update the documentation and the information from the tool to make it clear what symbols are required but are missing -- thus making the views unable to show data. You also mentioned that MCU Debug RTOS view is working in this particular case. Could be, but the last time I checked there was no support any kind of versioning support (version is found by inspecting "FreeRTOSDebugConfig"). And keep in mind that the FreeRTOS data structures are really specific to the RTOS version. To enable MCU Debug views you could ask the maintainers how to add the "mcuxpresso-debug" debug adapter (MCUXpresso specific) in the supported list. Given that you're using a project based on an old SDK 2.16, I'd also suggest switching to the latest MCUXpresso SDK based on CMake & Kconfig.   Some useful links: - RTOS Details: RTOS Details — MCUXpresso for VS Code 26.04 documentation - MCUXpresso SDK: MCUXpresso SDK Documentation — MCUXpresso SDK Documentation   Thanks, Adrian
View full article
CAN based WakeUp Transrecevier TJA1465 Hi  I am using TJA1465 CAN SIC transceiver with partial networking for CAN Based Wake up i have configure this with 500kbs bitrate and ID 0x18ff21b1 for CAN wake up using partial networking using SPI. But transreceiver wake ups for other bitrate also which is not configured in the Partial networking data rate and filter configuration register (address 031h). why does transreciever wake up for bitrate also other than configured.  below is the sample code   static void tja1465_configure_can_wakeup_ext_dlc0(void) { uint8_t mode_stat,sys_stat; printf("CAN Wakeup Config Enter \n" ); tja1465_read(REG_MODE_STATUS, &mode_stat); printf("Mode Status (0x070) = 0x%02X (%s)\n",mode_stat, mode_str(mode_stat)); tja1465_write(0x031, 0x14); /* WUF ID = 0x18FF21B1 *//*0x18FF0180* MASK 0x0000304D*/ tja1465_write(0x020, 0xB1); tja1465_write(0x021, 0x21); tja1465_write(0x022, 0xFF); tja1465_write(0x023, 0x18); /* WUF ID mask (match full 29-bit ID) */ tja1465_write(0x024, 0x00); tja1465_write(0x025, 0x00); tja1465_write(0x026, 0x00); tja1465_write(0x027, 0x00); tja1465_write(0x028, 0x05); tja1465_write(0x029, 0x00); tja1465_write(0x02A, 0x00); tja1465_write(0x02B, 0x00); tja1465_write(0x02C, 0x00); tja1465_write(0x02D, 0x00); tja1465_write(0x02E, 0x00); tja1465_write(0x02F, 0x00); tja1465_write(0x030, 0xC8); tja1465_write(0x011, 0x00); tja1465_write( 0x060, 0xFF); tja1465_write( 0x061, 0xFF); tja1465_write( 0x062, 0x04); tja1465_write(0x032, 0x03); uint8_t pn_status_reg; tja1465_read(0x073, &pn_status_reg); tja1465_read(0x071, &sys_stat); printf("PN Status (0x073) = 0x%02X (CPNS: %s),CPNERRS :0x%02X\n", pn_status_reg, (pn_status_reg & 0x20) ? "OK" : "Error",(pn_status_reg & 0x40)); printf("System Status(0x071) = 0x%02X\n", sys_stat); tja1465_write(REG_MODE_CTRL, MODE_SLEEP); usleep(3000); tja1465_read(REG_MODE_STATUS, &mode_stat); printf("Mode Status (0x070) = 0x%02X (%s)\n", mode_stat, mode_str(mode_stat)); tja1465_read(REG_SYS_STATUS, &sys_stat); printf("System Status(0x071) = 0x%02X\n", sys_stat); printf("CAN Wakeup Config Exit \n" ); } Re: CAN based WakeUp Transrecevier TJA1465 Hello Vivekananda Good day! I'm going to run tests to find the error and I'll get back to you as soon as I have an answer. Have a great day and best of luck. Re: CAN based WakeUp Transrecevier TJA1465 Hello Vivekananda Can you clarify what they mean with below green sentence on ‘other bitrates’, is this about CAN FD frames? But transreceiver wake ups for other bitrate also which is not configured in the Partial networking data rate and filter configuration register (address 031h). If it’s indeed CAN FD frames, then after the wake-up please check if PNFDER =1. If so, try changing below yellow line to: tja1465_write(0x032, 0x07). This will set PNECC = 1 and CAN FD frames would not increase the error counter anymore, PNFDER should stay 0 and the device does not wake up. The Application Notes (AN14388, which can be downloaded on our page) are showing an example SPI sequence for a PN configuration for your reference (section 4.2, pages 23-24). Please take a look. I hope this information has helped you, please let me know if you need help with anything else. Have a great day and best of luck.
View full article
S32K376 整车控制器VCU – 如何在 S32DS 中实现基于 SPI 的 DIO (MSDI)? 我正在开发 S32K376 整车控制器VCU POC 板,其中 MSDI 设备通过 SPI 连接。 从原理图来看,使用了以下 MSDI 相关信号: SPI 信号:MSDI_CS、MSDI_SCLK、MSDI_MOSI、MSDI_MISO 控制/状态信号:msdi_intb, msdi_wakeb 模拟/多路复用信号:MSDI_AMUX 用于数字输入和输出的MSDI SGx / SPx 引脚 我想使用带有 S32 配置工具 (S32CT) 的 MBDT(Simulink)来实现这一目标,但我不清楚正确的软件方法。 具体来说,我需要以下方面的指导: 如何在 S32CT 中配置和使用 SPI 引脚以使其与外部 MSDI 设备配合使用 MSDI_INTB 和 MSDI_WAKEB 应如何配置(DIO 与 ICU/EXTI)并在 MBDT 中处理 如何在软件中访问MSDI 数字输入/输出(SGx / SPx) 是否有任何 MCAL 支持模式? 还是应该通过自定义 SPI 命令 + 应用级抽象来实现? MSDI_AMUX 通常应如何处理(ADC 路径/预期用途) 我没有有效的参考资料或示例来展示在 S32K376/96 整车控制器VCU & 电池管理系统 示例 POC 项目中使用 MBDT + S32CT 的流程。 请提出建议的实施方法(分步实施或分块实施) Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 你好@mariuslucianand 能否请您对此发表评论? 先行致谢。 BR, Petr Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 大家好 由于没有人回复,我尝试了很多方法,但在使用 S32K396 在同一 VCU POC 板上工作时发现,外部 MSDI 设备通过 LPSPI3 连接。但是,SPI 初始化在运行时会出现总线故障。 观察到的问题 在执行 Lpspi_Ip_Init() 时,代码在以下位置出现故障: Base->CFGR1 = PhyUnitConfigPtr->Cfgr1; 调试器观察: 实例 = 3 基地址 = 0x40364000 寄存器内容如下verid = 53248 param = 53249 cr = 53249 sr = 53249 紧随其后:BusFault: imprecise data access error HardFault escalation:在访问 LPSPI3 的寄存器时发生。 请提供以下帮助: 具体是哪些配置/设置(参见附件)不正确?或 要正确访问 MSDI I/O 引脚数据,还需要哪些额外设置/MBDT 块集? Re: S32K376 VCU – How to implement SPI-based DIO (MSDI) in S32DS? 你好 请查看以下文章,获取有关配置 SPI 外设以从 MC33CD1030 IC 获取数据的帮助: 如何:使用恩智浦 MBDT 在 S32K396BMS-EVB 上安装 MSDI MC33CD1030 请注意,本文主要介绍从 MC33CD1030 IC 发送和接收数据的 SPI 配置。有关 CD1030 的更多信息,请查阅其数据表。 顺祝商祺! 索林-班奇拉
View full article