Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
オンラインプロビジョニング ボードのオンラインプロビジョニングは無事完了しました。あとは、edge2lockのプロビジョニング後に作成された証明書やキーを抽出するか、場合によっては読み取る必要があるのですが、それは可能でしょうか? Frdm i.mx93 を使用しています Re: Online Provisioning こんにちは、 pkcs11-toolを使っても構いません。こちらのドキュメントをご覧ください。 https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_guide/pkcs11/pkcs11_tool_user_guide.md また、SMWのユーザーマニュアルもご覧になることをお勧めします: https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_manual/SMW_UserManual_UM12513.pdf よろしくお願いいたします。 アルド。 Re: Online Provisioning こんにちは、アルドさん。 お返事ありがとうございます。 FRDM i.MX93でオンラインプロビジョニングに成功した後、SMW PKCS#11プロバイダーでpkcs11-toolを使おうとしましたが、プロビジョニング済みの証明書やキーが見えたり読み取ったりできません。 もう少し詳しく教えていただけますか: プロビジョニングされた証明書と秘密鍵はPKCS#11インターフェースを通じてアクセス可能でしょうか? そうでない場合、それらはELEに安全に保存され、エクスポートされることなくPSA Crypto/SMW APIを通じてのみ使用されることを意図しているのでしょうか? 私の目標は、プロビジョニングされた認証情報を使用して相互TLS接続を確立することです。 ありがとう。
記事全体を表示
S32DS 3.4 License Problem Dear NXP team, 当我重新安全S32DS 3.4时,无法激活,提示如下图。目前我已无法重旧电脑上返回license,麻烦处理一下。谢谢! Re: S32DS 3.4 License Problem 你好, 可用许可证数量已增加。
記事全体を表示
USXGMII multi-rate on i.MX95 Hi, we are trying to evaluate if we can implement an ethernet port on the i.MX95 that is able to support the following ethernet speeds: 10GBASE-T 5GBASE-T 2.5GBASE-T 1000BASE-T 100BASE-TX 10BASE-Te In general this requires us to place a 10Gbit capable ethernet PHY on our design and connect it to the i.MX95 ethernet controller via one of two interfaces: USXGMII or XFI From our understanding the USXGMII interface is a multi-rate interface in theory, meaning it can facilitate all speeds from 10Gbit to 10bit over one link. In contrast the XFI interface is a single-rate interface that can only facilitate 10Gbit. According to the i.MX95 reference manual (e.g. section 104.2, table 621) the i.MX95 supports both XFI and "10G-USXGMII". So initially it looks like our desired interface USXGMII seems to be supported. There are several points that confuse us however: 1. The declaration "10G-USXGMII" could be interpreted to mean that the interface is a USXGMII link in theory but it only really works in the 10Gbit mode. 2. The NXP eval board IMX95LPD5EVK-19 implements a 10GBase-T port using a Marvell AQR113C PHY. a) In the block diagram in figure 1, section 1.1 the PHY looks to be connected to the USXGMII interface: b) In the associated section 2.11.3 "10 Gbit Ethernet Interface" the AQR113C ethernet transceiver is said to support all data rates from 10Gbit to 10bit, hinting at true USXGMII: c) This section also mentions that the interface used to connect the ethernet PHY is XFI: So in conclusion we are confused wether or not the i.MX95 supports the full multi-rate USXGMII or only a 10Gbit-only version. We tried to look at the NXP eval board as a reference but we are not sure either if the 10GbE port on that board is connected via USXGMII (allowing multi-rate from 10Gbit to 10bit) or via XFI (10Gbit only). Could you please clarify for us: Is it possible to implement a true multi-rate 10GbE port on the i.MX95 that supports speeds from 10Gbit to 10bit? Re: USXGMII multi-rate on i.MX95 Thank you very much for this in-depth response. This clears up any confusion on our side! Re: USXGMII multi-rate on i.MX95 1. Meaning of "10G-USXGMII" "10G-USXGMII" refers to the standard multi-rate USXGMII protocol, not a 10G-only mode. The "10G" denotes the fixed SerDes lane speed, while USXGMII supports in-band rate adaptation for 10M, 100M, 1G, 2.5G, 5G, and 10G Ethernet. On i.MX95, this mode is represented by the PCS_PROT_10G_SXGMII setting. 2. Interface Used on the i.MX95 EVK The i.MX95 EVK uses XFI (10GBASE-R) rather than USXGMII. In imx95-19x19-evk.dts, enetc_port2 is configured as: phy-mode = "10gbase-r"; Therefore, the onboard AQR113C operates in XFI mode. 3. Is True Multi-Rate USXGMII Supported? Yes. The i.MX95 NETC hardware supports USXGMII, and the Linux ENETC4 driver handles speed changes through enetc4_set_port_speed(). The Marvell AQR113C also supports USXGMII host-interface mode. 4. What Is Needed on a Custom Board? To enable full multi-rate operation: Configure the device tree: phy-mode = "usxgmii"; managed = "in-band-status"; Configure the AQR113C firmware for USXGMII host mode instead of XFI. The EVK uses XFI for its 10GbE port, but a custom i.MX95 design can use USXGMII with the AQR113C (or a similar PHY) to support 10M/100M/1G/2.5G/5G/10G over a single MAC-to-PHY link. Thanks Re: USXGMII multi-rate on i.MX95 I am not the original poster but I am also trying to get usxgmii working. Has NXP ever validated if usxgmii works on the BSP kernel? I am trying to use it with a mv-cux3610 phy but I get these errors: [ 43.063202] nxp_enetc4 0002:00:10.0 (unnamed net_device) (uninitialized): MAC returned PCS which does not support usxgmii [ 43.074224] nxp_enetc4 0002:00:10.0 (unnamed net_device) (uninitialized): failed to validate link configuration for inband [ 43.085308] nxp_enetc4 0002:00:10.0: Failed to create phylink [ 43.091726] nxp_enetc4 0002:00:10.0: probe with driver nxp_enetc4 failed with error -22 it seems to be caused by the netc PCS not advertising usxgmii support, only 10gbase-r, 2500-basex and sgmii: (this is on the lf-6.18.y linux-imx branch) Re: USXGMII multi-rate on i.MX95 Just one more follow-up question: Is the driver for the Marvell AQR113C included in the NXP Linux BSP or is it an out-of-tree module we must supply ourselves? Re: USXGMII multi-rate on i.MX95 Thank you for your reply! Last question from my side: Is it possible to configure the enetc_port2 and the AQR113C on the i.MX95 EVK to USXGMII mode? Would this allow us to test the multi-rate functionality of the USXGMII interface on the EVK? Re: USXGMII multi-rate on i.MX95 the driver has been included in NXP Linux BSP, link: https://github.com/nxp-real-time-edge-sw/real-time-edge-linux/blob/linux_6.18.20/drivers/net/phy/aquantia/aquantia_main.c Re: USXGMII multi-rate on i.MX95 Simply "switching the DTS to usxgmii" on the EVK is only a software-level attempt. You would also have to re-provision the AQR113C with USXGMII firmware, and because of the EVK's XFI-oriented board design, this is not a reliable path for multi-rate validation. If the goal is to validate true multi-rate USXGMII (10M/100M/1G/2.5G/5G/10G), we recommend building a custom board designed for USXGMII (SerDes routing + AQR113C in USXGMII host-mode firmware + phy-mode = "usxgmii"). You can use EVK board, after obtaining the USXGMII provisioning firmware for the AQR113C, but please be aware of its limitations. Thanks
記事全体を表示
HTTPS接続やI.mx9のTLS接続で設定するためにプロビジョニング済みのcertやkeyを使うことは可能でしょうか? i.MX93のプロビジョニング済み証明書と秘密鍵は、直接HTTPS/TLS接続を確立するために使えますか?もしそうなら、クライアント/サーバー認証やmTLS実装のためにこれらの認証情報にアクセスし活用する推奨方法は何ですか? プロビジョニングが完了し、セキュアオブジェクトブロブが /etc/ele/ に存在する場合、プロビジョニングされた認証情報を実際の HTTPS/TLS 接続で使用するための推奨ワークフローは何ですか? Re: can we use provisioned cert or key for setting up in the https connection or tls connection in i こんにちは、 @Manuel_Salas ご返信ありがとうございます。 mbedTLS/opaque-keyに関するガイダンスに従って、プライベートキーに関する問題は弊社側で解決済みです。 残りの質問は、EL2GO を介してプロビジョニングされ、秘密鍵とともに /etc/ele/ に保存される証明書についてです。証明書は公開データであるため、TLS ハンドシェイクのために mbedtls_x509_crt_parse_der() に渡すために、プレーンな DER として抽出する必要があります。鍵とは異なり、証明書は不透明なままにしておく必要はありません。 プロビジョニングされた証明書オブジェクトの平文DERバイトを取得するためにサポートされているSMW/PSA呼び出しは何ですか? 具体的には、オブジェクトIDをUIDとして使用してpsa_ps_get() / psa_its_get()(PSA保護ストレージ / 内部信頼ストレージ)を介して公開されるのか、それとも別のSMW APIを介して公開されるのか?インストールされたSMWヘッダーにはprotected_storage.hとinternal_trusted_storage.hが見られますが、証明書オブジェクトに対してこれを意図した経路かどうかを確認したいです。 Re: can we use provisioned cert or key for setting up in the https connection or tls connection in i こんにちは、 @NEXUSNERD お元気でお過ごしのことと思います。 i.MX93では、プロビジョニングフローは秘密鍵が ELEによって保護されるように設計されています。 したがって、/etc/ele/ に保存されているブロブは、ELEがプロビジョニングされたキー素材を再ロードまたは参照できるようにする安全なオブジェクト表現であり、通常のTLSキーファイルとして扱うことを意図していません。 imx-セキュア・エンクレーブ(Mbed-TLS)を見てみてください。 よろしくお願いいたします。 サラス。
記事全体を表示
USXGMII 多速率 i.MX95 您好, 我们正在评估是否可以在 i.MX95 上实现一个能够支持以下以太网速度的以太网端口: 10GBASE-T 5GBASE-T 2.5GBASE-T 1000BASE-T 100BASE-TX 10BASE-Te 通常,这要求我们在设计中集成一个支持 10Gbit 以太网的 PHY,并通过 USXGMII 或 XFI 这两个接口之一将其连接到 i.MX95 以太网控制器。 据我们了解,USXGMII 接口理论上是一个多速率接口,这意味着它可以通过一条链路实现从 10Gbit 到 10bit 的所有速度。 相比之下,XFI 接口是单速率接口,只能支持 10Gbit。 根据 i.MX95 参考手册(例如第 104.2 节,表 621)i.MX95 同时支持 XFI 和“10G-USXGMII”。所以初步看来,我们想要的接口 USXGMII 似乎得到了支持。 然而,有几点让我们感到困惑: 1.“10G-USXGMII”声明可以解释为该接口理论上是 USXGMII 链路,但实际上只能在 10Gbit 模式下工作。 2. NXP 评估板IMX95LPD5EVK-19 使用 Marvell AQR113C PHY 实现 10GBase-T 端口。 a) 在图 1 的框图中,1.1 节中,PHY 似乎连接到了 USXGMII 接口: b) 在相关的 2.11.3 节“10 Gbit 以太网接口”中,AQR113C 以太网收发器据称支持从 10Gbit 到 10bit 的所有数据速率,暗示了真正的 USXGMII: c) 本节还提到,用于连接以太网 PHY 的接口是 XFI: 因此,我们最终还是不清楚 i.MX95 是否支持完整的多速率 USXGMII,还是只支持 10Gbit 版本。 我们尝试以 NXP 评估板作为参考,但我们也不确定该板上的 10GbE 端口是通过 USXGMII 连接(允许从 10Gbit 到 10bit 的多速率)还是通过 XFI 连接(仅限 10Gbit)。 请问能否为我们澄清一下: i.MX95 是否有可能实现真正的多速率 10GbE 端口,支持从 10Gbit 到 10bit 的速度? Re: USXGMII multi-rate on i.MX95 非常感谢您如此详尽的回复。 这样就消除了我们这边的任何疑惑! Re: USXGMII multi-rate on i.MX95 1. “10G-USXGMII”的含义 “10G-USXGMII”指的是标准的多速率USXGMII协议,而不是仅10G模式。“10G”表示固定的 SerDes 通道速度,而 USXGMII 支持 10M、100M、1G、2.5G、5G 和 10G 以太网的带内速率自适应。 在 i.MX95 上,此模式由 PCS_PROT_10G_SXGMII 设置表示。 2. i.MX95 EVK 上使用的接口 i.MX95 EVK 使用 XFI (10GBASE-R) 而不是 USXGMII。在 imx95-19x19-evk.dts 中,enetc_port2 配置如下: phy-mode = "10gbase-r"; 因此,机载 AQR113C 以 XFI 模式运行。 3. 是否支持真正的多速率 USXGMII? 是的。i.MX95 NETC 硬件支持 USXGMII,Linux ENETC4 驱动程序通过 enetc4_set_port_speed() 处理速度更改。Marvell AQR113C 也支持 USXGMII 主机接口模式。 4. 定制板需要哪些组件? 为实现完整的多速率操作: 配置设备树: phy-mode = "usxgmii"; managed = "带内状态"; 将 AQR113C 固件配置为 USXGMII 主机模式而不是 XFI 模式。 EVK 的 10GbE 端口使用 XFI,但定制的 i.MX95 设计可以使用 USXGMII 和 AQR113C(或类似的 PHY)来支持通过单个 MAC 到 PHY 链路传输 10M/100M/1G/2.5G/5G/10G 网络。 谢谢! Re: USXGMII multi-rate on i.MX95 我不是原帖作者,但我也在尝试让usxgmii运行起来。 NXP 是否验证过 usxgmii 是否能在 BSP 内核上运行?我尝试将其与 mv-cux3610 PHY 一起使用,但出现以下错误: [ 43.063202] nxp_enetc4 0002:00:10.0 (unnamed net_device) (uninitialized): MAC returned PCS which does not support usxgmii [ 43.074224] nxp_enetc4 0002:00:10.0 (unnamed net_device) (uninitialized): failed to validate link configuration for inband [ 43.085308] nxp_enetc4 0002:00:10.0: Failed to create phylink [ 43.091726] nxp_enetc4 0002:00:10.0: probe with driver nxp_enetc4 failed with error -22 这似乎是由于 netc PCS 没有宣传 usxgmii 支持,而只支持 10gbase-r、2500-basex 和 sgmii 造成的: (这是在 lf-6.18.y linux-imx 分支上) Re: USXGMII multi-rate on i.MX95 还有一个后续问题:NXP Linux 电路板支持包。 中是否包含 Marvell AQR113C 的驱动程序,还是我们需要自己提供的外部模块? Re: USXGMII multi-rate on i.MX95 该驱动程序已包含在 NXP Linux 电路板支持包中,链接: https://github.com/nxp-real-time-edge-sw/real-time-edge-linux/blob/linux_6.18.20/drivers/net/phy/aquantia/aquantia_main.c Re: USXGMII multi-rate on i.MX95 感谢你的回复! 我最后一个问题:是否可以将 i.MX95 EVK 上的 enetc_port2 和 AQR113C 配置为 USXGMII 模式?这样我们就可以测试 EVK 上 USXGMII 接口的多速率功能了吗? Re: USXGMII multi-rate on i.MX95 在 EVK 上简单地“将 DTS 切换到 usxgmii”只是软件层面的尝试。 您还需要使用 USXGMII 固件重新配置 AQR113C,但由于 EVK 的板设计面向 XFI,因此这不是多速率验证的可靠途径。 如果目标是验证真正的多速率 USXGMII(10M/100M/1G/2.5G/5G/10G),我们建议构建一个专为 USXGMII 设计的定制板(SerDes 路由 + AQR113C 在 USXGMII 主机模式固件中 + phy-mode = "usxgmii")。 在获得 AQR113C 的 USXGMII 配置固件后,您可以使用 EVK 板,但请注意其局限性。 谢谢!
記事全体を表示
CodeWarrior License Questions We use CodeWarrior 10.6 on a legacy product and need to install it on a new P.C.  I'm unable to find an offline CodeWarrior 10.6 offline install and the online install fails (missing download site). I can find a 10.7 download.  We have permanent floating licenses for 10.6.  Will these continue to work with 10.7 or can someone point me to an offline 10.6 install? thanks
記事全体を表示
在线配置 我已经成功完成了主板上的在线配置,现在我需要做的是提取证书或密钥,或者读取 edge2lock 配置后创建的 blob,这可以做到吗? 使用 Frdm i.mx93 Re: Online Provisioning 你好, 您可以使用 pkcs11-tool 来完成此操作,请参阅此处的文档: https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_guide/pkcs11/pkcs11_tool_user_guide.md 另外,我建议您查阅一下SMW用户手册: https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_manual/SMW_UserManual_UM12513.pdf 此致敬礼/Saludos, 阿尔多。 Re: Online Provisioning 嗨,阿尔多, 感谢你的回复。 在 FRDM i.MX93 上成功进行在线配置后,我已经尝试使用 pkcs11-tool 和 SMW PKCS#11 提供程序,但我看不到或读不到已配置的证书或密钥。 请问您能否澄清一下: 是否预期可以通过 PKCS#11 接口访问已配置的证书和私钥? 如果不是,它们是否安全地存储在 ELE 中,并且仅打算通过 PSA Crypto/SMW API 使用而不导出? 我的目标是使用已配置的凭据进行双向 TLS 连接。 谢谢。
記事全体を表示
S32DS 3.4 License Problem Dear NXP team, When I tried to reactivate my S32DS 3.4, I was unable to do so, and the message shown in the image below appears. I am currently unable to restore the license on my old computer. Could you please help me resolve this? Thank you! Re: S32DS 3.4 License Problem Hi,  the number of available licenses has been increased. 
記事全体を表示
Online Provisioning I have successfully completed the online Provisioning on my board , now what I have to do is I have extract the cert or key or possible read the blob which is created  after the edge2lock provisioning so is it possible to do that ?  Using Frdm i.mx93 Re: Online Provisioning Hello, You may use pkcs11-tool for this, please have a look to the documentation here: https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_guide/pkcs11/pkcs11_tool_user_guide.md Also, I would suggest to have a look to the SMW user manual: https://github.com/nxp-imx/imx-smw/blob/release/version_5.x/Documentations/user_manual/SMW_UserManual_UM12513.pdf Best regards/Saludos, Aldo. Re: Online Provisioning Hi Aldo, Thank you for your reply. I have already tried using pkcs11-tool with the SMW PKCS#11 provider after successful online provisioning on the FRDM i.MX93, but I cannot see or read the provisioned certificate or key. Could you please clarify: Are the provisioned certificate and private key expected to be accessible through the PKCS#11 interface? If not, are they stored securely in ELE and intended to be used only through PSA Crypto/SMW APIs without being exported? My goal is to use the provisioned credentials for mutual TLS. Thank you.
記事全体を表示
CodeWarrior 许可证问题 我们在旧版产品上使用 CodeWarrior 10.6,现在需要将其安装到新电脑上。我找不到 CodeWarrior 10.6 的离线安装包,在线安装也失败了(缺少下载站点)。 我可以找到 10.7 版本的下载。我们拥有 10.6 的永久浮动许可证。这些软件还能在 10.7 系统下运行吗?或者有人能提供一个 10.6 系统的离线安装包吗? 谢谢!
記事全体を表示
AUTOSAR MCAL MPC5744P 您好,请问是否有免费的编译器选项可以用来构建适用于 MPC5744P 的 AUTOSAR MCAL 应用程序? Re: AUTOSAR MCAL MPC5744P 你好, 对于用于 MPC5744P 的旧版 AUTOSAR MCAL 软件包(MPC574xP MCAL 4.x),官方验证的工具链通常是: Wind River Diab Compiler(最常见的资格) 绿山编译器 (GHS) 实际上,MPC5744P AUTOSAR MCAL 没有官方支持的免费编译器。 虽然 MPC5744P 生态系统通过 S32 Design Studio for Power Architecture 支持 GCC 进行通用嵌入式开发,但 MCAL 软件包本身主要是使用 Diab 和 GHS 开发和验证的。 DEVKIT-MPC5744P 信息列出了 GCC(通过 S32DS)、GHS、Cosmic 和其他用于 MPC5744P 开发的通用工具链,但这并不意味着 AUTOSAR MCAL 版本适用于 GCC。 已验证编译器的列表始终包含在 MCAL 软件包的发行说明中。 此致, 彼得
記事全体を表示
Unable to update APP container software version for i.MX95 FlexSPI boot image Hello Experts, I'm working on the i.MX95 platform and enabling rollback protection using ROLLBACK_INDEX_IN_CONTAINER. I introduced the following variable in my local.conf: export ROLLBACK_INDEX_IN_CONTAINER = "1" This value is propagated through the build, and the build log confirms that mkimage_imx8 is invoked with "1" When building an eMMC boot image, parsing the generated image shows the container software version updated correctly.  if [ 1 ]; then \ ./../mkimage_imx8 -soc IMX9 -cntr_version 2 -sw_version 1 -c \ -ap bl31.bin a55 0x8A200000 \ -ap u-boot-hash.bin a55 0x90200000 \ -ap tee.bin a55 0x8C000000 \ -out u-boot-atf-container.img; \   However, when building the FlexSPI boot image (imx-boot-imx95-19x19-verdin-fspi.bin-flash_a55_flexspi), parsing the image still reports the default SW version ./mkimage_imx8 -soc IMX9 -parse imx-boot-imx95-19x19-verdin-fspi.bin-flash_a55_flexspi SOC: IMX9 Input container binary to be parsed: imx-boot-imx95-19x19-verdin-fspi.bin-flash_a55_flexspi ********************************* * * * APP CONTAINER 1 * * * ********************************* Length: 0X320 (800) Tag: 0X87 Version: 0X2 Flags: 0X10 Num images: 6 Fuse version: 0 SW version: 0X0 Sig blk offset: 0X310 I noticed an interesting thing in iMX95/soc.mak as there is no sw_version included during the build for flash_a55_flexspi flash_a55_flexspi: $(MKIMG) $(AHAB_IMG) $(MCU_IMG) $(SPL_A55_IMG) $(OEI_IMG_M33) fcb.bin u-boot-atf-container.img ./$(MKIMG) -soc IMX9 -cntr_version $(CTNR_VERSION) $(XSPI_FAST_HASH) -dev flexspi -append $(AHAB_IMG) -c $(OEI_OPT_M33) -msel $(MSEL) \ -m33 $(MCU_IMG) 0 $(MCU_TCM_ADDR) \ -ap $(SPL_A55_IMG) a55 $(SPL_LOAD_ADDR_M33_VIEW) $(V2X_DUMMY) -fcb fcb.bin $(FCB_LOAD_ADDR) -out flash.bin $(call append_container,u-boot-atf-container.img,1) $(call append_fcb) My questions are: Is ROLLBACK_INDEX_IN_CONTAINER expected to update the software version for FlexSPI boot images? Does the FlexSPI image follow a different container generation flow where the rollback index/software version must be configured separately? Is this a known limitation or issue in the i.MX95 imx-mkimage build flow? If anyone has successfully enabled ROLLBACK_INDEX_IN_CONTAINER for FlexSPI boot images on i.MX95, could you please share the expected flow or any additional configuration required? Thanks in advance! Best Regards, Arun Kumar Re: Unable to update APP container software version for i.MX95 FlexSPI boot image Hi @arun16598  The FlexSPI image is not another variant of the AHAB format, but it employs a combined process of first generating the boot container, then appending the U-Boot/ATF container. Your -sw_version 1 is set on u-boot-atf-container.img; however, the APP container containing SM/M33, OEI, SPL, and FCB—which flash_a55_flexspi creates first—does not pass the -sw_version option, so that container still displays SW version: 0. ROLLBACK_INDEX_IN_CONTAINER is used to generate the secondary U-Boot/ATF APP container, but it is not passed to the primary APP container created by flash_a55_flexspi. If the same software version is required for the first FlexSPI APP container, -sw_version $(ROLLBACK_INDEX_IN_CONTAINER) must also be added to the mkimage_imx8 invocation in flash_a55_flexspi. If the goal is true AHAB anti-rollback enforcement, the key settings to verify and configure are fuse_version and -fuse_version, not just sw_version. The SPSDK’s i.MX95 anti-rollback example clearly states that OEM anti-rollback uses the fuse_version specified in the AHAB container YAML, and the version is subsequently submitted via the ELE’s OEM_FW_FUSE commit process. Best Regards, Zhiming
記事全体を表示
FLEXCAN EDMA - CANメッセージのバースト受信時にACKエラーが発生する i.MXRT1176では、EDMAとFLEXCANを使用しています。(SDK 26.03) DMA転送完了時にコールバック関数が定義されています。 これが私たちの流れです。 1.転送を開始するには、`FLEXCAN_TransferReceiveFifoEDMA()` を呼び出してください。 2. DMA転送完了時にユーザー定義コールバックが呼び出されます。 3. データはDMAバッファからコピーされ、メッセージの受信を継続するために`FLEXCAN_TransferReceiveFifoEDMA()`が呼び出されます。 4. 手順2~4を繰り返す 別のノードから最小限のフレーム間隔でバースト的にメッセージを送信すると、ACKエラーの数が増加することがわかりました。つまり、iMXがメッセージをACKできないということです。 処理の流れを追っていくと、DMA転送完了コールバックが発生するたびに、FLEXCAN上でDMAが無効化されているようです。「FLEXCAN_TransferReceiveFifoEDMA()」が呼び出されると再び有効化されます。 これは「FLEXCAN_EnableRxFifoDMA()」を呼び出すことで行います。有効化/無効化DMAはFLEXCANのMCRレジスタ内のDMAビットを更新し、フリーズモードでのみ可能です。メッセージを一気に受信しているため、FLEXCANがフリーズモードに設定されている間に送信が進行中である可能性があります。そして、着信メッセージをACKで確認できません。   `FLEXCAN_EnableRxFifoDMA()` の呼び出しを削除することで、すべての ACK エラーが解消されることを確認しましたが、今度は一部のメッセージがドロップされるようになりました。また、メッセージの間隔を空けて送信してみたところ、ACKエラーも解消されました。これが実装上の問題なのか、それとも別の方法で再設計すべきか確認していただけますか? Re: FLEXCAN EDMA - ACK errors while receiving a burst of CAN messages こんにちは、@r-uv さん。 詳細な分析をありがとうございました。あなたの観察はSDKの実装と一致しています。 FLEXCAN_TransferReceiveFifoEDMA() は、有限長のトランザクション API です。DMA完了の後、ドライバーはRx FIFO DMA要求を無効化し、次の呼び出しで再び有効化します。MCR[DMA]を変更するにはフリーズモードが必要となるため、最小IFSトラフィックの次のフレームがFlexCANが通常モードに戻る前に到着する可能性があり、その結果ACKが欠落する可能性があります。 これは、繰り返し行われるDMAの有効化/無効化操作を削除するとACKエラーは解消されるものの、フレームのドロップが依然として発生する理由も説明しています。フリーズに関連するACKギャップは解消されますが、eDMA転送は継続的に再有効化されないためです。 連続的なバーストトラフィックについては、Rx FIFO DMA要求を有効にし、ハードウェアチェーンのピンポン/散乱集いTCDを使用して次のバッファが自動的に有効化されるようにすることを推奨します。これは、FLEXCAN_TransferReceiveFifoEDMA() を繰り返し再起動するのではなく、連続した DMA 受信パスを必要とします。 よろしくお願いします、 ギャビン Re: FLEXCAN EDMA - ACK errors while receiving a burst of CAN messages ご回答ありがとうございます。SDKにこのサポートを追加する計画はありますか?現在のトランザクションAPI実装だけでなく、継続的なDMAベースの実装はどうでしょうか?
記事全体を表示
S32K364 无法捕获 eFlexPWM 输入信号——标志位已设置但 CAPTCOMPB 仍为零。 我正在使用 eFlexPWM 模块(实例)。 我正在使用 S32K364 微控制器上的 IP_EFLEXPWM_0 ) 通过输入捕获来测量外部信号的频率和周期。 子模块 2 ( SM[2] )。我的配置如下: SM2_CAPTCTRLB->EDGB0 = 0x02; (上升沿捕获电路 0) SM2_CAPTCTRLB->EDGB1 = 0x02; (上升沿捕获电路 1) SM2_ARMB = 1; (Arm捕获电路) 运行代码后,我观察到以下情况: 在 SM2_CAPTCTRLB ,计数器状态位显示: CB0CNT = 0x4 CB1CNT = 0x4 在 SM2_STS ,两个标志位均已设置: CFB0 = 1 CFB1 = 1 然而,捕获的值( SM2_CAPTCOMPB )仍然存在。 0 对于这两个捕获电路——都没有数据被锁存。 造成这种情况的原因可能是什么?我是否遗漏了其他需要的配置(例如,时钟启用、输入多路复用或计数器设置)?这些标志表明检测到了捕获事件,但捕获的值没有更新。您的见解将不胜感激。 如有需要,请随时添加其他详细信息(例如引脚复用设置或计数器模式)。祝你好运! Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero HI 首先,我检查了最新的 S32K3 RTD 7.0.x版本;但是, S32 配置工具尚不支持eFlexPWM E-Capture功能。 如果方便的话,能否分享一下您的项目,以便我可以在 S32K396 上进行测试?(可惜我没有 S32K364,只有S32K396-BGA-DC1评估板。) 其次,请查看 S32K396RM(修订版 4,2024 年 11 月) 中的“56.3.14 增强捕获(E-Capture)” 部分。请检查该部分中提到的寄存器,特别是图 254 中的寄存器。E-捕获 逻辑。您也可以与我分享eFlexPWM_0 寄存器的屏幕截图。 除了您在SM2_CAPTCTRLB [EDGB0]、[EDGB1]、[ARMB]中提到的位之外,您是如何配置SM2_CAPTCTRLB中的其他位的?   既然您观察到SM2_CAPTCTRLB[CB0CNT] = 0x4和[CB1CNT] = 0x4 ,您是否检查过SM2_CVAL4 、 SM2_CVAL4CYC 、 SM2_CVAL5和SM2_CVAL5CYC的相应寄存器值?   此外,如果您想读取SM2_CAPTCOMPB[EDGCNTB]的值,请先启用SM2_CAPTCTRLB[EDGCNTB_EN]和SM2_CAPTCOMPB[EDGCMPB] 。 我不明白你为什么要将SM2_CAPTCOMPB[EDGCMPB]设置为 0,因为这似乎会阻止图 254 中的比较器 E-Capture 逻辑正常工作。 此致敬礼, Robin Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero 子模块 2 的周期似乎太短了。请阅读“ 56.3.18.3 以低于子模块 0 的频率运行子模块”,并尝试为子模块 2 选择较低频率的时钟源,例如AUX_CLK或EXT_CLK 。 Re: eFlexPWM input capture not capturing on S32K364 – flags set but CAPTCOMPB remains zero 嗨@Robin_Shen , 我通过正确配置 MCTRL 和 CAPTCTRLB 寄存器,成功实现了外部频率测量。然而,测试表明我能达到的最低可测量频率为 5 kHz,而我的要求是支持低至 1 Hz 的频率。 我尝试调整了预分频器和预分频器备用配置,但并未观察到任何改进。能否请您提供一些建议和故障排除方法?非常感谢您的支持。
記事全体を表示
RT1176 PWMの起動に失敗しました 私はPWM + Fault + QTimerを使ってモーターパルス制御を実装していますが、PWM3サブモジュール0のPWM_Aチャネルが時々起動できず、最初のハイレベル以降は一定のままで、その後のパルスは現れません。検査の結果、PWMの「ラン」部分が正しく設定されていないことが判明しました。後からプログラムに起動時の処理を繰り返し追加したにもかかわらず、この異常は依然として発生した。 Re: RT1176 PWM startup failed こんにちは、 @liu626 さん。 カスタムボードを使用していますか、それともEVKを使用していますか?EVKを使用している場合、何か改造を加えましたか? PWM3で使っている構成を教えてもらえますか? 何か例を参考にしていますか?もしそうなら、どの学校ですか? PWM3のみを含むプロジェクトを使用して問題を再現しようとした場合、問題は解消されますか? これはPWM3サブモジュール0のPWM_Aチャネルだけに起こるのでしょうか?他のPWMモジュールやサブモジュールでも同様の現象が発生しましたか? PWM3レジスタを操作し、ランビットに影響を与えたり上書きしたりする他のタスクや割り込みはありますか? よろしくお願いします、 パブロ Re: RT1176 PWM startup failed こんにちは、カスタム回路基板を使用しました。私は具体的な例を挙げませんでした。これは、プロジェクトの正式な開発過程で発見された問題だった。パルス制御用に6つのPWMチャネルを設定しました。このチャネルだけが問題を起こし、他のサブモジュールでは同様の問題はありませんでした。調べたところ、このチャネルだけがPWM3モジュールを使っていることがわかりました。他に干渉因子は検出されなかった。以下は私の設定です。 static axis_ctrl_t g_axes[AXIS_NUM] = ヤージュ ヤージュ .id= AXIS_X1、.name= "X1", .pwmBase= PWM1、.pwmModule= kPWM_Module_0、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR3、.lowCh= kQTMR_Channel_2、.highCh= kQTMR_Channel_3、 .tmrInputsrc=kQTMR_ClockCounter2InputPin、.cascadePcs= 6U、 .faultNum= 0U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 ヤージュ .id= AXIS_X2、.name= "X2", .pwmBase= PWM2、.pwmModule= kPWM_Module_0、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR2、.lowCh= kQTMR_Channel_0、.highCh= kQTMR_Channel_1、 .tmrInputsrc=kQTMR_ClockCounter0InputPin、.cascadePcs= 4U、 .faultNum= 0U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 ヤージュ .id= AXIS_Y、.name= "Y"、 .pwmBase= PWM3、.pwmModule= kPWM_Module_0、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR3、.lowCh= kQTMR_Channel_0、.highCh= kQTMR_Channel_1、 .tmrInputsrc=kQTMR_ClockCounter0InputPin、.cascadePcs= 4U、 .faultNum= 0U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 ヤージュ .id= AXIS_Z、.name= "Z"、 .pwmBase= PWM4、.pwmModule= kPWM_Module_0、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR1、.lowCh= kQTMR_Channel_0、.highCh= kQTMR_Channel_1、 .tmrInputsrc=kQTMR_ClockCounter0InputPin、.cascadePcs= 4U、 .faultNum= 0U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 ヤージュ .id= AXIS_EX1、.name= "EX1", .pwmBase= PWM1、.pwmModule= kPWM_Module_1、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR1、.lowCh= kQTMR_Channel_2、.highCh= kQTMR_Channel_3、 .tmrInputsrc=kQTMR_ClockCounter2InputPin、.cascadePcs= 6U、 .faultNum= 1U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 ヤージュ .id= AXIS_EX2、.name= "EX2", .pwmBase= PWM2、.pwmModule= kPWM_Module_1、.pwmChannel= kPWM_PwmA、 .tmrBase= TMR2、.lowCh= kQTMR_Channel_2、.highCh= kQTMR_Channel_3、 .tmrInputsrc=kQTMR_ClockCounter2InputPin、.cascadePcs= 6U、 .faultNum= 1U、.hwExactSupported= true、.outTrigMask= kPWM_ValueRegisterMask_3、 }、 };static void APP_Init_PWM_QTMR(void) ヤージュ pwm_config_t pwmConfig; pwm_fault_param_t faultConfig; qtmr_config_t qtmrConfig; PWM_GetDefaultConfig(&pwmConfig); pwmConfig.pairOperation= kPWM_Independent; pwmConfig.reloadLogic = kPWM_ReloadImmediate; PWM_FaultDefaultConfig(&faultConfig); faultConfig.faultLevel = true; faultConfig.enableCombinationalPath= 偽; faultConfig.faultClearingMode= kPWM_ManualSafety; faultConfig.recoverMode = kPWM_NoRecovery; QTMR_GetDefaultConfig(&qtmrConfig); CLOCK_EnableClock(kCLOCK_Qtimer1); CLOCK_EnableClock(kCLOCK_Qtimer2); CLOCK_EnableClock(kCLOCK_Qtimer3); PWM_StopTimer(PWM1, 0x0FU); PWM_StopTimer(PWM2, 0x0FU); PWM_StopTimer(PWM3, 0x0FU); PWM_StopTimer(PWM4, 0x0FU); pwm_fault_input_filter_param_t faultFilter; faultFilter.faultFilterPeriod= 255U; faultFilter.aultFilterCount= 7U; faultFilter.faultGlitchStretch= 偽; /* 记录每个 PWM 实例上已配置的 faultチャネル,避免重复设置 */ uint16_t pwm1FaultDone = 0U, pwm2FaultDone = 0U, pwm3FaultDone = 0U, pwm4FaultDone = 0U; for (uint8_t i = 0U; i < AXIS_NUM; i++) { axis_ctrl_t *ax = &g_axes[i]; PWM_Init(ax->pwmBase, ax->pwmModule, &pwmConfig); PWM_SetupFaults(ax->pwmBase, (pwm_fault_input_t)ax->faultNum, &faultConfig); /* 故障濾波(每個 PWM 实例的每个 faultチャネル 只设一次) */ { uint16_t *faultDone; if (ax->pwmBase == PWM1) faultDone = &pwm1FaultDone; else if (ax->pwmBase == PWM2) faultDone = &pwm2FaultDone; else if (ax->pwmBase == PWM3) faultDone = &pwm3FaultDone; else faultDone = &pwm4FaultDone; uint16_t faultBit = (uint16_t)(1U << ax->faultNum); if((*faultDone & faultBit) == 0U) { PWM_SetupFaultInputFilterExt(ax->pwmBase, (pwm_fault_channels_t)ax->faultNum, &faultFilter); *faultDone |= faultBit; } } /* 故障時輸出低電平 */ ax->pwmBase->SM[ax->pwmModule].OCTRL &= ~(PWM_OCTRL_PWMAFS_MASK |PWM_OCTRL_PWMBFS_MASK); APP_PWM_Unmap_Selected_Fault(ax); APP_PWM_ClearFault_Safe(ax); ax->pwmBase->SM[ax->pwmModule].INIT = 0U; ax->pwmBase->SM[ax->pwmModule].VAL0 = 0U; ax->pwmBase->SM[ax->pwmModule].VAL1 = 1U; ax->pwmBase->SM[ax->pwmModule].VAL2 = 0U; ax->pwmBase->SM[ax->pwmModule].VAL3 = 0U; ax->pwmBase->SM[ax->pwmModule].VAL4 = 0U; ax->pwmBase->SM[ax->pwmModule].VAL5 = 0U; ax->pwmBase->SM[ax->pwmModule].TCTRL = PWM_TCTRL_OUT_TRIG_EN(ax->outTrigMask); APP_PWM_Disable_Output(ax); if (ax->hwExactSupported) { qtmrConfig.primarySource= ax->tmrInputSrc; QTMR_Init(ax->tmrBase, ax->lowCh, &qtmrConfig); QTMR_Init(ax->tmrBase, ax->highCh, &qtmrConfig); ax->tmrBase->CHANNEL[ax->lowCh]。CTRL = TMR_CTRL_CM(kQTMR_PriSrcRiseEdge) |TMR_CTRL_PCS(ax->tmrInputSrc); ax->tmrBase->CHANNEL[ax->highCh]。CTRL = TMR_CTRL_CM(kQTMR_CascadeCount) |TMR_CTRL_PCS(ax->カスケードPcs); APP_QTMR_Disable_Low_OFLAG_Output(ax); QTMR_DisableInterrupts(ax->tmrBase, ax->lowCh, 0xFFU); QTMR_DisableInterrupts(ax->tmrBase, ax->highCh, 0xFFU); QTMR_ClearStatusFlags(ax->tmrBase, ax->lowCh, 0xFFU); QTMR_ClearStatusFlags(ax->tmrBase, ax->highCh, 0xFFU); } ax->位相 = kAxisIdle; ax->armed = false; ax->running=false; ax->done = 真; #if HARD_PWM_STATE_GUARD_ENABLE APP_StateGuard_Reset(斧); #endif } /* 使能 QTMR 中断 */ NVIC_SetPriority(TMR1_IRQn、2U); NVIC_SetPriority(TMR2_IRQn、2U); NVIC_SetPriority(TMR3_IRQn、2U); EnableIRQ(TMR1_IRQn); EnableIRQ(TMR2_IRQn); EnableIRQ(TMR3_IRQn); }静的ブールAPP_PWM_Config_Pulse(axis_ctrl_t *軸、 uint32_t highCnt400M、 uint32_t 低Cnt400M) { pwm_clock_prescale_tプリスケール; uint16_t期間ダックス; uint32_t totalCnt400M = highCnt400M + lowCnt400M; もし((軸 == NULL) ||(totalCnt400M == 0U))Return false; もし(!APP_PWM_SelectPrescaler_FromPeriodCnt400M(totalCnt400M、およびprescale、&periodTicks)) Return false; uint32_t highTicks32 = (uint32_t)((((uint64_t)periodTicks * (uint64_t)highCnt400M + ((uint64_t)totalCnt400M / 2ULL))/ (uint64_t)totalCnt400M); もし(highTicks32 == 0U) highTicks32 = 1U; もし(highTicks32 >= periodTicks) highTicks32 = (uint32_t)periodTicks - 1U; uint32_t riseTicks32 = 0U; uint32_t fallTicks32 = highTicks32; #if HARD_PWM_LOW_START_PHASE_ENABLE uint32_t lowTicks32 = (uint32_t)periodTicks - highTicks32; もし (lowTicks32 >= (2U * HARD_PWM_LOW_START_PHASE_MIN_TICKS)) { uint32_t LeadCnt400M = highCnt400M; uint32_t minLeadCnt400M = (uint32_t)HARD_PWM_LOW_START_PHASE_MIN_US * 400U; もし(desiredLeadCnt400M < minLeadCnt400M) desiredLeadCnt400M = minLeadCnt400M; uint32_t desiredLeadTicks32 = (uint32_t)(((uint64_t)periodTicks * (uint64_t)desiredLeadCnt400M + ((uint64_t)totalCnt400M / 2ULL))/ (uint64_t)totalCnt400M); if (desiredLeadTicks32 < HARD_PWM_LOW_START_PHASE_MIN_TICKS) desiredLeadTicks32 = HARD_PWM_LOW_START_PHASE_MIN_TICKS; uint32_t maxRiseByHalfTicks32 = lowTicks32 / 2U; uint32_t postGuardTicks32 = (uint32_t)(((uint64_t)periodTicks * (uint64_t)(HARD_PWM_VAL3_POST_LOW_GUARD_US * 400U) + ((uint64_t)totalCnt400M / 2ULL))/ (uint64_t)totalCnt400M); if(postGuardTicks32 < HARD_PWM_VAL3_POST_LOW_GUARD_MIN_TICKS) postGuardTicks32 = HARD_PWM_VAL3_POST_LOW_GUARD_MIN_TICKS; uint32_t maxRiseByPostGuardTicks32 = (lowTicks32 > postGuardTicks32) ? (lowTicks32 - postGuardTicks32) : 0U; uint32_t RiseTicks32; もし (maxRiseByHalfTicks32 >= desiredLeadTicks32) { selectedRiseTicks32 = desiredLeadTicks32; if(selectedRiseTicks32 > maxRiseByHalfTicks32) selectedRiseTicks32 = maxRiseByHalfTicks32; } そうでなければ(maxRiseByPostGuardTicks32 >= desiredLeadTicks32) { selectedRiseTicks32 = desiredLeadTicks32; if (selectedRiseTicks32 > maxRiseByPostGuardTicks32) selectedRiseTicks32 = maxRiseByPostGuardTicks32; } そうでなければ { selectedRiseTicks32 = maxRiseByPostGuardTicks32; } if (selectedRiseTicks32 >= HARD_PWM_LOW_START_PHASE_MIN_TICKS) { riseTicks32 = selectedRiseTicks32; fallTicks32 = riseTicks32 + highTicks32; } } #endif もし(fallTicks32 >= (uint32_t)periodTicks) fallTicks32 = (uint32_t)periodTicks - 1U; uint16_t riseTicks = (uint16_t)riseTicks32; uint16_t fallTicks = (uint16_t)fallTicks32; PWM_SetPwmLdok(axis->pwmBase, APP_PwmModuleMask(axis), false); uint16_t ctrl = axis->pwmBase->SM[axis->pwmModule]。CTRL; ctrl &=(uint16_t)(~PWM_CTRL_PRSC_MASK); ctrl |= PWM_CTRL_PRSC(プリスケール); axis->pwmBase->SM[axis->pwmModule]。CTRL = ctrl; axis->pwmBase->SM[axis->pwmModule]。INIT = 0U; axis->pwmBase->SM[axis->pwmModule]。VAL0 = 0U; axis->pwmBase->SM[axis->pwmModule]。VAL1 = ((uint16_t)(periodTicks - 1U); もし(軸>pwmチャンネル== kPWM_PwmA) { axis->pwmBase->SM[axis->pwmModule]。VAL2 = riseTicks; axis->pwmBase->SM[axis->pwmModule]。VAL3 = fallTicks; } そうでなければ (axis->pwmChannel == kPWM_PwmB) { axis->pwmBase->SM[axis->pwmModule]。VAL4 = riseTicks; axis->pwmBase->SM[axis->pwmModule]。VAL5 = fallTicks; } axis->pwmBase->SM[axis->pwmModule]。TCTRL = PWM_TCTRL_OUT_TRIG_EN(axis->outTrigMask); PWM_SetPwmLdok(軸>pwmBase、APP_PwmModuleMask(軸)、真); PWM_SetPwmLdok(軸>pwmBase、APP_PwmModuleMask(軸)、真); axis->pwmConfigValid = true; 軸>キャッシュドHighCnt400M = highCnt400M; axis->cachedLowCnt400M = lowCnt400M; 真を返す; } Re: RT1176 PWM startup failed こんにちは、 @liu626 さん。 設定を分離して、PWM3だけを初期化しても問題が続くかテストするのを手伝ってもらえますか? ご提供いただいた設定を確認し、その動作を再現するために、以下の質問があります。 axis_ctrl_t の定義は何ですか? アプリケーションでHARD_PWM_LOW_START_PHASE_ENABLEとHARD_PWM_STATE_GUARD_ENABLEは有効になっていますか? 以下のアプリ機能はどのような働きをしますか? APP_PWM_Unmap_Selected_Fault APP_PWM_ClearFault_Safe APP_PWM_出力無効化 APP_QTMR_Disable_Low_OFLAG_Output APP_StateGuard_Reset APP_PWM_SelectPrescaler_FromPeriodCnt400M APP_PwmModuleMask よろしくお願いします、 パブロ Re: RT1176 PWM startup failed お返事ありがとうございます。私が使用しているGPIOピンはrt1176のGPIO_EMC_B1_29です。「axis_ctrl_t」はモーターシャフトに関連する定義です。 * PWM出力パルス -> XBAR信号をトリガー -> パルスの立ち下がりエッジがQTMRの外部クロック入力を駆動 -> * QTMR 32ビットカスケードカウンタが1ずつ減少する -> 0に達すると、QTMR比較割り込みがトリガーされる -> 割り込みにより内部的にPWMがオフになる * 同時に、QTMR はハードウェア障害をトリガーし、PWM の物理出力ピンを直接プルダウンします。.id= AXIS_Y、 。名前= "Y", /* シリアルポートのログ記録またはブレークポイントデバッグでY軸を識別するために使用されます */ /* ================= PWM出力リソース割り当て ================= */ .pwmBase= PWM3、/* Y軸はFlexPWM3モジュールを使用します */ .pwmモジュール= kPWM_Module_0, /* PWM3 のサブモジュール 0 を使用します (各 PWM には 0 から 3 までの 4 つのサブモジュールがあります) */ .pwmChannel= kPWM_PwmA, /* サブモジュール0のフェーズAの出力ピンを使用します。これは物理ピンGPIO_EMC_B1_29に対応します。 */ /* ================= 32 ビット QTMR カスケード カウント リソース割り当て ================= */ .tmrBase= TMR3, /* Y軸はQTMR3ペリフェラル(IRQ割り込み番号TMR3_IRQnに対応します)を使用します */ .lowCh= kQTMR_Channel_0, /* 16ビットローカウンタ:TMR3のチャンネル0を使用します */ .highCh= kQTMR_Channel_1,/* 16ビットハイカウンタ:TMR3のチャンネル1を使用 */ /* 👉 .lowCh と .highChこれらはペアになっており、ハードウェアレベルでは自動的に32ビットカウンタに結合されます。 /* ================= ハードウェアカスケードクロックソースの構成 (コアクリティカル) ================= */ .tmrInputsrc=kQTMR_ClockCounter0InputPin, /* チャンネル0のクロックソース:「外部ピン入力0」に設定。 XBAR構成では、PWM3からのパルスの落ち降り縁がXBARを介してTMR3のチャネル0の入力ピンに接続されます。 したがって、PWMでパルスが出力されるたびに、チャンネル0(16ビット)は一度だけ減衰操作を行います。*/ .cascadePcs = 4U, /* 高16ビットチャネル(チャネル1)のクロックソース(PCS)の設定。 i.MX RTのQTMRレジスタにおけるPCS値は以下の通りに対応します。 0-3 = 外部ピン入力; 4 = チャネル0のオーバーフロー/終了イベント; 5 = チャネル1のオーバーフロー/終了イベント; 6 = チャネル2のオーバーフロー/終了イベント; 7 = チャネル3のオーバーフロー/終了イベント。 ここでは4Uとして構成されており、つまり「TMR3のチャネル1」が「TMR3のチャネル0のオーバーフローイベント」を監視することを意味します。 HARD_PWM_LOW_START_PHASE_ENABLE と HARD_PWM_STATE_GUARD_ENABLE が有効になっています。APP_PWM_Unmap_Selected_Fault 機能:現在の軸に対応する故障ピンマッピングを削除します。障害を無効にするには、基となる PWM_SetupFaultDisableMap 関数を呼び出します。その目的は、ハードウェア障害が不要な場合に、偶発的な外部干渉によってPWMがオフになるのを防ぎ、根本的なデバッグプロセスを容易にすることです。 APP_PWM_ClearFault(元のコード関数) 機能:PWMモジュールの障害状態フラグ(axis->pwmBase->FSTS)をクリアします。ハードウェア故障が発生した後は、PWMの再起動を許可する前にまずこのフラグをクリアしなければなりません。 APP_PWM_出力無効化 機能: PWMタイマーを即座に停止し、ピンの出力を強制的に低レベル(PWM_SetPwmForceOutputToZero)にし、出力を有効にします。この目的は、ピンがモーター起動前に浮かんだりデフォルト状態に置かれたりして高レベルを出力し、モーターが不規則に動くのを防ぐことです。 APP_QTMR_Disable_Low_OFLAG_Output 機能:QTMRのOFLAG(ステータスフラグ)出力を無効にし、OFLAGを低レベルに強制的に設定します。XBARハードウェアと連携して、その役割はQTMR出力からPWMフォルトピンへの経路を遮断し、起動前にフォルトが誤ってトリガーされるのを防ぐことです。 APP_StateGuard_Reset 機能:国家警備隊(番犬)のカウンターと旗をクリアします。この関数は、HARD_PWM_STATE_GUARD_ENABLEが有効になっている場合に、長時間パルス変化がない状態やデッドロックが発生した場合に、システムを停止または再起動する前にこれらの保護変数をリセットするために使用されます。 APP_PWM_SelectPrescaler_FromPeriodCnt400M 機能:これは周波数計算の非常に重要な基本機能です。これは、High + Lowの合計400MHzカウント値を受け取り、16ビットPWMレジスタに収まるように設定すべきプリスケーラ(PRSC)とPWM周期(PERIOD)の数を計算します。ご注意ください:計算された周期が65535を超え、かつ除算係数が範囲外の場合、この関数はfalseを返し、モーターの起動に失敗します。 APP_PwmModuleMask 機能:PWMサブモジュールのインデックス番号(例えば、値が0のkPWM_Module_0)を、Nビット左シフトしたビットマスクに変換します。NXPのPWMレジスタの多く(OUTEN、MCTRLなど)はビット単位で制御されます。この関数は、正しいバイナリマスクを生成する役割を担っています。 Re: RT1176 PWM startup failed 原因を突き止めました。これは、cm4コア内のPIT割り込みの内部負荷が大きすぎるため、cm7コアのPWM動作に影響を与えているためです。PIT割り込みの負荷を軽減したところ、PWM起動時の不具合が解消しました。
記事全体を表示
Help finding capacitor for PCF8563TS/5,118 I'm working with a PCF8563TS/5,118 IC, trying to get the external cap on OSCI pin right.  I'm working with a 50k ESR, 12.5pF 32.568KHz crystal, shortest possible traces, Schematic just like in the application diagram on the datasheet. I tried making the calculations by consulting both the datasheet and UM10301 to get an understanding on the device. I found it difficult to find out a clear way to calculate the value for the external cap because the datasheet mentions parallel and series on different pages of the same topic, OSCI and OSCO.  I see there is an internal 25pF cap in parallel with the external OSCI and OSCO pins. Table 30 on the datasheet indicates CL is calculated in parallel, but has a note that shows the calculation for series capacitors instead. I can't find an external cap that makes the device work. Getting no I2C response. I tried 25pF, 22.5pF, 20pF, 25pF, 10pF, 8.2pF, 6pF. All 0603 C0G/NP0 caps. I did get it to work on a different board by not placing a capacitor at all. Which doesn't make any sense after making the calculations. I would like to please get an example of how you calculate a value for these inputs (12.5pF 50k ESR crystal) because I haven't been able to make it work neither by calculating it nor by bruteforcing values. Re: Help finding capacitor for PCF8563TS/5,118 Yes that's the value of the integrated internal capacitor and I mentioned that in my own post. I have read that file. It would be way more helpful if you actually wrote what you intend to convey. Thanks for taking the time though Re: Help finding capacitor for PCF8563TS/5,118 UM10301 User Manual for PCF85x3, PCF85x63, PCA8565, PCF2123, and PCA21125 Re: Help finding capacitor for PCF8563TS/5,118 Dear David, db16122 correctly pointed you to the Table 3. in the UM10301. If your target load capacitance is 12.5pF, then you need to connect a trim capacitor on the OSCI pin with 25pF middle value.  This 25pF value can be calculated from the formula below the Table 30. in the PCF8563 datasheet.  Where CL is the target load capacitance, in your case 12.5pF.  Cosco is the known internal capacitance, the 25pF.  From the formula, the Ctrim can deduced: CL=Ctrim*Cosco/(Ctrim+Cosco) CL*Ctrim+CL*Cosco=Ctrim*Cosco CL*Cosco=Ctrim*Cosco-CL*Ctrim CL*Cosco=Ctrim*(Cosco-CL) CL*Cosco/(Cosco-CL)=Ctrim Ctrim=CL*Cosco/(Cosco-CL)=12.5*25/(25-12.5)=312.5/12.5 Ctrim=25pF The variable trim capacitor is required because there is margin for the internal Cosco capacitor. Cosco may vary from 15pF to 35pF.  With Best Regards, Jozef
記事全体を表示
IO Expansion for LEDs I am currently designing on a switch matrix board for custom measurement equipment. To route the signals I plan on using optical relays, the G3VM-61DR1 to be precise. So I need to control >250! LEDs (1,5-1,8V 6-8mA) somehow. Only <25 will be turned on at the same time Supply voltage will be 3.3V or lower, temperature should be around 40°C We just need to turn them on or off, no dimming or PWM I don't want to use an LED driver because of the noise it might/will introduce I can't use a classic matrix arrangement since it is unknown which switches will be on at the same time So the only option is to have a discrete output for each relay/LED, your IO Expanders look promising for this, eg. the PCAL6524. Because of the high channel count I want to reduce the components per channel as much as possible, so I have some questions: Can I rely on the 7,5mA current setting of the Agile IO devices and omit the LED series resistor? If this is ok, what are possible side effects? Since the devices start configured as Input some experience high currents when they are used to control LEDs(eg. PCA9535A  Datasheet page 14/15). The classic fix with a pullup for each channel is not cool for so many channels. Does this also affect the Agile IO devices? Can this be circumvented by supplying the LEDs with 3.3V and the expanders with 1.65V? Thank you in advance Otto Re: IO Expansion for LEDs PCAL6524 is well suited for driving a large number of optical relays and LEDs. However, the Agile I/O drive strength is not intended to replace the required series current-limiting resistors. To mitigate the risk of unintended current during power-up when the I/Os are still in their input state, options such as using a 3.3 V LED supply with a lower VDD(P), or implementing a global LED power switch, may be considered. Nevertheless, individual current-limiting resistors should always be retained for each LED channel.
記事全体を表示
射频功率放大器设计 - MRF13750H 你好!我正在使用 MRF13750H 设计一个 805 MHz 的射频功率放大器,我的设计基于数据手册中的 915 MHz 参考电路。但是,我只能使用 Usimmics 来模拟匹配网络;我无法使用 NXP 用来打开其设计文件的软件。 因此,为了设计匹配网络,我请求 NXP 提供 MRF13750H 915 MHz 参考电路的完整原理图,包括微带线尺寸,因为数据手册中没有提供此信息。如果可能的话,我还想请求提供 805 MHz 的大信号模型阻抗;否则,我将根据 915 MHz 提供的值进行设计。915MHz 参考电路和数据手册附在下方。 另一方面,如果有人知道在 805 MHz 频率下设计匹配网络的其他方法,我将不胜感激。
記事全体を表示
AUTOSAR MCAL MPC5744P Hello, is there any free compiler option to build the AUTOSAR MCAL applications for MPC5744P? Re: AUTOSAR MCAL MPC5744P Hello, For the legacy AUTOSAR MCAL package for MPC5744P (MPC574xP MCAL 4.x), the officially validated toolchains are typically: Wind River Diab Compiler (most commonly qualified) Green Hills Compiler (GHS) In practice, no officially supported free compiler is provided for MPC5744P AUTOSAR MCAL. Although the MPC5744P ecosystem supports GCC through S32 Design Studio for Power Architecture for general embedded development, the MCAL package itself was developed and validated primarily with Diab and GHS. The DEVKIT-MPC5744P information lists GCC (via S32DS), GHS, Cosmic, and other toolchains for MPC5744P development in general, but that does not mean the AUTOSAR MCAL release is qualified for GCC. List of validated compilers is always in release notes supplied with MCAL package. Best regards, Peter
記事全体を表示
KW47 扩展广告 您好, 我使用的 SDK 版本是 26.06。 该例程为 kw47loc_loc_reader_freertos。 #define gAppIsPeripheral_d                   1U   经查明,调用 BluetoothLEHost_StartExtAdvertising 的返回值为 4(gBleFeatureNotSupported_c) 我想使用扩展广告。请给予我支持。   谢谢您!   Re: KW47 extended advertising 你好, 希望你一切都好。 您对示例中做了哪些修改?要在应用程序中配置扩展广告,首先需要使用 Gap_SetExtAdvertisingParameters 设置扩展广告参数,然后调用 Gap_SetExtAdvertisingData 设置广告数据。 完整的设置步骤和参数详情,请参阅本指南:扩展广告 — MCUXpresso SDK 文档   希望这能帮到你! 此致, 安娜·索菲亚。 Re: KW47 extended advertising 您好, 我使用的 SDK 版本是 26.06。导入的例程是 kw47loc_loc_reader_freertos。将该例程中 gAppIsPeripheral_d 的宏定义修改为 1,同时在 BluetoothLEHost_AppInit 函数中添加 BleApp_Start();其他部分未做任何修改。 经查明,调用 BluetoothLEHost_StartExtAdvertising 的返回值为 4(gBleFeatureNotSupported_c)   谢谢您! Re: KW47 extended advertising 你好@wjw2026 , 请问您是否能够按照《扩展广告指南》中的步骤进行操作?扩展广告的外围设备配置涉及几个必要的步骤,验证这些设置可能有助于解决您观察到的问题。 此致, 安娜·索菲亚。
記事全体を表示