Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
EdgeLock SE050/SE051 Capability Inquiry for Ed25519/X25519-Based IoT Device Hello NXP Team, We are evaluating the EdgeLock SE050/SE051 family for a Raspberry Pi based IoT device and would appreciate guidance on the most suitable part number. Our primary requirements are secure storage and hardware execution of cryptographic operations. The device is a Raspberry Pi 4 - running Raspberry Pi OS (Linux). We would like clarification on the following points: 1. Key Storage       - Can the SE050/SE051 securely store non-exportable private keys?    - Can certificates and public keys be stored in the secure element? 2. Key Generation       - Can the secure element generate key pairs internally?    - Specifically, does it support generation of Ed25519 and X25519 key pairs within the secure element? 3. Ed25519 Operations       - Can Ed25519 signing and signature verification be supported inside the secure element? 4. X25519 Operations       - Can X25519 key agreement (ECDH shared secret computation) be performed inside the secure element using a non-exportable private key? 5. AES Operations       - Does the secure element support AES encryption and decryption operations?    - If so, which AES modes are supported?   6. Storage read/write    - Storing/removing/accessing files like wifi passwords? 7. Linux / Raspberry Pi Integration       - Is there an SDK or middleware available for Raspberry Pi OS?    - Are there example applications demonstrating the above operations? 8. Product Selection       - Which EdgeLock SE050/SE051 variant would you recommend for the above requirements?    - What are the major differences between the recommended variants?    - Are there any newer EdgeLock products that would be a better fit for these requirements? Our intended use case is: - Ed25519 signing for device authentication / JWT generation - X25519 key agreement for mobile-device provisioning - AES encryption/decryption using derived session keys - Storage and handling of security files like Wifi passwords etc - Large-scale deployment of IoT devices If available, we would also appreciate links to any of these: - Relevant datasheets - Application notes - SDK documentation - Evaluation boards - Linux/Raspberry Pi examples Thank you for your assistance. Best regards, Sahil Pai Re: EdgeLock SE050/SE051 Capability Inquiry for Ed25519/X25519-Based IoT Device Hi @SahilPai , Please kindly have my comments as below: 1. Key Storage       - Can the SE050/SE051 securely store non-exportable private keys? //Yes, private keys are non-exportable on SE05x.    - Can certificates and public keys be stored in the secure element? // Yes, certs are stored as binary files within the SE , and public key can be stored standalone or together with the private key in SE05x. 2. Key Generation       - Can the secure element generate key pairs internally?// Yes, it supports.    - Specifically, does it support generation of Ed25519 and X25519 key pairs within the secure element?// Yes, Ed25519 and X25519 key pairs are supported. 3. Ed25519 Operations       - Can Ed25519 signing and signature verification be supported inside the secure element?// Yes, Ed25519 signing and signature verification are supported inside the SE05x. 4. X25519 Operations       - Can X25519 key agreement (ECDH shared secret computation) be performed inside the secure element using a non-exportable private key? //Yes, ECDH is performed with a private key within SE05x and an external  public key which can be stored in SE05x as well. 5. AES Operations       - Does the secure element support AES encryption and decryption operations? //Yes,    - If so, which AES modes are supported?// Support for AES Modes:CBC, ECB, CTR, GCM, CCM.   6. Storage read/write    - Storing/removing/accessing files like wifi passwords?//Yes, SE050/SE051 can store binary objects in its secure object store, including Wi-Fi credentials. 7. Linux / Raspberry Pi Integration       - Is there an SDK or middleware available for Raspberry Pi OS?// Yes, please refer to https://www.nxp.com/webapp/Download?colCode=SE05x-PLUG-TRUST-MW&appType=license for details.    - Are there example applications demonstrating the above operations?//Yes. 8. Product Selection       - Which EdgeLock SE050/SE051 variant would you recommend for the above requirements?// Either SE050E2 or SE051C2 can be used.    - What are the major differences between the recommended variants?// They both have the latest applet version, but SE051 supports applet upgrade while SE050 doesn't.    - Are there any newer EdgeLock products that would be a better fit for these requirements?//not yet so far.   Please kindly refer to https://www.nxp.com/products/SE050 and https://www.nxp.com/products/SE051 for more details.   Hope that helps,   Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
記事全体を表示
关于 S32K311 的 ECU 核心配置说明 你好,@danielmartynek和团队 我们有一个关于核心配置的问题。在 S32K311(单核)上,生成的代码定义了: DET_NO_ECU_CORES = 4 NUMBER_OF_CORES = 4 鉴于我们面临内存限制: 我们可以安全地将这些简化为1吗? MCAL/DET 是否有任何副作用? 另外,有没有办法在 NXP 配置工具或其他配置中进行设置,而无需手动编辑生成的文件? 谢谢 & 问候, Yusup Khan S32K3 S32DS-ARM S32K31XEVB-Q100 Re: ECU Core Configuration Clarification on S32K311 你好,@yusupkhan241、 请参考 RTD 软件开发团队提供的以下回答: https://community.nxp.com/t5/S32K/RTD-memory-occupation/td-p/2148479 该参数无法通过配置工具进行配置,目前也没有计划支持此类功能。 此致, 丹尼尔
記事全体を表示
Looking for guidance on building a production programming fixture for NTAG213 Hi all, We are integrating NTAG213 chips into our own product and are currently in the testing phase. As we move toward mass production, we plan to build a programming fixture (or test fixture) to handle the full inline production flow: chip installation → write → read/verify → ship. We're looking for advice or documentation on the following: Best practices for designing and operating a production NFC programming fixture for NTAG213 Key considerations or common pitfalls during write/verify cycles in a production environment Any recommended tools, reference designs, or NXP resources we should be aware of before building the fixture How to reliably detect and handle write failures or defective chips at the production stage Any guidance from those who have experience with NTAG213 in production settings would be greatly appreciated. We are still in early stages, so foundational pointers are very welcome. Thank you. Re: Looking for guidance on building a production programming fixture for NTAG213 Hello @Lee0130  NTAG213 documentation is publicly available, which can be downloaded from product page. we would recommend RFID Discover to you, which is a convenient software tool for NFC tag configuration, programming, and data verification, helping streamline development and production testing. You can also development yourself application using Taplinx TapLinx SDK for MIFARE, NTAG, ICODE and UCODE | NXP Semiconductors
記事全体を表示
在 SPC563 (e200z3) 上集成 ERIKA RTOS-将程序集 (.S) 转换到时出现编译错误 大家好, 我目前正在使用 CodeWarrior 2.9 开发 SPC563XX(Power Architecture e200Z3),该芯片与 MCP563xx 微控制器功能相当。 在尝试整合 MCP56xx 系列的 ERIKA RTOS 时,我遇到了以下编译错误: mwldeppc:未定义:'EE_hal_terminate_savestk'  mwldeppc:引自 ee_tstub.o 中的 “ee_oo_thread_stub” 经调查,我发现函数 EE_hal_terminate_savestk() 定义在一个汇编 (.S) 文件中,而该文件似乎并未被纳入编译过程。 我的工具链能够编译 .c 文件文件,所以我尝试通过将 .S 文件重命名为 .c 来解决这个问题文件,并将汇编代码封装在 C 风格函数中(例如:asm void Fun(){})。 我最初的意图是重用相同的汇编实现,只调整函数定义以匹配 C 语法,这样我就可以避免修改生成文件。然而,这种做法导致了多个编译错误,这让我感到意外。 以下是我遇到的一些错误: 非法函数定义  未定义的标识符 'rlwinm'  未定义的标识符 'addis'  未定义的标识符 'stw'  未定义的标识符“stmw”  未定义的标识符“mtlr”  未定义的标识符 'bl'  未定义的标识符 'lwz'  未定义的标识符“addi”  声明语法错误  预期为 ';' 看起来 CodeWarrior 编译器无法识别 C 文件中的若干 PowerPC 汇编指令。 请帮我解释一下: 为什么编译器无法识别这些汇编指令? 这种方法(将汇编代码嵌入到 .c 文件中)该文件是否适用于此工具链? 我该如何正确解决这些编译错误? 感谢您的支持。 此致, 纳格恩德拉·波图拉 软件架构师 AVL ITC 印度 Re: Integrating ERIKA RTOS on SPC563 (e200Z3)- Compilation Error While When Converting Assembly (.S) 您遇到的编译错误是由于 PowerPC 汇编代码被当作 C 代码进行编译所导致的。通过将原始的 .S 文件重命名为 .c 文件,并将汇编代码嵌入到 C 函数中,编译器会尝试将 rlwinm、addis、stw 等汇编指令解释为 C 语法,从而导致出现“未定义标识符”和“非法函数定义”等错误。此方法对 CodeWarrior 无效,因为这些指令只有在由汇编器处理时才会被识别。 正确的解决方案是保留原始的 .S 文件并确保它正确包含在编译系统中,以便由汇编器编译并与项目的其余部分链接。这种形式的内联汇编无法替代 RTOS 所使用的完整汇编模块。 请注意,ERIKA Enterprise是第三方开源实时操作系统(类似于OSEK/AUTOSAR),不是恩智浦的产品,因此其集成和构建配置不在恩智浦的范围内,需要由您自己处理。 作为参考,以下文档可能会对你有所帮助: 飞思卡尔 PPC e200 (mPC56xx) 支持页面:https://erika.tuxfamily.org/wiki/index.php?title=Freescale_PPC_e200_%28MPC_56xx% 29 感谢您的理解。 Re: Integrating ERIKA RTOS on SPC563 (e200Z3)- Compilation Error While When Converting Assembly (.S) 谢谢回复。 请问哪里可以找到NXP MPC5634M的启动代码? Re: Integrating ERIKA RTOS on SPC563 (e200Z3)- Compilation Error While When Converting Assembly (.S) 大家好, 你是对的。发布问题后,我意识到我犯了一个错误,只是简单地将文件从 *.s 更改为 *.c。 然后我使用如下所示的内联汇编实现了相同的功能,这样就解决了所有编译器和链接器错误: void Func(void) { 汇编 { /* 此处填写汇编代码 */ } }
記事全体を表示
关于 S32K146 LPI2C MCFGR1 寄存器中 PINCFG 字段配置的咨询 大家好 我正在使用 S32K146 上的 LPI2C 模块,对 MCFGR1(主配置寄存器 1)寄存器中的 PINCFG 字段有一些疑问。 根据参考手册,PINCFG 字段用于配置 I2C 引脚工作模式。不过,我需要了解以下具体信息: PINCFG 的 8 个不同配置值(000 至 111)各自适用于哪些应用场景? 每个配置值的引脚输出类型是什么?这是开漏输出还是推挽输出? 如果您能分享任何应用笔记、参考代码或实践经验,我们将不胜感激。 谢谢! Re: Inquiry about PINCFG Field Configuration in S32K146 LPI2C MCFGR1 Register 你好@GXY  PINCFG 字段定义了 LPI2C 引脚的电气驱动和使用方式,具体取决于是需要标准的 2 引脚 I2C 总线还是单独的 4 引脚配置。 000 – 标准模式:双向开漏 001 – 两个信号均配置为仅输出开漏模式 010 – 双向推挽 011 – SCL/SDA 用作输入;SCLS/SDAS 用作推挽输出 100 – SCL/SDA:主设备用的双向开漏;SCLS/SDAS:从设备用的双向开漏 101 – SCL/SDA:主设备专用的只读开漏输出;SCLS/SDAS:从设备专用的只读开漏输出 110 – SCL/SDA:主设备双向推挽;SCLS/SDAS:从设备双向推挽 111 – SCL/SDA:仅输入、开漏;SCLS/SDAS:仅反相输出、推挽 有关更多信息,请参阅 UM10204:I2C 总线规格和用户手册。 此外,S32K1 软件包中还提供了演示标准 I2C 引脚配置的示例代码。 BR、VaneB Re: Inquiry about PINCFG Field Configuration in S32K146 LPI2C MCFGR1 Register 我知道这个字段的含义,但我想问的是这些字段的应用场景。例如,000 用于标准双线 I2C 传输;001 用于超速模式下的双线传输;010 用于高速模式下的通信;011 和 111 用于四线通信; 我对如何灵活使用其余三种配置感到困惑。如果我错了,请指正。此外,手册中指出 S32K146 不支持 HS 模式和 ULTRA 模式,但通过修改 PINCFG 寄存器,我能够实现 HS 模式 3.4M(先低速,后高速)与 ULTRA 模式(实测 4M)之间的相互通信 之间实现相互通信(主从双方均为 S32K146)。我想知道是书中有错,还是我的试题有误。 Re: Inquiry about PINCFG Field Configuration in S32K146 LPI2C MCFGR1 Register 你好@GXY  如前所述,LPI2C 外设中的 PINCFG 字段定义了所使用的引脚数量及其电气特性。它并不直接决定 I2C 速度模式。 关于工作模式,LPI2C 模块在逻辑上可以支持不同的模式。但是,您可以实现的实际波特率还取决于多个因素,例如焊盘的实现、外部负载以及总线上使用的上拉电路。 对于 S32K1 设备,SCL 和 SDA 信号使用标准的 GPIO 焊盘而不是高驱动焊盘,因此可实现的最大波特率在一定程度上受到限制。 此外,表 52-9 仅提供了寄存器设置的示例。这些配置仅供参考,并不能保证在实际应用中可以达到相应的波特率。 Re: Inquiry about PINCFG Field Configuration in S32K146 LPI2C MCFGR1 Register 我越来越感到困惑。我现在最担心的是,通过更改 PINCFG,S32K146 可以直接以 FASTPLUS、HS 和 ULTRAFAST 模式的速度相互通信。然而,实际上,S32K146 无法在这三种模式下与其他标准 I2C 设备通信(如手册中所述)。首先让我解释一下我是如何让两个 146(一个主设备和一个从设备)在以下三种模式下通信的:1. FASTPLUS(1M)将主设备和从设备的 PINCFG 调整为 010。2. HSMODE(配备 2M,经测试为 2M)将主设备和从设备的 PINCFG 调整为 010。3. ULTRAFAST(配备 5M,经测试为 4M)将主设备的 PINCFG 调整为 001,将从设备的 PINCFG 调整为 000。 我想知道 FASTPLUS (1M)、HS (3.4M) 和 ULTRAFAST (5M) 模式的标准设备是推挽输出还是开漏输出。
記事全体を表示
Unable to measure 1PPS signal on J12 pin of LS1028A evaluation board? After booting the development board, I enabled PPS output using the command echo 1 > /sys/class/ptp/ptp0/pps_enable. Then, by running cat /sys/class/pps/pps0/assert, I can see the timestamp incrementing. However, I cannot capture the PPS signal on the 1588_PULSE_OUT2 pin. I searched for similar issues in the forum and then modified the device tree by referring to the devicetree/bindings/ptp/ptp-qoriq.txt document. The steps are as follows: First, I obtained the clock value for QORIQ_CLK_HWACCEL 3 on the board using the following command. The value is 400 MHz: root@ls1028ardb:# find /sys/kernel/debug/clk -name "clk_summary" -exec cat {} ; | grep -i hwaccel cg-hwaccel3 0 0 0 400000000 0 0 50000 Y deviceless no_connection_id cg-hwaccel0 0 0 0 400000000 0 0 50000 Y deviceless no_connection_id cg-hwaccel2 0 0 0 600000000 0 0 50000 Y f200000.display clk_core cg-hwaccel1 0 0 0 1200000000 0 0 50000 Y deviceless no_connection_id So I modified the device tree file fsl-ls1028a.dtsi as follows: ethernet@0,4 { compatible = "pci1957,ee02", "fsl,enetc-ptp"; reg = <0x000400 0 0 0 0>; clocks = <&clockgen QORIQ_CLK_HWACCEL 3>; little-endian; fsl,extts-fifo; // The following lines are newly added fsl,cksel = <1>; fsl,tclk-period = <10>; fsl,tmr-prsc = <100>; fsl,tmr-add = <0x40000000>; fsl,tmr-fiper1 = <0x3B9AC9F6>; fsl,max-adj = <2999999999>; }; After booting, the modified node entries are visible: root@ls1028ardb:~# ls /sys/class/ptp/ptp0/device/of_node/ clocks compatible fsl,cksel fsl,extts-fifo fsl,max-adj fsl,tclk-period fsl,tmr-add fsl,tmr-fiper1 fsl,tmr-prsc little-endian name reg Even after these modifications, I still cannot capture the signal correctly. Therefore, I checked the RCW values. The detailed log is as follows: Reset Configuration Word (RCW): 00000000: 3c004010 00000030 00000000 00000000 00000010: 00000000 018f0000 0030c000 00000000 00000020: 020031a0 00002580 00000000 00003296 00000030: 00000000 00000010 00000000 00000000 00000040: 00000000 00000000 00000000 00000000 00000050: 00000000 00000000 00000000 00000000 00000060: 00000000 00000000 200e705a 00000000 00000070: bb580000 00000000 In the LS1028ARDBRM.pdf document, I found that for 1PPS output, the EC1_SAI4_5_PMUX[835:833] field must be set to 101. The word address is the 32-bit word at offset 0x68 (word 26), with value 0x200e705a. Extracting this field: shift right by 1 and mask lower 3 bits: (0x200e705a >> 1) & 0x7 = 0x5, which is binary 101 – so that is also correct. However, I still cannot capture the signal. I would like to know whether my device tree configuration is incorrect, or if there might be other hardware limitations. I have attached the ptp-qoriq.txt, LS1028ARDBRM.pdf, and the oscilloscope capture for reference. Re: Unable to measure 1PPS signal on J12 pin of LS1028A evaluation board? I performed a loopback test with the following commands and got no signal. It is indeed possible that the CPLD is not routing the signal correctly. root@ls1028ardb:~# find /sys/kernel/debug/ -name fiper1-loopback /sys/kernel/debug/0000:00:00.4/fiper1-loopback root@ls1028ardb:~# echo 1 > /sys/kernel/debug/0000:00:00.4/fiper1-loopback root@ls1028ardb:~# cat /sys/class/ptp/ptp0/fifo root@ls1028ardb:~# cat /sys/class/ptp/ptp0/fifo root@ls1028ardb:~# cat /sys/class/ptp/ptp0/fifo The CPLD software version I am using is LS1028ARDB_HDL_2020_0330_1829_V8. Is additional programming required? Or is there an issue with this version? As for the routing problem, I will have our hardware team check it. Re: Unable to measure 1PPS signal on J12 pin of LS1028A evaluation board? Hello, The documentation supports that LS1028A can output PPS on LS1028ARDB J12, but your symptom most likely points to missing board RCW/CPLD mux routing or incomplete external FIPER pin programming rather than a lack of PPS support. Regards
記事全体を表示
U4N:如何跳过《复联 6》中最难的磨练 极限竞速地平线 6》(Forza Horizon 6)终于来了,Playground Games 带来了车迷们多年来一直翘首以盼的东西:一个庞大、华丽、霓虹闪烁的日本再现。从在川津-南丸子环路上漂移,到在东京市超密集的街道上飙车,该地图是汽车爱好者的梦想。 但有一个问题。今年,开发人员没有简单复制粘贴前几款游戏中的沙盒进程。他们重新采用了严格的、老式的进度结构。你不再是音乐节的超级巨星,而是一名普通游客。要解锁传奇岛等终极游戏区域或驾驶 S2 级超级跑车,您必须在排位赛中过关斩将,连续获得腕带。 对于纯粹主义者来说,这是一个值得欢迎的挑战。对于我们这些只想定制一辆 1997 款日产西尔维亚、将其调校得尽善尽美并与朋友们一起在汽车展览会上巡游的人来说,这绝对是一堵墙。 以下是《极限竞速:地平线 6》中最难的 "碾压 "环节的具体计算方法,以及玩家们是如何选择绕过它的。 地平线磨削的冷硬数学 要理解球员们为什么要寻找替代品,只要看看数据就知道了。极限竞速:地平线6在发布时拥有超过550辆现实世界中的汽车。想要一个充满传奇色彩的 JDM 图标和高端跑车的车库?您需要数千万信用点 (CR)。 Playground Games 在日本各地隐藏了 200 个吉祥物,每个吉祥物只要被你砸碎,你就能获得 5,000 CR。如果你能找到每一个,那就是干净的 1,000,000 CR。听起来不错吧?只不过,像法拉利 J50 这样的顶级跑车可以轻而易举地将所有余额一网打尽。 然后是时间投入: 平均竞赛:根据难度乘数和助攻数的不同,产生大约 10,000 到 15,000 CR。 数学计算:要购买一辆价值 200 万 CR 的高端超跑,您需要完成大约 130 到 200 场比赛。 时间:每场比赛平均耗时 4 分钟(包括加载屏幕和菜单),仅一辆车就需要连续重复比赛 9 到 13 个小时。 这还不包括性能部件、车身美容套件的费用,也不包括购买像山谷庄园这样的高级玩家之家来展示您的收藏的费用。如果你有一份全职工作或学业,那么为了体验游戏的精彩部分而把 Forza 变成第二份轮班工作并不吸引人。 跳过瓶颈 由于这一陡峭的曲线,社会上有很大一部分人选择通过购买来度过乏味的入门阶段。" 玩家不再花 50 个小时坐在缓慢的 C 级掀背车中等待游戏"让他们尽情玩乐,而是使用第三方服务即时建立自己的游戏。 如果你想直接进入游戏后期的Touge战斗,或者想在不担心预算的情况下在新的多人游戏CoLab工具中完全构建自定义曲目,那么依赖可信平台是最直接的捷径。例如,像 U4N 这样的安全市场可以让玩家完全绕过经济碾压;您可以轻松购买 forza 地平线 6 mods或加载账户,立即解锁 550 多辆汽车名册、堆叠数亿信用点数并获得最大腕带,而无需重复头疼的事情。 安全注意事项:如果您决定跳过难关,请务必使用信誉良好的平台,这些平台使用安全的交付方法来保护您的Xbox或Steam帐户免受标准自动反作弊标记的侵害。 你应该跳过它吗? 是否应该走捷径完全取决于你是什么样的玩家: 进阶爱好者:如果你真的喜欢从零开始,追寻全部 14 个谷仓宝藏,寻找 9 辆隐藏的宝藏车,慢慢赢得地平线邀请赛的冠军,那就慢慢来吧。宣传活动制作精良。 沙盒定制器:如果你的主要乐趣来自于改装、涂装设计、与你的车手在富士山上漂移,以及在自定义的 EventLab 地图中测试物理引擎的极限,那么腕带进阶系统只是一道时间门,让你无法体验真正花钱买来的游戏。 福尔扎-地平线 6》可以说是这一代最好的赛车游戏,但它需要占用你大量的空闲时间。了解了经济运行方式后,您就可以决定是要手动赚取每一个信用点,还是快速变道直达终点。
記事全体を表示
s32デザインスタジオライセンスの拡張 こんにちは、 S32 Design Studio開発ツールのライセンスのうち1つが、2026年6月3日に期限切れとなります。新しいライセンスまたはライセンスの延長を取得するにはどうすればいいですか? ありがとうございます テックチャクラ。 Re: Extetion of s32 Design studio License こんにちは。お客様のS32DSライセンスが延長されました。
記事全体を表示
[KW47]驱动强度变化期间 DCDC 故障的解决方法 正如 KW47/MCXW72 勘误中提到的,在驱动强度变为低电平时,DCDC 故障会不时发生,DCDC 输出电压会大于或等于当前输出电压。 为了避免这种特殊情况的发生,可以实施一种软件变通方法,使低功耗低驱动强度模式下的电压等级低于DCDC的当前输出电压。 我们将以低功耗外设参考设计演示应用程序为例,展示变通方案的实现。 首先,此演示项目中的默认 DCDC 配置永远不会触发这个 DCDC 故障,因为 DCDC 始终处于低驱动强度模式。要强制其进入故障状态,我们必须更改 board_dcdc.c 中的 DCDC 设置。DCDC 配置应设置为正常驱动强度模式,输出电压应为 1.25V。 BOARD_DCDC_config(kSPC_DCDC_NormalDriveStrength, kSPC_DCDC_LowUnderVoltage, false); 解决方法需要启用 SPC 高功率模式。 SPC0->HP_CNFG_CTRL |= SPC_HP_CNFG_CTRL_HP_REQ_EN_MASK; 高电源模式下的 DCDC 输出电压设置为 1.35V(高于运行模式和低电源模式下的输出电压): RF_CMC1->SPC_HP_CTRL |= 0x2U; SPC_HP 模式将在进入低功耗模式之前立即启用。为此,需要修改 nbu_ble 项目,并根据这一修改重新编程 NBU。 请修改 nbu_ble 项目中的 fwk_platform_lowpower.c 文件。 函数 Platform_handleLowPowerEntry 管理低功耗电源模式入口,因此我们可以在此处添加: RF_CMC1->SPC_HP_CTRL |= 0x1U; //enable HP mode while ((RF_CMC1->SPC_HP_STAT && RF_CMC1_SPC_HP_STAT_SPC_HP_ACK_MASH) == 0); //wait for HP mode requested to be ackownledged RF_CMC1->SPC_HP_CTRL &= 0x0U; //disable HP mode while ((RF_CMC1->SPC_HP_STAT && RF_CMC1_SPC_HP_STAT_SPC_HP_ACK_MASH) == 0); //wait for HP mode requested to be ackownledged /* WFI will trigger low power entry procedure */ __DSB(); __WFI(); __ISB(); 请注意,此解决方法适用于所有使用低功耗模式的无线连接示例。它不适用于非连接示例。 FRDM-RW612
記事全体を表示
i.MX 9シリーズ向けLinuxユーザー空間におけるFuse読み書きツール 導入。 OEMは機能テストや製品製造中にもヒューズ値にアクセスする必要があります。イーサネットMACアドレスの修正、ブートモードの修正、セキュアブートの有効化などを行います。 すべての i.MX プロセッサで有効になっているツールがあり、U-boot で実行され、コマンドは「=> fuse 」です。一部のお客様は Linux ユーザー空間でヒューズの書き込みと読み取りを行う必要があり、ここで異なるプロセッサが OTP 構造を持ちます。 この記事では、NXP BSP対応関数を使用してプロセッサのヒューズにアクセスするC言語で書かれたファイルをダウンロードします。 i.MX 9 シリーズは EdgeLock Secure Enclave (ELE) を介してヒューズを管理しており、このツールは他のプロセッサにも簡単に適応できますが、今回のリリースはi.MX91とi.MX93に重点を置いています。 1. ハードウェアのセットアップ。 FRDM-i.MX91 。電源はP1に接続し、USB Type-CデバッグケーブルはP16に接続します。 ソースコードのコピーのため、イーサネットケーブルでネットワークルーターとP4端末を接続しました。 SD/eMMCにはYocto Linux Factory LF_6.12.49が書き込まれています。必要に応じて、USB Type-Cホストケーブルを使用してJ31に書き込むことができます。 image-1.jpg   2. ドキュメントの設定。 i.MX 91 ドキュメントからリファレンスマニュアルをダウンロードしてください。添付ファイル i.MX91_Fusemap.xlsx が含まれています。 Screenshot 2026-03-24 151748.png   3. ソフトウェアのセットアップ。 ダウンロードとビルドの手順。 user@host:~$ scp fuse_test.c root@ :~ root@imx91evk:~# gcc -Wall fuse_test.c -o fuse_test ツールの機能。 NXP BSPのpread関数とpwrite関数を使用します。 Bank * 8 + Word の式に基づくと、fusemap 添付ファイルを使用している場合、Word は Word % 8 として定義されます。 i.MX93/i.MX91のfusemapに従って、バンクおよびワードのインデックスの最小値と最大値を定義します。 顧客は、fuse_test read|write という 4 つの引数を明示的に入力する必要があります。 4.実演。 ヒューズからデバイス固有ID [31:0]を読み取ります。 a. UIDヒューズ参照値を取得するためにU-bootで停止します。 u-boot=> fuse read 1 7 Reading bank 1: Word 0x00000007: 03fc7ef1 u-boot=> boot b. 読み取り操作用のツールを実行します。 root@imx91evk:~# ./fuse_test read 1 7 ret: 0 fd : 3 READ Bank: 1, Word: 7, Offset: 15 SUCCESS: pread operation resp_len = 4 resp_buf[0] = |f1| resp_buf[1] = |7e| resp_buf[2] = |fc| resp_buf[3] = |3| c. 書き込み操作用のツールを実行します。 この記事では、バンク47にあるOEM汎用ヒューズ2 GPR2_CFG0への簡単な書き込み、ワード376について説明します。 root@imx91evk:~# ./fuse_test read 47 0 ret: 0 fd : 3 READ Bank: 47, Word: 0, Offset: 376 SUCCESS: pread operation resp_len = 4 resp_buf[0] = |0| resp_buf[1] = |0| resp_buf[2] = |0| resp_buf[3] = |0| このヒューズは、Packed_FuseIndex 291 にある汎用 2 ヒューズ ロック GPR2_LOCK [2:0] によって保護されています。AN14954 のセクション3.2 ELE-AP を搭載したデバイスからワードビットを計算します。 root@imx91evk:~# ./fuse_test read 1 1 ret: 0 fd : 3 READ Bank: 1, Word: 1, Offset: 9 SUCCESS: pread operation resp_len = 4 resp_buf[0] = |93| resp_buf[1] = |34| resp_buf[2] = |0| resp_buf[3] = |0| このように、GPR2_LOCK [2:0] = 010 は、オーバーライド保護状態であることを意味し、ヒューズを焼却することができます。 root@imx91evk:~# ./fuse_test write 47 0 ret: 0 fd : 3 READ Bank: 47, Word: 0, Offset: 376 SUCCESS: pread operation resp_len = 4 resp_buf[0] = |5| resp_buf[1] = |0| resp_buf[2] = |0| resp_buf[3] = |0| INFO: Fuse previous valueWRITE Bank: 47, Word: 0, Offset: 376 Enter fuse value (e.g. 0xAA1234BB): 0x4A4F5345 You entered: 0x4A4F5345 (1246712645 decimal) SUCCESS: pwrite operation INFO: Please reset the device for fuse read confirmation 0x4A、0x4F、0x53、0x45は、Josephの最初の4文字を大文字にしたものです。 u-boot=> fuse read 47 0 Reading bank 47: Word 0x00000000: 4a4f5345 結論。 このツールは、i.MX 93およびi.MX 91のヒューズの読み取りと書き込みが可能で、i.MX 9シリーズにも対応可能です。 iMX95の最新ELEファームウェアリリースでは、ユーザー空間からのSRK値のプログラミングはサポートされていません。この機能を有効にするためのランタイムファームウェアは、次回のリリースで提供される予定です。 このツールは、ソフトウェアおよびサポートチームによって現状のまま提供されており、LF6.12.49 で開発されました。BSD-3ライセンスに基づきます。銀行口座と単語をご確認ください。必要に応じてサポートチケットを作成してください。この投稿は誤った使用方法について責任を負いません。 FRDM-i.MX91でテスト済み C言語で記述 LF-6.12.49
記事全体を表示
Mifare Classic 克隆到 Handy 你好,日安。在我们的健身房,我们使用装有 Mifare Classic EV1 (MF1S50) 芯片的腕带。有没有办法克隆这种芯片并将其存储在手机上,这样就可以直接使用手机的 NFC 传感器了?换句话说,我可以使用手机本身而不是腕带登录吗?如果是这样,我该怎么做?我已尝试使用两个应用程序:NXP TagInfo 和 NXP TagWriter。遗憾的是,我无法使用这些工具进行操作,或许是我在操作过程中犯了错误。您能帮帮我吗?来自 Geraberg(图林根)的问候。 触摸传感器 Re: Mifare Classic clone to Handy 你好@digamcrown 遗憾的是,无法克隆 MIFARE Classic EV1 卡并直接在智能手机 NFC 接口上使用。 主要原因是: 智能手机不支持MIFARE Classic卡仿真(NFC控制器不支持Crypto-1)卡片UID无法在移动设备上复制 移动操作系统(Android/iOS)出于安全原因限制低级NFC访问 因此,恩智浦TagInfo或TagWriter等工具无法实现此功能。 Re: Mifare Classic clone to Handy 你好 你好 您应该联系健身房系统的供应商,询问他们是否提供在智能手机上创建数字徽章的解决方案,因为MIFARE Classic卡具有安全内存。 您可以查看 MIFARE 2GOhttps://www.nxp.com/products/security-and-authentication/secure-service-2go-platform/mifare-2go:MIFARE2GO
記事全体を表示
i.mx95 Android 16 ブートロゴ: uboot ロゴからカーネルロゴへのスムーズな遷移 ubootはブートロゴを表示し、カーネルに入った後もブートロゴは表示されたままになります。 現在、ubootのコードを修正すると、uboot終了時にディスプレイが閉じられず、カーネルがロードされるまでロゴが表示され続けるという問題が発生しています。 LVDSディスプレイに関する情報については、以下の処理方法があります。 PWMスクリーンバックライト制御に関する問題については、ubootでバックライト関連のピンが初期化されるようにすることで問題を解決し、カーネルの初期化中に設定を通じて、カーネルがLVDS PWMの初期化をリセットしないようにしました。 ディスプレイの電力ドメインについては、scmi_pm_domain.c を修正しました。ディスプレイの電源モジュールがリセットされないように、ドライバのソースコードに以下の情報を追加します。 + if (strcmp(scmi_pd->name, "display") == 0) { + scmi_pd->genpd.flags = GENPD_FLAG_ACTIVE_WAKEUP | GENPD_FLAG_RPM_ALWAYS_ON; + }​ 現在の問題は、 カーネル時間の3秒後、カーネルの表示モジュールが起動すると、カーネルは緑色の画面を表示し、カーネルのロゴを正常に表示できなくなります。 回复: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo kernel.log: カーネルが実行されると、ubootのロゴがカーネルのロゴに切り替わり、画面が2秒間真っ暗になります。 kernel_green.log: ディスプレイの電源ドメインを維持し、リセットを避けてください。カーネルディスプレイモジュールが実行されると、緑色の画面が表示されます。 --- a/drivers/pmdomain/arm/scmi_pm_domain.c +++ b/drivers/pmdomain/arm/scmi_pm_domain.c @@ -105,6 +105,9 @@ static int scmi_pm_domain_probe(struct scmi_device *sdev) scmi_pd->genpd.power_on = scmi_pd_power_on; scmi_pd->genpd.flags = GENPD_FLAG_ACTIVE_WAKEUP; + if (strcmp(scmi_pd->name, "display") == 0) { + scmi_pd->genpd.flags = GENPD_FLAG_ACTIVE_WAKEUP | GENPD_FLAG_RPM_ALWAYS_ON; + } if (!strcmp(scmi_pd->name, "hsio_top")) scmi_pd->genpd.flags = 0; 回复: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo ディスプレイインターフェース: lvds 理論的には、カーネルのディスプレイ関連ドライバはU-Bootの状態を維持し、二次初期化を経ずに直接ディスプレイ動作モードに入るべきである。 あるいは、初期化プロセスはカーネルの動作モードに直接かつ迅速に切り替えてカーネルのロゴを表示することもできます。 カーネル内でどのように処理すればよいでしょうか? カーネルに表示される関連設定はDRMフレームワークを通じて構成され、そのためには基盤となるハードウェアドライバをDRMフレームワークに適合させる必要がある。 Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo こんにちは、 LVDS に適切な dts ファイルを使用していますか?Android のプリビルドイメージでテストしましたか? Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo LVDSに適切なdtsファイルを使用していますか? ----> LVDS画面は既に表示済みです。 LVDSスクリーンは、U-Bootおよびカーネル実行中にロゴを表示できます。 ubootによってロゴが表示された後、システムがカーネルに切り替わり、ディスプレイモジュールデバイスが再初期化されると、ディスプレイの電源ドメインが最初にオフになり、その後オンになるため、2秒間画面が黒くなります。 画面が真っ暗になるとは思っていません。 カーネルがディスプレイモジュールを再初期化する際に、ubootの設定を継承し、カーネルロゴを直接表示した後、Androidに入り、ブートアニメーションを直接表示することを期待しています。この過程で、画面が真っ黒になるのを避けたい。 現在、ubootに修正を加え、uboot終了時にロゴ画像が閉じないようにしました。 diff --git a/arch/arm/lib/bootm.cb/arch/arm/lib/bootm.c インデックス 81e8ddae..c6f1f8e8 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -72,7 +72,7 @@ static void announce_and_cleanup(int fake) #endif #if defined(CONFIG_VIDEO_LINK) - video_link_shut_down(); + //video_link_shut_down(); #endif U-Bootとカーネルの両方でPWMバックライト制御に修正を加え、カーネルドライバがスムーズに制御を引き継げるようにしました。 ubootからカーネルへのPWMバックライトはオフにリセットされません。 さらに、カーネル内のディスプレイ電源ドメインへの継続的な電力供給を確保するために、ディスプレイ電源ドメインの変更を試みました。しかし、この変更の結果、ディスプレイが正常に表示されなくなってしまいました。カーネルのロゴを切り替えた後、画面が緑色に表示された。 この例外はどのように処理すればよいでしょうか?DPUの設定に問題があり、それが原因でディスプレイパイプ全体が誤動作しているようです。 Androidのプリビルドイメージでテストしましたか? -->はい、LVDSの表示機能は既に正常に動作していると確信しています。 Androidのコードは変更していません Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo GENPD_FLAG_RPM_ALWAYS_ONフラグを追加した後、DPU95はed_cont_shdld_doneで常にタイムアウトします。 その結果、DPU95に渡されるすべてのパラメータが無効になる。 DPU95の設定方法は?DPU開発に関する関連資料はありますか? + if (strcmp(scmi_pd->name, "display") == 0) { + scmi_pd->genpd.flags = GENPD_FLAG_ACTIVE_WAKEUP | GENPD_FLAG_RPM_ALWAYS_ON; + }​ static void dpu95_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state) { struct dpu95_drm_device *dpu_drm = to_dpu95_drm_device(crtc->dev); struct dpu95_crtc *dpu_crtc = to_dpu95_crtc(crtc); struct drm_encoder *encoder = &dpu_drm->encoder[dpu_crtc->stream_id]; bool enc_is_dsi = encoder->encoder_type == DRM_MODE_ENCODER_DSI; pr_err("liucx %s:%d \n", __func__, __LINE__); if (!liucx_logo_keep) { //return; } //dpu95_crtc_disable(crtc); drm_crtc_vblank_on(crtc); enable_irq(dpu_crtc->dec_shdld_irq); enable_irq(dpu_crtc->db_shdld_irq); enable_irq(dpu_crtc->ed_cont_shdld_irq); dpu95_fg_enable_clock(dpu_crtc->fg, enc_is_dsi); dpu95_ed_pec_sync_trigger(dpu_crtc->ed_cont); dpu95_db_shdtokgen(dpu_crtc->db);//CONTROLTRIGGER SHDTOKGEN dpu95_fg_shdtokgen(dpu_crtc->fg); dpu95_fg_enable(dpu_crtc->fg); //always timeout,why?How does DPU generate this interrupt? DPU95_CRTC_WAIT_FOR_COMPLETION_TIMEOUT(ed_cont_shdld_done); DPU95_CRTC_WAIT_FOR_COMPLETION_TIMEOUT(db_shdld_done); DPU95_CRTC_WAIT_FOR_COMPLETION_TIMEOUT(dec_shdld_done); disable_irq(dpu_crtc->ed_cont_shdld_irq); disable_irq(dpu_crtc->db_shdld_irq); disable_irq(dpu_crtc->dec_shdld_irq); DPU95_CRTC_WAIT_FOR_FRAMEGEN_PRIMARY_SYNCUP(dpu_crtc->fg); /* ignore initial empty primary pixel FIFO read status, just clear it */ dpu95_fg_primary_clear_channel_status(dpu_crtc->fg); dpu95_crtc_queue_state_event(crtc);//发送一个event,用于处理vblank事件 } Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo linuxRMを参照してください。 https://www.nxp.com/docs/en/reference-manual/RM00293.pdf また、ドライバを確認することもできます。 Linux DPU95 DRMドライバツリーは、drivers/gpu/drm/imx/dpu95/にあります。 Linux-tn-imx/ドライバ/gpu/drm/imx/dpu95 (tn-imx_6.18.2_1.0.0-stable) · TechNexion/Linux-tn-imx · GitHub dpu95-crtc.c dpu95-extdst.c dpu95-domainblend.c U-Boot imx95_dpu.c Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo よく分かりません。 U-Boot imx95_dpu.c について言及されましたが、その機能は何ですか?そして、私は何をすればいいですか? ファイル U-Boot imx95_dpu.c は、U-Boot 用の DPU ドライバです。 カーネルからU-BootにDPUドライバを移植すべきでしょうか? Re: i.mx95 android 16 boot logo: Smooth transition from uboot logo to kernel logo DPU95ディスプレイコントローラーの開発マニュアルはありますか? 現状では、dpu95はubootの状態を維持する必要があります。カーネル内では、この状況においてdpu95の動作原理を参照し、レジスタを設定することでdpu95の初期化を完了させる必要がある。
記事全体を表示
Reboot command operation and reset mechanism on i.MX8MP and i.MX93 Background: This article discusses the reboot mechanism on the i.MX8MP and i.MX93 platforms. It aims to help customers understand how the reboot command works. We will discuss two different kernel versions separately.   1. Linux version : LF_6.12.34_2.1.0 The executable file for the reboot command is as follows: When the ”reboot“ command is executed, the system enters the ”do_kernel_restart()“ function and executes the reboot mechanism by determining the priority of the registered functions. Since the ”reboot.c“ file does not print out the registered functions, a print function is added to the file to identify the function that is ultimately executed.   The print output is as follows: pengyong_zhang_0-1779943510533.png As shown in the figure above, in version 5.12, the reboot is performed via a reset executed by psci. Continuing to trace the ”psci_sys_reset()“ function, we can see that the system sends the function ID via the PSCI interface to initiate an SMC call, instructing the underlying firmware (ATF/EL3) to perform a system reboot (typically a cold reset). The value of PSCI_0_2_FN_SYSTEM_RESET is 0x80000009 pengyong_zhang_0-1779943988849.png   According to the Arm Power State Coordination Interface Platform Design Document, this ID represents a cold reset of the system. pengyong_zhang_1-1779944324615.png pengyong_zhang_2-1779944331293.png     2. Linux version : LF_6.18.2_1.0.0 Use the same debugging method to examine the reboot mechanism in version 6.18 As shown in the output below, in version 6.18, the system reset is triggered by the `sys_off_notify()` function. The final execution function is pca9450_i2c_restart_handler()   pengyong_zhang_0-1779944594004.png By examining the `pca9450_i2c_restart_handler()` function, we can see that the system writes a `SW_RST_COMMAND` value to the PMIC via I²C, where `SW_RST_COMMAND = 0x14`. pengyong_zhang_1-1779944599443.png According to the PMIC data sheet, 10b = Cold Reset; all voltage regulators are reset except LDO1/LDO2 pengyong_zhang_2-1779944606796.png Summary: Regardless of the kernel version, the `reboot` command triggers a system cold reset. The triggering mechanism has been updated in versions 6.18 and later. IMX8MPLUSEVK
記事全体を表示
TPL 通信在 mc33771c 中不起作用 我有一个自定义板,它使用其 BCC 驱动程序库与 MC33771B 完美配合。但是,当我用 MC33771C 替换 IC 并切换到 C 变体(来自 EMBEDDED-SW-MC33771C 代码包,软件包)的官方恩智浦BCC驱动程序时,由于 CRC 错误,在 bcc_assignCID 期间通信失败 。我认为 TPL 通信不起作用,因为一直收到的只有回声帧无法接收数据。同样的硬件适用 于 mc33771b 只需根据集成电路更改 bcc 库即 可。 Re: TPL communication is not works in mc33771c Miral_0-1779253113801.png Miral_1-1779253139984.png Miral_2-1779253161191.png 这是我们的定制电路板原理图,这是我们的 tpl 通信代码 使用特定的实现方式和 BCC 库,可以与 MC33771B 正常通信。我可以成功发送命令并接收有效的响应帧。 但是,当我使用相同的通信代码并仅替换 MC33771C 的 BCC 库/配置时,我只会收到回声帧而没有来自设备的有效响应。 SPI/TPL 时序、帧格式和硬件连接保持不变。此外,还实现了唤醒序列和 INIT 序列。 有人在使用 MC33771C 时遇到过这个问题吗? bcc_status_t BCC_MCU_TransferTpl(uint8_t drvInstance, uint8_t transBuf[], uint8_t recvBuf[], uint16_t recvTrCnt) { //总接收大小 = 6 字节 * 传输次数 uint16_t recvSize; 如果(recvTrCnt>0) recvSize = (recvTrCnt-1) * 6U; else recvSize = 6U; HAL_SPI_DeInit(&hspi2); HAL_Delay(2); HAL_SPI_Init(&hspi2); memset(recvBuf,0,((&recvBuf)); // 启动 SPI 通信 HAL_GPIO_WritePin(CS_TX_GPIO_Port,CS_TX_Pin, GPIO_PIN_RESET); HAL_SPI_Receive_IT(&hspi2, recvBuf, 6); rxflag = 0; // --- 传输一个 48 位帧 --- 如果 (HAL_SPI_Transmit_IT(&hspi1, transBuf, 6) != HAL_OK) { HAL_GPIO_WritePin(CS_TX_GPIO_Port,CS_TX_Pin, GPIO_PIN_SET); 返回 bcc_status_param_range; } BCC_MCU_WaitUs(5); 如果(spi2_rx_done == 1) { HAL_SPI_Receive_IT(&hspi2, recvBuf, recvSize); spi2_rx_done = 0; } HAL_GPIO_WritePin(CS_TX_GPIO_Port,CS_TX_Pin, GPIO_PIN_SET); 返回 bcc_status_success; } int MC33771_Init(void) { // 首先启用 MC33664 TPL 收发器 HAL_GPIO_WritePin(EN_GPIO_Port,引脚, GPIO_PIN_RESET); HAL_Delay(1); HAL_GPIO_WritePin(EN_GPIO_Port,引脚, GPIO_PIN_SET); HAL_Delay(10); // 等待 MC33664 就绪 // 配置 BCC 驱动程序 g_bccConfig.drvInstance = 0; g_bccConfig.通讯模式 = BCC_MODE_TPL; g_bccConfig.设备总数 = 1; g_bccConfig 。设备 [0]= bcc_device_mc33771c; g_bccConfig.cellCnt[0]= 14; // 初始化 BCC 库 状态 = BCC_Init(&g_bccConfig); 如果 (status != bcc_status_success) { 返回 (int)状态; } } int MC33771_ReadAllCellVoltages(浮点 电池电压[14]) { uint16_t 测量[BCC_MEAS_CNT]; uint32_t 电压; uint8_t 单元格; 如果 (单元电压 ==NULL) { 返回 -1; } 状态 = BCC_Meas_StartConversion(&g_bccConfig, BCC_CID_DEV1,BCC_AVG_1); 如果 (status != bcc_status_success) { 返回状态; } HAL_Delay(600); // 阅读测量结果 状态 = BCC_Meas_GetRawValues(&g_bccConfig, BCC_CID_DEV1, 测量); 如果 (status != bcc_status_success) { 返回状态; } // 提取所有电池电压 为 (单元格 = 0; 单元格 < 14; 单元格++) { 电压 =BCC_GET_VOLT(测量[bcc_msr_stack_volt + 单元格]); 电池电压[13 - 电池] = (float)电压 / 1000.0f; 电池电压[13 - 电池] = (float)单元电压[13 - 单元] / 1000.0f; } 返回 0; } int main(void) { /* 重置所有外围设备,初始化闪存接口和 Systick。 */ HAL_Init(); /* 配置系统时钟 */ 系统时钟配置(); /* 配置外设共用时钟 */ PeriphCommonClock_Config(); /* 初始化所有已配置的外设 */ MX_GPIO_Init(); MX_DMA_Init(); MX_SPI1_Init(); MX_SPI2_Init(); MX_TIM16_Init(); MX_USART1_UART_Init(); MC33771_Init(); 虽然 (1) { 温度 = MC33771_ReadAllCellVoltages(电压); HAL_Delay(1000); } } void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) { 如果 (hspi->实例 ==SPI2) spi2_rx_done = 1; } 静态 void MX_SPI1_Init(void) { /* 用户代码开始 spi1_初始化0 */ /* 用户代码结束 spi1_启动0 */ /* 用户代码开始 spi1_启动1 */ /* 用户代码结束 spi1_启动1 */ /* SPI1 参数配置*/ hspi1.实例 =SPI1; hspi1.启动.模式 =spi_mode_master; hspi1.启动.方向 =spi_direction_2lines; hspi1.启动.数据大小 =spi_datasize_8bit; hspi1.启动.CLKPolarity =spi_polarity_low; hspi1.启动.CLKPhase =spi_phase_2edge; hspi1.启动.NSS =SPI_NSS_SOFT; hspi1.启动.波特率预分频器 =spi_baudrateprescaler_8; hspi1.启动.FirstBit =spi_firstbit_msb; hspi1.启动.TIMode =spi_timode_disable; hspi1.启动.CRCCalculation =spi_crccalculation_disable; hspi1.启动.CRCPolynomial = 7; hspi1.启动.CRCLength =spi_crc_length_datasize; hspi1.启动.NSSPMode =spi_nss_pulse_enable; 如果 (HAL_SPI_Init(&hspi1) != HAL_OK) { 错误处理程序(); } /* 用户代码开始 spi1_启动2 */ /* 用户代码结束 spi1_启动2 */ } /** * 简短的 SPI2 初始化功能 * @参数无 * @retval无 */ 静态 void MX_SPI2_Init(void) { /* 用户代码开始 spi2_初始化0 */ /* 用户代码结束 spi2_启动0 */ /* 用户代码开始 spi2_启动1 */ /* 用户代码结束 spi2_启动1 */ /* SPI2 参数配置*/ hspi2.实例 =SPI2; hspi2.启动.模式 =SPI_MODE_SLAVE; hspi2.启动.方向 =方向 = spi_direction_2lines_rxonly; hspi2.启动.数据大小 =spi_datasize_8bit; hspi2.启动.CLKPolarity =spi_polarity_low; hspi2.启动.CLKPhase =spi_phase_2edge; hspi2.启动.NSS =spi_nss_hard_input; hspi2.启动.FirstBit =spi_firstbit_msb; hspi2.启动.TIMode =spi_timode_disable; hspi2.启动.CRCCalculation =spi_crccalculation_disable; hspi2.启动.CRCPolynomial = 7; hspi2.启动.CRCLength =spi_crc_length_datasize; hspi2.启动.NSSPMode =spi_nss_pulse_disable; 如果 (HAL_SPI_Init(&hspi2) != HAL_OK) { 错误处理程序(); } /* 用户代码开始 spi2_启动2 */ /* 用户代码结束 spi2_启动2 */ } Re: TPL communication is not works in mc33771c 亲爱的米拉尔 如果您使用的是 MC33771C 的推荐软件,那么看起来是硬件问题。请参阅 AN12633。如果你要从 MC33771B 切换到 MC33771C,则需要更换一些外部元器件。 JozefKozon_0-1779177671061.png 例如,低通滤波器中的 CLPF 和 CIN 是不同的。有关 MC33664 与第一个 MC33771B 和/或 MC33771C 节点之间的外部元器件,请分别参阅 MC33771B 完整数据表和 MC33771C 完整数据表中的第 13.2.6 节。MC33771C的完整数据表可公开获取,而MC33771B的完整数据表是保密的,可通过有效的保密协议(NDA)从 "安全 "部分下载。 JozefKozon_2-1779178421486.png JozefKozon_1-1779178371806.png 致以最崇高的敬意 约瑟夫 Re: TPL communication is not works in mc33771c 亲爱的米拉尔 MC33771C 中的写入命令、全局写入或无效帧不会生成响应;只有有效的READ命令才会返回数据。这比许多 MC33771B 示例更严格,因为有些驱动程序希望在每一帧后都有回复。 MC33771C TPL 需要: 正确的唤醒顺序 和等待时间 JozefKozon_0-1779338021638.png JozefKozon_1-1779338087547.png JozefKozon_2-1779338166772.png 请尝试发送READ命令(例如状态寄存器),然后查看 MC33771C 是否响应。 致以最崇高的敬意 约瑟夫 Re: TPL communication is not works in mc33771c 你好,米拉尔、 您的电路图看起来对 MC33771C 是正确的。关于软件,我已经联系了一位软件工程师。到目前为止,他还没有答复。一旦收到答复,我一定会给您回复。 感谢您的耐心等待。 致以最崇高的敬意 约瑟夫 Re: TPL communication is not works in mc33771c 我检查了所有唤醒序列的时序,一切正常,但 TPL 通信仍无法正常工作。我们还检查了mc33771c所需的外部元器件,如果板上有任何问题,我还分享了我的原理图。
記事全体を表示
mc33771cではTPL通信は動作しません MC33771B の BCC ドライバライブラリを使用して、カスタムボードで完全に動作します。しかし、IC を MC33771C に交換し、C バリアント用の公式 NXP BCC ドライバに切り替えると、 組み込みソフトウェアMC33771C パッケージ) 通信が失敗すると、 BCC_AssignCid CRCエラーが原因です。TPL通信が機能していないのは、常にエコーフレームしか受信できず、データを受信できないためです。同じハードウェアはmc33771bでは動作しますが、ICに合わせてbccライブラリを変更するだけです。 Re: TPL communication is not works in mc33771c Miral_0-1779253113801.png Miral_1-1779253139984.png Miral_2-1779253161191.png これは当社独自の基板回路図で、こちらはTPL通信用のコードです。 特定の実装とBCCライブラリを使用することで、MC33771Bとの通信は正常に動作します。コマンドの送信と有効な応答フレームの受信は正常に行えました。 しかし、同じ通信コードを使用し、MC33771C用のBCCライブラリ/設定のみを置き換えた場合、エコーフレームのみを受信し、デバイスからの有効な応答は得られません。 SPI/TPLのタイミング、フレームフォーマット、およびハードウェア接続は変更ありません。ウェイクアップシーケンスとINITシーケンスも実装されています。 MC33771Cでこの問題が発生した方はいますか? bcc_status_t BCC_MCU_TransferTpl ( uint8_t drvInstance , uint8_t transBuf [] 、 uint8_t recvBuf [] 、 uint16_t recvTrCnt ) { // 受信データの合計サイズ = 6バイト × 転送回数 uint16_t recvSize ; if ( recvTrCnt > 0 ) recvSize = ( recvTrCnt -1 ) * 6 U ; そうでない場合、 recvSize = 6 U ; HAL_SPI_DeInit ( & hspi2 ) ; HAL_Delay ( 2 ) ; HAL_SPI_Init ( & hspi2 ) ; memset ( recvBuf , 0 , sizeof ( & recvBuf )) ; // SPI通信を開始する HAL_GPIO_WritePin ( CS_TX_GPIO_Port , CS_TX_Pin , GPIO_PIN_RESET ) ; HAL_SPI_Receive_IT ( & hspi2 , recvBuf , 6 ) ; rxflag = 0 ; // --- 48ビットフレームを1つ送信する --- if ( HAL_SPI_Transmit_IT ( & hspi1 , transBuf , 6 ) != HAL_OK ) { HAL_GPIO_WritePin ( CS_TX_GPIO_Port , CS_TX_Pin , GPIO_PIN_SET ) ; return BCC_STATUS_PARAM_RANGE ; } BCC_MCU_WaitUs ( 5 ) ; if ( spi2_rx_done == 1 ) { HAL_SPI_Receive_IT ( & hspi2 , recvBuf , recvSize ) ; spi2_rx_done = 0 ; } HAL_GPIO_WritePin ( CS_TX_GPIO_Port , CS_TX_Pin , GPIO_PIN_SET ) ; return BCC_STATUS_SUCCESS ; } int MC33771_Init ( void ) { // まずMC33664 TPLトランシーバを有効にします HAL_GPIO_WritePin ( EN_GPIO_Port , EN_Pin , GPIO_PIN_RESET ) ; HAL_Delay ( 1 ) ; HAL_GPIO_WritePin ( EN_GPIO_Port , EN_Pin , GPIO_PIN_SET ) ; HAL_Delay ( 10 ) ; // MC33664の準備が整うまで待機 // BCCドライバの設定 g_bccConfig.drvInstance = 0 ;​​ g_bccConfig.commMode = BCC_MODE_TPL ;​​ g_bccConfig.devicesCnt = 1 ;​​ g_bccConfig.device [ 0 ]​​= BCC_DEVICE_MC33771C ; g_bccConfig.cellCnt [ 0 ]​​= 14 ; // BCCライブラリを初期化する status = BCC_Init ( & g_bccConfig ) ; if ( status != BCC_STATUS_SUCCESS ) { return ( int ) status ; } } int MC33771_ReadAllCellVoltages ( float cellVoltages [ 14 ]) { uint16_t測定値[ BCC_MEAS_CNT ] ; uint32_t voltage_uv ; uint8_tセル; if ( cellVoltages == NULL ) { -1を返す; } status = BCC_Meas_StartConversion ( & g_bccConfig , BCC_CID_DEV1 , BCC_AVG_1 ) ; if ( status != BCC_STATUS_SUCCESS ) { ステータスを返します。 } HAL_Delay ( 600 ) ; // 測定値を読み取る status = BCC_Meas_GetRawValues ( & g_bccConfig , BCC_CID_DEV1 , measurements ) ; if ( status != BCC_STATUS_SUCCESS ) { ステータスを返します。 } // すべてのセル電圧を抽出します for ( cell = 0 ; cell < 14 ; cell ++ ) { voltage_uv = BCC_GET_VOLT ( measurements [ BCC_MSR_STACK_VOLT + cell ]) ; cellVoltages [ 13 - cell ] = ( float ) voltage_uv / 1000.0 f ; cellVoltages [ 13 - cell ] = ( float ) cellVoltages [ 13 - cell ] / 1000.0 f ; } 0を返す; } int main ( void ) { /* すべてのペリフェラルをリセットし、フラッシュインターフェースとSystickを初期化します。*/ HAL_Init () ; /* システムクロックを設定します */ SystemClock_Config () ; /* ペリフェラルの共通クロックを設定します */ PeriphCommonClock_Config () ; /* 設定済みのペリフェラルをすべて初期化します */ MX_GPIO_Init () ; MX_DMA_Init () ; MX_SPI1_Init () ; MX_SPI2_Init () ; MX_TIM16_Init () ; MX_USART1_UART_Init () ; MC33771_Init () ; ( 1 )​ { temp = MC33771_ReadAllCellVoltages ( voltage ) ; HAL_Delay ( 1000 ) ; } } void HAL_SPI_RxCpltCallback ( SPI_HandleTypeDef * hspi ) { if ( hspi- > Instance == SPI2 ) spi2_rx_done = 1 ; } static void MX_SPI1_Init ( void ) { /* USER CODE BEGIN SPI1_ Init 0 */ /* USER CODE END SPI1_ Init 0 */ /* USER CODE BEGIN SPI1_ Init 1 */ /* USER CODE END SPI1_ Init 1 */ /* SPI1 パラメータ設定 */ hspi1.Instance = SPI1 ;​​ hspi1.Init.Mode = SPI_MODE_MASTER ;​​​​ hspi1.Init.Direction = SPI_DIRECTION_2LINES ;​​​​ hspi1.Init.DataSize = SPI_DATASIZE_8BIT ;​​​​ hspi1.Init.CLKPolarity = SPI_POLARITY_LOW ;​​​​ hspi1.Init.CLKPhase = SPI_PHASE_2EDGE ;​​​​ hspi1.Init.NSS = SPI_NSS_SOFT ;​​​​ hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8 ;​​​​ hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB ;​​​​ hspi1.Init.TIMode = SPI_TIMODE_DISABLE ;​​​​ hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE ;​​​​ hspi1.Init.CRCPolynomial = 7 ;​​​​ hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE ;​​​​ hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE ;​​​​ if ( HAL_SPI_Init ( & hspi1 ) != HAL_OK ) { エラーハンドラー() ; } /* USER CODE BEGIN SPI1_ Init 2 */ /* USER CODE END SPI1_ Init 2 */ } /** * @brief SPI2 初期化関数 * @Paramなし * @ retvalなし */ static void MX_SPI2_Init ( void ) { /* USER CODE BEGIN SPI2_ Init 0 */ /* USER CODE END SPI2_ Init 0 */ /* USER CODE BEGIN SPI2_ Init 1 */ /* USER CODE END SPI2_ Init 1 */ /* SPI2 パラメータ設定 */ hspi2.Instance = SPI2 ;​​ hspi2.Init.Mode = SPI_MODE_SLAVE ;​​​​ hspi2.Init.Direction = SPI_DIRECTION_2LINES_RXONLY ;​​​​ hspi2.Init.DataSize = SPI_DATASIZE_8BIT ;​​​​ hspi2.Init.CLKPolarity = SPI_POLARITY_LOW ;​​​​ hspi2.Init.CLKPhase = SPI_PHASE_2EDGE ;​​​​ hspi2.Init.NSS = SPI_NSS_HARD_INPUT ;​​​​ hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB ;​​​​ hspi2.Init.TIMode = SPI_TIMODE_DISABLE ;​​​​ hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE ;​​​​ hspi2.Init.CRCPolynomial = 7 ;​​​​ hspi2.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE ;​​​​ hspi2.Init.NSSPMode = SPI_NSS_PULSE_DISABLE ;​​​​ if ( HAL_SPI_Init ( & hspi2 ) != HAL_OK ) { エラーハンドラー() ; } /* USER CODE BEGIN SPI2_ Init 2 */ /* USER CODE END SPI2_ Init 2 */ } Re: TPL communication is not works in mc33771c ミラル様、 MC33771Cに推奨されているソフトウェアを使用している場合、ハードウェアの問題である可能性が高いです。AN12633を参照してください。MC33771BからMC33771Cに切り替える場合は、いくつかの外部部品を変更する必要があります。 JozefKozon_0-1779177671061.png 例えば、ローパスフィルタのCLPFとCINは異なります。MC33664と最初のMC33771Bおよび/またはMC33771Cノード間の外部コンポーネントについては、それぞれMC33771BのフルデータシートおよびMC33771Cのフルデータシートのセクション13.2.6を参照してください。MC33771Cの完全なデータシートは一般公開されていますが、 MC33771Bの完全なデータシートは機密情報であり、有効なNDA(秘密保持契約)を締結すれば、セキュアセクションからダウンロードできます。 JozefKozon_2-1779178421486.png JozefKozon_1-1779178371806.png 敬具、 ヨゼフ Re: TPL communication is not works in mc33771c ミラル様、 MC33771Cでは、書き込みコマンド、グローバル書き込み、または無効なフレームは応答を生成しません。有効な読み出しコマンドのみがデータを返します。これは、フレームごとに応答を期待するドライバもある多くのMC33771Bの例よりも厳格です。 MC33771C TPLには以下が必要です。 適切なウェイクシーケンス そして待ち時間 JozefKozon_0-1779338021638.png JozefKozon_1-1779338087547.png JozefKozon_2-1779338166772.png 読み取りコマンド(例えばSTATUSレジスタ)を送信してみて、MC33771Cが応答するかどうか確認してください。 敬具、 ヨゼフ Re: TPL communication is not works in mc33771c こんにちは、ミラルさん。 あなたの回路図はMC33771Cに対して正しいようです。ソフトウェアに関しては、ソフトウェアエンジニアに連絡を取りました。今のところ彼からの返答はない。回答を受け取り次第、必ず返信いたします。 ご辛抱いただきありがとうございます。 敬具、 ヨゼフ Re: TPL communication is not works in mc33771c ウェイクアップシーケンスのタイミングをすべて確認しましたが、すべて問題なさそうですが、TPL通信がまだ機能しません。また、mc33771c に必要な外部コンポーネントも確認しました。ボードに問題がある場合は、回路図も共有しました。
記事全体を表示
NTAG 424 DNAパーソナライゼーション(顧客保有マスターキー(BYOK)使用)— サポートされるフローとパートナー推奨 当社は、消費者向けスポーツ用品にNTAG 424 DNAチップを埋め込んだ偽造防止システムの導入を検討しています。ブランドはAESマスターキーを自社のHSMに保管する必要があり、パーソナライゼーションパートナーがそれを平文で閲覧することは決してあってはなりません。 私たちがターゲットとしているモデル: 当社では、HSM内部でSP 800-108 AES-CMAC KDFを使用して、マスターとUIDからタグごとのキー(K0、K1、K2)を生成します。 チップごとにパーソナライゼーションスクリプト(ChangeKey、ChangeFileSettings、WriteData SUN URLテンプレート)を作成し、コンバータのHSMにバインドされたトランスポートキーでそれぞれを暗号化します。 コンバータのエンコーダは、セキュアモジュール内で各スクリプトを復号化して実行します。鍵はHSMの外部に平文で存在することはありません。 それらは、エンコードされたUIDの署名付きマニフェストを返します。 いくつか質問があります。 NXP MIFARE Trust ServiceはBYOK/暗号化スクリプトのワークフローをサポートしていますか、それともNXPがマスターキーを保持するマネージドキーモデルのみに対応していますか? AN12196以外に、パーソナライゼーション側の信頼モデル(HSM間スクリプト配信、トランスポートキープロビジョニング)を網羅したNXPのリファレンス/アプリケーションノートはありますか? NXPパートナーエコシステムにおいて、お客様が保有するマスターキーを量産規模(年間数百万チップ)でサポートすることが知られているコンバータまたはパーソナライゼーションビューローはどれですか? 何かアドバイスがあればぜひ教えてください。必要であれば、ユースケースについてもっと詳しくお伝えします。 リーダ・システム用MIFARE SAM Re: NTAG 424 DNA personalization with customer-held master key (BYOK) — supported flows and partner こんにちは、 @mertenさん NXPの標準的なトラストモデルは「管理キープラットフォーム」に重点を置いていますが、お客様の設計は「顧客所有の、完全に安全なHSM間パーソナライズドモデル」です。これは実現可能ですが、標準のMIFAREトラストサービスに依存するのではなく、BYOKをサポートするハイエンドの変換プロバイダーを選択する必要があるカスタムアーキテクチャとなります。
記事全体を表示
FLEXCAN 比特率 您好,MCU 使用 S32K144,工作电压为 5V。当前配置 CAN 通信时,已启用 CAN0 和 CAN2。 CAN0 是 500K 的高速 CAN (TJA1050),CAN2 是低速 CAN (TJA1055T/3)。CAN0 配置为 500K 没有问题,CAN0->CTRL1 = 0x00DB0006 为 500K。 现在我想将 CAN2 配置为 100K,CAN2-> CTRL1 = 0x00CF0033,但是其他 CAN 设备无法接收数据。 如果 CAN 比特率设置为 100K,CAN2->CTRL1 应该是多少? 或者将 TJA1050 设置为 100K 是否可行?我还尝试将 CAN0 设置为 100K,但没有成功。 void FLEXCAN2_init(void) { #define MSG_BUF_SIZE 4 /* 信息缓冲区大小。(CAN 2.0AB: 2 hdr + 2 data= 4 word) */ uint32_t i=0; PCC->PCCn[PCC_FlexCAN2_INDEX] |= PCC_PCCn_CGC_MASK; /* CGC=1:启用 FlexCAN2 的时钟 */ CAN2->MCR |= CAN_MCR_MDIS_MASK; /* MDIS=1:在选择时钟之前禁用模块 */ CAN2->CTRL1&= ~CAN_CTRL1_CLKSRC_MASK; /* CLKsrc=0: 时钟源 = 振荡器 (8 MHz) */ CAN2->MCR&= ~CAN_MCR_MDIS_MASK; /* MDIS=0; 启用模块配置。(设置 FRZ、HALT)*/ while (!((CAN2->MCR& CAN_MCR_FRZACK_MASK)>> CAN_MCR_FRZACK_SHIFT)) { /*code*/ } /* 良好做法:在进入/退出冻结模式时等待 FRZACK=1 */ CAN2->CTRL1 = 0x00CF0033;/* 0x00DB0006 Configure for 500 KHz bit time 0x00DF000F 125Kbps */ /* Time quanta freq = 16 time quanta x 500 KHz bit time= 8MHz */ /* PRESDIV+1 = Fclksrc/Ftq = 8 MHz/8 MHz = 1 */ /* so PRESDIV = 0 */ /* PSEG2 = Phase_Seg2 -1 = 4 - 1 = 3 */ /* PSEG1 = PSEG2 = 3 */ /* PROPSEG= Prop_Seg - 1 = 7 - 1 = 6 */ /* RJW:因为 Phase_Seg2>=4, RJW+1=4 所以 RJW=3.*/ /* SMP = 1:每个 CAN 样本使用 3 位 */ /* clkSrc=0(未更改):Fcanclk= Fosc= 8 MHz */ f or (i=0;i < 64;i++) /* CAN2:清除 16 个消息增益 x 4 个字/msg buf = 64 字*/ {CAN2-> ramN [i] = 0; /* 清除 msg buf word */ } for (i=0; i < 16; i++) /* 在 FRZ 模式下,初始化 CAN2 16 msg buf 过滤器 */ {CAN2-> RXIMR [i] = 0xFFFFFF; /* 检查所有 ID 位中是否有传入消息 */ } CAN2-> RXMGMASK = 0x1FFFFF; /* 全局接受掩码:检查所有 ID 位 */ CAN2-> rAMN [4*MSG_BUF_SIZE + 0] = 0x04000000;/* Msg Buf 4,字 0:启用接收 */ /* EDL、BRS、ESI=0:未使用 CANFD */ /* CODE== 0 4:MB 设置为 RX 处于非活动状态 */ /* IDE=0:标准 ID */ /* SRR、RTR、时间戳 = 0:不适用 */ #ifdef NODE_A /* 节点 A /* 节点 A 接收标准 ID 为 0x511 的消息 */ CAN2-> raMN [4*MSG_BUF_SIZE + 1] = 0x 14440000; /* Msg Buf 4,字 1:标准 ID = 0x111 */ #else /* 节点 B 接收标准 ID 为 0x555 的消息 */ CAN2-> rAMN [4*MSG_BUF_SIZE + 1] = 0x15540000;/* Msg Buf 4,字 1:标准 ID = 0x555 */ #endif /* PRIO = 0: 未使用 CANFD */ CAN2-> MCR = 0x0000000F; /* 在 16 MB 内否定 FlexCan2 的暂停状态 */ while ((CAN2-> MCR & & CAN_MCR_FRZACK_MASK) > > CAN_MCR_FRZACK_SHIFT) {} /* 良好做法:等待 FRZACK 清除(不处于冻结模式)*/ while ((CAN2-> MCR & & CAN_MCR_NOTRDY_MASK) > > CAN_MCR_NOTRDY_SHIFT) {} /* 良好做法:等等 让 NOTRDY 清除(模块就绪)*/} Re: FLEXCAN bitrate 你好@沈先生 您可以参考MPC5xxx/S32Kxx/LPCxxxx:CAN / CAN FD 位定时计算文档。只需根据设置修改参数(例如S32K1xx、TJA1050、比特率 + 采样点等),该工具将提供相应比特率的一些配置以及 CAN_CTRL1 值: Julin_AragnM_0-1778863628803.png 我认为将两个收发器都设置为 100kbps 是可行的,因为 TJA1055 最高支持 125kbps。 致以最诚挚的问候, Julián
記事全体を表示
stack pushing and popping for JN5169 exception processing Hi Customer met an exception, wanted to analyze the stack content, but cannot find the document for the RISC core of JN5169 , so do not know the sequence to push core registers.  who can help to provide the sequence to push register  for exception processing?  Customer wants to find the document to describe this.  Thanks! Derek   Priority: Normal - Important but not Urgent Product JN5189 Region: APAC Topic: SW Tools (IDE | SDK | MCUXpresso Tool) Type: Documentation Re: stack pushing and popping for JN5169 exception processing @hiwave can you let us know the customer name related to this case? @amigo_li can you help here? Re: stack pushing and popping for JN5169 exception processing Hi @hiwave  If customer enable debug log and when device crashed, it would print message like below: APP Start: Switch Power Up APP Start: Watchdog timer has reset device!EPCR = 9dcf2 : EEAR = 9dcf2 Stack dump:  4007fc4 : 00080fe2  4007fc8 : 0009cec0  4007fcc : 1bf887c9  4007fd0 : 000882c6  4007fd4 : 00088ef1  4007fd8 : 00088f37  4007fdc : 00085df7  4007fe0 : 00084940  4007fe4 : 00080fe2  4007fe8 : 00001a12  4007fec : 00000000  4007ff0 : 00000000  4007ff4 : 0009cbfe  4007ff8 : 76543210  4007ffc : fedcba98 Then we can use tool : arm-none-eabi-addr2line -e app.elf 0x00088f37 You can check the source code in AN1189, the stack dump message would be print when there is a watchdog reset. Best Regards Amigo Li
記事全体を表示
当LIN充当通信从属设备时断开连接的问题 你好,当我使用 LPUART1 作为 LIN 从属设备时,一段时间后通信会中断。此时,数据接收和传输都无法进行。我用一个计数器来计算收到的帧数。每次连接中断时,计数器的值都不同。有时中断前的帧数超过 700 帧,有时是 3000 帧。下图显示了 LPUART1 在中断后的寄存器值。请帮我分析一下寄存器的问题出在哪里。感谢您的帮助。 QQ截图20260515170357.png QQ截图20260515170409.png QQ截图20260515170426.png QQ截图20260515170446.png QQ截图20260515170500.png QQ截图20260515170510.png QQ截图20260515170519.png Re: The problem of disconnection when LIN acts as a slave for communication 你好@Aoyng、 我刚刚就这个话题回复了这些主题: https://community.nxp.com/t5/S32K/The-S32K314-uses-the-LPUART-to-configure-as-a-LIN-slave/m-p/2365972/highlight/false#M58611 https://community.nxp.com/t5/S32K/The-LIN-communication-issue-using-the-FS6500-chip/m-p/2366021/highlight/false#M58615 此致, 丹尼尔 Re: The problem of disconnection when LIN acts as a slave for communication 您是否尝试修改 LIN 波特率并检查其差异?
記事全体を表示
使用 S32KDS 配置工具配置 LIN 的参数。 你好,当我使用 S32KDS 配置 S32K314 的参数时,有两个参数的功能我不明白,也不知道如何定义这些参数的数据范围。手册中是否有对这些参数的解释?请告诉我。谢谢。 QQ截图20260511162919.png Re: Configure the parameters of LIN using the S32KDS configuration tool. 你好,我不太清楚这两个参数的计算公式。请告诉我如何设置这些参数?或者,如何才能获得我应该为自己设置的公式参数? Re: Configure the parameters of LIN using the S32KDS configuration tool. 你好@Aoyng 这些参数用于控制 LIN 通信中的定时监控。它们确保在有效的时间窗口内接收到 LIN 帧的预期部分。 LinHeaderTimeout: 定义节点检测到中断后等待接收标头(同步 + ID)的时间。 仅用于从节点。 LinResponseTimeout 定义节点在标头之后等待响应字节的时间。 更多详情请参考以下图片: VaneB_0-1778531307578.png VaneB_2-1778531364383.png BR、VaneB Re: Configure the parameters of LIN using the S32KDS configuration tool. 你好@Aoyng 你的理解基本正确,只需澄清几点。在 Header_nominal 公式中,这些值分别对应于 13 位 → 中断字段 2 位 → 分隔符分隔符和字节间距 10 位 → SYNC 字段 10 位 → PID 字段 关于超时值的问题,配置 LinHeaderTimeout = 45 而不是 44 就可以了。 由于该参数定义了最大允许时间,因此使用稍高的值可以增加一些余量,并有助于使系统在出现时钟偏差和小的通信延迟时更加稳健。 Re: Configure the parameters of LIN using the S32KDS configuration tool. 你好,关于 LinHeaderTimeout 参数的配置,我注意到 Header_nominal 的公式是 13 + 2 + 10 + 10。请问我是否可以理解为 13 代表同步间隔段,2 是同步间隔段的间隔符号,10 是同步段增加了开始和结束位,最后 10 是增加了开始和结束位的 PID?我了解到,同步间隔段的间隔符号至少应为 1 位。那么,如果在 1 位的情况下将 LinHeaderTimeout 设置为 44,是否也可以将其设置为 45?
記事全体を表示