Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
S32G3:RTD MemMap 截面违规(用于 LLCE) 您好, 根据"[S32G3/Valeo] RTD MemMap Sections Violations - NXP Community" 的建议,我创建了此票据,用于为 LLCE 进行 xxx_MemMap 审核,具体如下(完整文档附后)。 请检查使用 GHS 编译后,下列参数/函数是否遗漏包含在适当的内存区域。 ================================================================= (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_43_LLCE_AFcfg.c: Llce_Eth2Can_EnabledFormats => CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE(即 bss 部分)中的数据 pLlce_Can_AfBuffer => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED(即 rodata 部分)中的数据 (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_43_LLCE_MAIN_SOC_PBcfg.c:// VariantPostBuild 已启用 (MAIN_SOC) Llce_Rx_Filters_List_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_RxAf_Filters_List_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_Rx_Filters_Ctrl0_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为啮合数据。 Llce_Rx_Filters_Ctrl2_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,它是啮合数据 Llce_Rx_Filters_Ctrl4_PB_MAIN_SOC=> CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段 Llce_Rx_Filters_Ctrl9_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段 Llce_Rx_Filters_Ctrl15_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据是啮合数据段。 Llce_RxAf_Filters_Ctrl0_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据。这是rodata部分 Llce_RxAf_Filters_Ctrl5_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,这是 Llce_RxAf_Filters_Ctrl9_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 Llce_RxAf_Filters_Ctrl15_PB_MAIN_SOC => CAN_43_LLCE_START_SEC_CONFIG_DATA_UNSPECIFIED 中的数据,该数据为 rodata 部分 (Can_43_LLCE_TS_T40D11M10I8R0) (Llce_Af_TS_T40D11M10I8R0) Can_Llce: llce_minihif => 未包含在 Can_43_LLCE_MemMap.h 中的静态全局变量 u8Length => 未包含在 Can_43_LLCE_MemMap.h 中的静态局部变量 stringBuf => 未包含在 Can_43_LLCE_MemMap.h 中的静态局部变量 ***************************************************************************************************************************************************************** 答:请通过标签"LLCE" 在恩智浦社区 ***************************************************************************************************************************************************************** 向 LLCE 团队提出此问题。 LLCE Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 你知道修复工作是否有时间表吗?如果有,何时? Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 法雷奥很晚才对您的问题做出反馈: 1.当你说:"Llce_Eth2Can_EnabledFormats => data in CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE which is bss section", 你是说 Llce_Eth2Can_EnabledFormats 应该放在例如 .mcal_bss_no_cacheable 中,但实际上却放在 .bss 部分? 该变量的初始化值为 4,但变量位于 .bss 部分,而不是 .data 部分。部分,因此变量应放在 .mcal_data_x 中。 2. 将全局静态变量llce_minihif加入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分对其进行控制,我们可以遵循 AUTOSAR 建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。 看起来这个变量在 Can_43_LLCE_TS_T40D11M10I10R0 中已被修复。 3.对于 Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ ,您确定将其放在正确的部分吗? 从下图中可以看到,有(static、static const),但它们都被放在同一个部分,即 .mcal_cont_cfg 部分。它是 rodata,而这个文件是生成的,所以我不能把它放在任何部分。 在之前/旧的交易所中,你预计下一个版本中不会有任何软件更新,因为不会有新的软件版本。现在还是这样吗? Re: S32G3: RTD MemMap Sections Violations (For LLCE) Hi Cong、 我已将我方的答复汇总给客户,但至今没有进一步的反馈。 我刚刚向我们的联系人发送了一封电子邮件,就您提出的 LLCE 问题征求进一步的反馈意见。 如果客户有任何回复,我们将在此更新。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) HiRichard, 感谢您的更新! 我们将在 2025 年 3 月在 S32G 上发行一张光盘,计划于 2025 年 5 月发行。此后没有发布下一个版本的计划。因此,我想收集有关该主题的信息,然后我们可以将这些实现纳入即将发布的2025年5月版本中。 请就我最初答复中的问题提供反馈意见: 1.我是否正确理解了他们所说的话?当他们说"Llce_Eth2Can_EnabledFormats => data in CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE which is bss section", 他们是否说 Llce_Eth2Can_EnabledFormats 应放在 .mcal_bss_no_cacheable 等位置,但实际上却放在 .bss 部分? 2. 将全局静态变量llce_minihif加入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分来控制它们,我们可以遵循 AUTOSAR 的建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。 您能否确认这是一个强烈要求? 3. 对于 Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ , 您是否检查过为什么客户认为它被放在了错误的部分? Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 根据原始票据上关于修复期望的更新,客户将在 6 月冻结代码。 尽管涉及许多元器件并且需要补丁,但要在6月之前组装起来会很困难。 因此,除非客户进一步强调,否则请根据现有假设/资源进行规划。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) Hi Cong、 很抱歉迟迟没有更新,但正如您在原始票据上看到的,客户完全没有反馈。 我将再次推动这项工作,但看起来您可以根据您对当前形势的评估来制定计划。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 嗨,理查德、 你有关于这个话题的最新消息吗? 我们需要尽快在 S32G 上的三月光盘中实施。 此致, Cong Re: S32G3: RTD MemMap Sections Violations (For LLCE) 对于 2.是的,我们创建了AF-4950票来记录这些详细信息。正在等待上述问题的确认,以便最终确定机票细节。 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 感谢您的更新。 1.对于Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ ,我将进一步检查为什么客户认为它被放在了错误的部分。 2.至于其他部分,既然您提到我们将进行修订,以确保包含适当的部分,那么我们是否已经制定了解决这些问题的方案/计划,以便与客户分享? 3.如原始票据"[S32G3/Valeo] RTD MemMap Sections Violations - NXP Community" 所述,FAE 正在与客户核实他们对此问题修正的期望,如有进一步信息,将在此更新。 此致, 理查德-钟 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 你好, 首先,我需要了解报告的内容。当他们说"Llce_Eth2Can_EnabledFormats => CAN_43_LLCE_START_SEC_VAR_CLEARED_16_NO_CACHEABLE 中的数据,这是 bss 部分 "时, ,他们是否说 Llce_Eth2Can_EnabledFormats 应位于例如.mcal_bss_no_cacheable、但实际上它被放入 .bss部分? 根据上述假定的理解,反馈意见是: NXP 将: - 将全局静态变量 llce_minihif 纳入相应的 MemMap 部分。u8Length/ stringBuf 是函数静态变量,它们不受 MemMap 控制,因为根据 SWS_MemMap_00023,MemMap 不能添加到函数体内部。如果需要通过 MemMap 部分对其进行控制,我们可以遵循 AUTOSAR 建议:"要强制对函数的静态变量进行特殊内存映射,必须将该变量移至文件静态作用域"。您能确认这是一个强烈要求吗? - 将全局静态变量 llce_minihif 定义纳入相应的 MemMap 部分 - 将 Llce_Eth2Can_EnabledFormats 的声明纳入相应的 MemMap 部分。这很可能就是放错位置的原因。 - 将 pLlce_Can_AfBuffer 的声明纳入相应的 MemMap 部分,并仔细检查当前 MemMap 部分是否合适。 - Llce_Rx_Filters_List_ / Llce_RxAf_Filters_List_ 已被放入相应的 MemMap 部分,因此需要进行额外分析以确定变量错放的原因。 Re: S32G3: RTD MemMap Sections Violations (For LLCE) 您好, 是否有任何更新? 此致, 理查德-钟
查看全文
I2S 缓冲区处理 是否有关于 I2S 驱动程序缓冲区处理和状态回调的说明?我正在将一个音频处理项目从 Kinetis 移植到 LPC55S69,在 Kinetis 上我使用的是自己的 I2S DMA 驱动程序,我需要弄清楚我的驱动程序中哪些部分可以用 MCUX SDK 驱动程序替代,或者我是否应该跳过它,将自己的驱动程序调整到新硬件上。 根据我从稀少的 SDK 文档中了解到的情况,驱动程序似乎有一个队列,可以接收 I2S_NUM_BUFFERS (4) 条目。它没有提到任何大小限制,所以我假设队列只接受四个指针。 所有提供的示例项目都只使用一个固定的缓冲区。它们会将同一个缓冲区连续排队两次,以避免播放中出现间隙,但并没有说明如何管理多个缓冲区。环回示例中,发送方和接收方使用的是同一个缓冲区,因此内容在不断变化,但没有任何同步机制--它们只是依赖于两个缓冲区的时钟是一致的,不会出现暂停或不同步的情况。演示只改变内容,而不是发送的缓冲区,这对大多数实际应用来说并不安全。 有一个 i2s_transfer_callback_t 的回调,它提供了一个 status_t 类型的参数"completionStatus" ,但 status_t 只是被类型化为 int32_t,没有关于它可以返回值的文档。 有一个包含 BufferComplete、Done 和 Busy 值的匿名枚举,但没有明确说明这些值会在回调中使用。我假设这些是 status_t 的值,BufferComplete 表示发送了一个缓冲区,Done 表示所有缓冲区都已发送完毕。如果能提前知道最终缓冲区是同时生成 BufferComplete和Done,还是只生成 Done 就更好了。 基本 I2S 驱动程序中提供了这一功能。在 I2S_DMA 驱动程序中,有一个单独的 I2S_DMAC回调。手册中似乎完全没有记录。从代码来看,这只是 ISR 使用的一个内部函数。是这样吗?是否有办法在 SDK 文档中区分哪些是导出函数,哪些仅在内部使用?或者,如果不相关,可以完全排除内部内容? 我是否认为完成回调会在 DMA 传输完成时发生?或者在 I2S FIFO 清空时是否有回调?我的应用程序通常无法连续发送音频,因此我需要知道何时在不中断最后一次传输的情况下关闭 I2S 发射器。(感谢硬件设计师允许你选择空闲的 I2S 发射器是发送零还是重复最后一个值——这是真正让事情变得更容易的小动作之一。我有一些应用软件需要双管齐下)。 编辑:我现在最关心的是确定哪个缓冲区刚刚完成。回调似乎没有指定,用户数据与句柄而不是单个传输相关联,而且 DMA 句柄数据是私有的。先进先出是一个显而易见的假设,但我想避免在传输中止或其他情况下出现缓冲区不同步的可能性。 谢谢! Scott Re: I2S buffer handling 我重新提起这个话题,是因为我还真的需要一个合适的答案。我去查看 SDK 在过去两年中是否有所改进,但现在 MCUX 面板(https://ui01.prod-mcuxsd.nxp.com/mcuxsdk/latest/html/index.html)上的文档链接已经失效,而且没有下载离线副本的选项。我在网上搜索了 MCUX SDK 文档,并按照我在那里找到的内容进行了编写。 目前看来,情况没有任何改善。双缓冲演示不仅不会尝试确定发送的是哪个缓冲区,甚至根本不重要,因为它总是在发送同一个缓冲区的更多副本。在这个例子中,没有任何内容能为实际使用该驱动程序提供参考。 我的主要问题仍然是:如何可靠地确定 I2S DMA 驱动程序刚刚发送完哪个缓冲区,从而保证以正确的顺序加载非活动缓冲区?我只是在每次回调时跟踪一个标记,但如果错过一次中断,系统就会失去同步,所有音频都会出现乱码,而且无法判断是否出了问题。 谢谢! Scott Re: I2S buffer handling 卡洛斯,开什么玩笑?对不对? Re: I2S buffer handling 对不起,快速阅读造成了困惑,工作突然加载,快速回答让我感到困惑,我评论说,每个代码都是由相应领域的专家开发的,因此每个代码都不是由一个人编写的,而是由一群具有不同知识的人编写的,因此,尽管可能会有一些错误(我们都有错误),但我相信,如果您可以信任这些代码的话。   另一方面,我们没有太多关于该代码的文档,我目前正在寻找你的信息,但由于缺乏关于该代码的信息,我想我无法快速给你答复,至于你告诉我的,好吧,我不是提供空缺职位的人,尽管如果你是这方面的专家,我们也不介意 I2S 和其他相关主题的专家,所以如果你想成为我们团队的一员,你可以寻找空缺职位并申请。 https://www.nxp.com/company/about-nxp/careers:CAREERS Re: I2S buffer handling 卡洛斯 请重新阅读我的问题。你会看到我的帖子是关于 I2S 的,这是一个同步串行音频接口,与 I2C 协议无关。你提供的链接都与 I2S 或我的问题无关。 我试图使用 MCUX SDK 驱动程序,因为据说这是恩智浦推荐的解决方案。我为 Kinetis 编写了自己的驱动程序,但我想 利用恩智浦已经为此提供的代码,而不是从头开始为 LPC 编写驱动程序。 听起来你是在告诉我,获得所需信息的唯一方法就是逆向工程 MCUX 代码。设置断点并不能告诉我有哪些值是可能的。我刚才做了,完成回调得到的值是 0xa8c。这究竟说明了什么?如果不通过驱动程序进行回溯,就无法查询,也无法了解其他可能的值及其含义。 回读 I2S_DMACallback(),似乎没有提供用于确定刚刚发送哪个缓冲区的机制。这些信息被保存在标有"成员的私人句柄中,不得在驱动程序之外访问或修改。" 别误会我的意思,如果恩智浦愿意支付适当的薪水,我很乐意整天阅读、测试、记录和改进 MCUX SDK 驱动程序代码。 我提出的问题是在实际应用中可靠使用 I2S 驱动程序时需要回答的问题。如果恩智浦不能提供答案,那么我只能认为这些代码从未在实际应用中进行过测试,因此不应该被认为是完整或安全的。是这样吗? Scott Re: I2S buffer handling 我建议您阅读 i2c 手册(https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/nxp-designs/931/1/UM10204.pdf),并在代码中使用断点和观察变量来确定您需要的所有信息   这些链接也很有趣 https://mcuoneclipse.com/2020/06/29/mcuxpresso-sdk-tutorial-using-i2c-driver-on-okdo-e1-board/ https://mcuoneclipse.com/2012/12/04/a-generic-i2c-high-level-driver/ Re: I2S buffer handling 好吧,那我剩下的问题呢? 如何确定刚才发送的是哪个缓冲区?我担心的是,如果应用程序错过了为完成回调提供服务的最后期限,它就会被去同步。在四个缓冲区轮流运行的情况下,它可以漏掉一两个缓冲区而不中断传输,但前提是必须有办法知道哪些缓冲区已经发送。 何时生成回调?最终缓冲区是否会同时生成"缓冲区发送的" 和"完成的" 回调? status_t 可能有哪些值? 以及如何获得完成整个 I2S 传输的回调,这样你才能关闭发射器? 我已经实现了基本功能,但在不了解细节的情况下,很难保证实现的完整和强大。 谢谢! Scott Re: I2S buffer handling 嗨 @scottm 你可以在 sdk_x.x.x_lpcxpresso55s69\ boards\ lpcxpresso55s69\ boards\ lpcxpresso55s69\ driver_examples\ i2s 中找到我们的例子,我们没有更多关于 i2s 的例子了
查看全文
请检查 SpiTimeClk2Cs、SpiTimeCs2Clk 和 SpiTimeCs2CS。 我使用的是 s32k314、s32ds RTD4.0.0。 我正在测试 spi 通信。 但我认为效果不佳。 因此,您是否要检查 SpiTimeClk2Cs、SpiTimeCs2Clk 和 SpiTimeCs2CS? 1. SpiTimeClk2Cs、SpiTimeCs2Clk 和 SpiTimeCs2CS 的含义是什么? 2. 请检查 Spi 配置 SpiTimeClk2Cs、SpiTimeCs2Clk 和 SpiTimeCs2CS 与图片的比较。 3.当使用 GPIO 而不是 PS0 控制 SPI 通信的 CS 引脚时,我希望与正常 SPI 时钟操作的时序一致。我该怎么做?(用 PS0 控制时通信不起作用)。 1) 通过 GPIO 控制 cs 引脚(miso 数据有误。) 2) 通过 PS0 控制 cs 引脚 4. 如何固定 spi 时钟中的这一点? 谢谢帮助 Re: would you check SpiTimeClk2Cs, SpiTimeCs2Clk and SpiTimeCs2CS? @PavelL 当我将 SpiDataShiftEdge 设置为 "尾部 "时,信号源生成在照片的右侧(CPOL(1U)、CPHA(1U)).而当我将 SpiDataShiftEdge 设置为 "Leading "时,信号源生成为图片的左侧(CPOL(1U), CPHA(1U))。 1.png 因此,如果要使用 BNO080,我必须设置 CPOL =1、CPHA =1,还必须设置 SpiDataShiftEdge 为前沿,SpiShiftClockIdleLevel 为高电平。对不对? Re: would you check SpiTimeClk2Cs, SpiTimeCs2Clk and SpiTimeCs2CS? @PavelL 你好我回复得太晚了。我做了其他工作。 我还没有解决SPI问题. 总之,我不知道你还记得你的答复。 您回复说我的设置(SpiDataShiftEdge)是错误的,但其他人的引导是正确的。 这是邮政: https://community.nxp.com/t5/S32K/how-is-set-spi-communication-mode/m-p/2117524 那么,什么是正确的? (我很抱歉,这么晚才回复......)。 Re: would you check SpiTimeClk2Cs, SpiTimeCs2Clk and SpiTimeCs2CS? 你好@rlaxortn、 问 1:SpiTimeClk2Cs、SpiTimeCs2Clk 和 SpiTimeCs2Cs 的含义是什么? A1: SpiTimeCs2Clk 与 CS 设置时间 (tcssu) 相对应,即 CS 进入激活状态与第一个 SPI 时钟边沿之间的延迟。 spitimeClk2CS 是指最后一个 SPI 时钟边缘与 CS 处于非活动状态之间的延迟——您的设备未明确指定。 SpiTimeCs2Cs 是两个连续 CS 激活之间的最短时间,即从 CS 进入非激活状态到下一次激活的时间。 问题 2:你会检查 SPI 配置(spitimeClk2cs、spitimecs2clk 和 Spitimecs2CS)并将其与时序图进行比较吗? A2:SpitimeClk2CS、SpitiMecs2CLK 和 SpitiMecs2CS 的值通常可以保持在 1 µs,这对于大多数设备来说是安全的。 但是, SPIDataShiftEdge设置存在一个关键问题——应将其设置为 尾随 设置,因为您的设备(BNO080)要求CPOL = 1,CPH A = 1。 问题 3:当用 GPIO 而不是 PS0 控制 SPI 通信的 CS 引脚时,我希望与正常 SPI 时钟操作的时序一致。我该怎么做?(使用 PS0 控制时,通信不起作用。) A3:如果计时处理得当,应该不会有问题。将 GPIO 用于 CS 时的推荐顺序是 将 CS 拉低 等待 0.5-1 微秒 启动 SPI 传输 等待传输完成 再次等待 0.5-1 微秒 版本 CS HIGH 这模仿了硬件控制的 CS 的行为,并确保了从属设备的时机正确。 问题 3a: 通过 GPIO 控制 CS 引脚会导致不正确的 MISO 数据。 A3a: 如上所述,这可能是由于 SpiDataShiftEdge 设置不正确造成的。请确保将其设置为 TRAILING 以匹配 CPHA = 1。 Q3b:通过 PS0 控制 CS 引脚(硬件控制) A3b:这个设置总体看来是正确的。唯一需要考虑的是 CS 激活之前的初始 CLK 脉冲。但是,由于该脉冲是在 CS 钳位之前发生的,因此它应该是无害的,并且会被从属设备忽略。 问题4:如何修复SPI时钟中的标记点(意外脉冲)? A4:即使 CS 由 LPSPI 模块控制,也会出现类似的脉冲确实是不寻常的。请检查在拉低 CS 和启动 SPI 传输之间执行了哪些代码。任何过早启用 LPSPI 模块或错误配置定时参数的行为都可能导致这种现象。 顺祝商祺! 帕维尔
查看全文
S32K144ボード間SPI通信における異常な動作 こんにちは、S32K144 ボードで SPI 割り込み通信を設定するときに問題が発生しています。このプロジェクトは PC33771B デバイスとの通信を目的としていますが、現時点では 33664EVB によって提供される一種のループバックになっています。 大部分は機能しているように見えますが、データが実際にバッファー内に保存される方法は奇妙です。5 バイトのメッセージがあり、一般的に次の順序に従います。 B5 0 0 0 B1 B2 B3 B4 LPSPI は単語単位で動作するので、これは正しいはずだと私は思います。しかし、何らかの理由で、常にその順序になるわけではありません。ボードを開始するとき、順序は次のようになる場合があります。 B1 B2 B3 B4 B5 0 0 0 そして時にはそれはただ: B1 B2 B3 B4 0 0 0 0 5番目のバイトが完全に失われます。 CAN を使用してデバッグできるように、小さなテスト コードを作成しました。必要なメッセージを SPI_1 に送信し、SPI_0 のバッファで終わるメッセージを受信します。何が起こっているかを確認するためにロジック アナライザーも使用しています。 最初のメッセージ: rchust_1-1756882155720.png まず、 spi メッセージは S32K144 規則に従っているSO、5 番目のバイトは CRC になります。また、cmd で 4 番目のバイトにステップインしているので、都合よく 4 に設定しました。SPI_0 が再び準備完了するまで待っても、常にゼロが返されます。これは最初の場合にのみ発生します。 2番目のメッセージ: rchust_2-1756882331448.png 最後のバイトはまったく表示されません。何らかの理由で失われたのかもしれませんが、その場合でも、MSB 順に並べられている場合、他の 4 バイトは最初のワードには含まれないはずです。 3番目のメッセージ: rchust_3-1756882533429.png これは意図したとおりに機能しているようで、すべてのデータが取得され、予想どおりの順序で実行されます。落ち着いた後にすべてのメッセージで一貫して受け取るものなので、これは予想される順序だと思います。 これに関する問題は、必ずしも 3 番目のメッセージが適切であるとは限らず、5 番目または 6 番目のメッセージが適切である場合もあれば、5 番目のバイトがまったく表示されない場合や、2 番目のワードに表示される場合もあることです。一度正しく実行し始めると、一貫して動作します。この問題の原因について何かアイデアはありますか?コードと構成は以下の通りです。 void response420 ( zc_can_packet * パケット){ zc_spi_transfer(&spi_rx, &spi_to_can_packet); transfer_E2E_spi_packet(&E2E_spi, & can_to_spi_packet , &packet-> temp_data [0]); memcpy (&can_response. temp_data , spi_to_can_packet. rx_buffer , 8); zc_can_send(&can, &can_response, MAILBOX_0); } void zc_spi_transfer ( zc_spi_hw * hw_config, zc_spi_packet * パケット){ hw_config->転送されたパケット= パケット; hw_config-> hw_mode == MASTER の場合{ SPI_MasterTransfer (hw_config-> inst 、packet-> tx_buffer 、packet-> rx_buffer 、(packet-> message_bytes_length *NUMBER_OF_BITS_IN_BYTE)/hw_config-> master_config -> frameSize ); }それ以外{ SPI_SlaveTransfer (hw_config-> inst 、packet-> tx_buffer 、packet-> rx_buffer 、(packet-> message_bytes_length *NUMBER_OF_BITS_IN_BYTE)/hw_config-> slave_config -> frameSize ); } } void transfer_E2E_spi_packet ( E2E_spi_handler * E2E_spi, E2E_spi_packet * パケット, uint8_t * データ){ E2E_spi-> protector_handler -> protect_package (E2E_spi-> protector_handler 、データ、パケット-> packet_data . data_length_bytes 、 &(packet-> raw_spi_packet . tx_buffer [0]), packet-> packet_data . E2E_packet_id , packet-> packet_data . counter ); zc_spi_transfer(E2E_spi-> spi_handler 、&(packet-> raw_spi_packet )); packet-> packet_data . counter ++; //これは実際にはこのCRC形式では使用されませんが、この関数は複数のCRC形式で動作します if (packet-> packet_data . counter > E2E_spi-> protector_handler -> counter_overflow_number ){packet-> packet_data . counter = 0;} } response420 関数は、CAN コールバック自体によってフラグが立てられたときにメイン内部で呼び出される、CAN パケットを受信するための「コールバック」です。CAN 部分はそれほど重要ではありません。このバグは CAN がなくても発生するため、デバッガーでこのバグが表示された後、より多くの入力をテストできるように CAN を試しました。 一般的に、SPI_SlaveTransfer および SPI_Master 転送関数に見られるように、私は PAL を使用しています。これは PAL 構成です: SPI_1 設定: { .ボーレート = 2000000U、 .frameSize = 40U、 .bitOrder = SPI_TRANSFER_MSB_FIRST 、 .clockPolarity = SPI_ACTIVE_HIGH 、 .ssPolarity = SPI_ACTIVE_LOW 、 .clockPhase = READ_ON_EVEN_EDGE 、 .ssPin = 0, .transferType = SPI_USING_INTERRUPTS 、 .rxDMAChannel = 0U、 .txDMAチャネル = 0U、 .callback = NULL、 .callbackParam = NULL、 .拡張子 = NULL } SPI_0 設定: { .frameSize = 40U、 .bitOrder = SPI_TRANSFER_MSB_FIRST 、 .clockPolarity = SPI_ACTIVE_HIGH 、 .ssPolarity = SPI_ACTIVE_LOW 、 .clockPhase = READ_ON_EVEN_EDGE 、 .transferType = SPI_USING_INTERRUPTS 、 .rxDMAChannel = 0U、 .txDMAチャネル = 0U、 .callback = NULL、 .callbackParam = NULL、 .拡張子 = NULL } 同様の問題を発見した人はいますか? Re: Weird behavior in S32K144 board to board SPI communication わかりました。それはよかったです。@danielmartynekさん、本当にありがとう! Re: Weird behavior in S32K144 board to board SPI communication 素晴らしい。今は期待通りに動作しているようです。 HW はバイトスワッピングをサポートしていますが、SDK ドライバはサポートしていません。 danielmartynek_0-1757591362505.png Re: Weird behavior in S32K144 board to board SPI communication さて、コードを最大限に簡略化しました。 uint8_t送信データ[8] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8}; uint8_t受信データ[8]; lpspi_state_t lpspiState; int main (){ zc_clock_init(); zc_start_scheduler(); const clock_names_tクロック名[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES; clock_names_tクロック名 = クロック名[1]; lpspi_master_config_t spiConfig = { .bitcount = 8U、 .bitsPerSec = 20000000, .callback = NULL、 .callbackParam = NULL、 .clkPhase = 1, .clkPolarity = 0, .isPcsContinuous = true 、 .lpspiSrcClk = クロック名、 .lsbFirst = false、 .pcsPolarity = 0, .rxDMAチャネル = 0, .transferType = LPSPI_USING_INTERRUPTS、 .txDMAチャネル = 0, .whichPcs = 0, }; LPSPI_DRV_MasterInit(1, &lpspiState, &spiConfig); config_spi_pinout(spi_pinoutconfigs[1] .pinout ); 一方、 (1){ LPSPI_DRV_MasterTransfer(1, &送信データ[0], &受信データ[0], 8); zc_delay_milliseconds(1000); } 0を返します。 } これを実行してビットカウントを 8 にすると、結果は次のようになります。 rchust_0-1757584304367.png 間隔が問題だが、少なくともほぼ期待通りに動作する。 ビットカウント32の場合も同様です。 rchust_1-1757584408075.png 各ワード内のバイトは逆順にされます... 最後に、bitcount 64 で同じことを実行して何が起こるかを確認します。 rchust_2-1757584507750.png 同じことです。 これを uint8_t 配列ではなく word 配列に配置するとどうなるでしょうか? uint32_t送信データ[2] = {0x01020304, 0x05060708}; uint8_t受信データ[8]; lpspi_state_t lpspiState; int main (){ zc_clock_init(); zc_start_scheduler(); const clock_names_tクロック名[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES; clock_names_tクロック名 = クロック名[1]; lpspi_master_config_t spiConfig = { .bitcount = 64U、 .bitsPerSec = 20000000, .callback = NULL、 .callbackParam = NULL、 .clkPhase = 1, .clkPolarity = 0, .isPcsContinuous = true、 .lpspiSrcClk = クロック名、 .lsbFirst = false、 .pcsPolarity = 0, .rxDMAチャネル = 0, .transferType = LPSPI_USING_INTERRUPTS、 .txDMAチャネル = 0, .whichPcs = 0, }; LPSPI_DRV_MasterInit(1, &lpspiState, &spiConfig); config_spi_pinout(spi_pinoutconfigs[1] .pinout ); 一方、 (1){ LPSPI_DRV_MasterTransfer(1, ( uint8_t *) &送信データ[0], &受信データ[0], 8); zc_delay_milliseconds(1000); } 0を返します。 } rchust_3-1757584645130.png 実際に動作します... SO、フレーム サイズ 8 で作業していない場合は、リトルエンディアンのワード単位で送信されるようです。エンディアンを変更する方法はありますか? Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 私はすでにuint8_t配列を使用しています Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 tx_buffer をどのように定義しますか? ドライバは、8 ビット配列への 8 ビット ポインターを必要とします (LPSPI_DRV_MasterTransfer() 内)。 SO、CANそこに単語を渡す代わりにuint8_t[5] tx_bufferを使用できますか? よろしくお願い申し上げます。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 、 8 ビット フレームでテストしたところ、バイトを順番に送信して正常に動作しました。しかし、問題が 2 つあります。 1 つ目は、8 ビット フレームの場合、ハードウェアがデータをバイト単位で分割することです。これはフレームの定義なので当然のことですが、FUTURE に問題が発生する可能性があります。PC33771 がそのような間隔のメッセージを受け入れるかどうかはまだテストしていません。そうなるはずですが、期待通りのものではありません。 2 番目 (まだ PC33771 でテストしていない理由) は、PAL ライブラリでは連続モードを true に設定できないことです。PAL ライブラリの「方法」Master_init は、それをLPSPI_DRV_MasterInit に渡す前に、これを false に設定します。 status_t SPI_MasterInit ( const spi_instance_t * constインスタンス、 const spi_master_t *config) { status_tステータス = STATUS_ERROR ; uint8_tインデックス = 0; /* LPSPI 上で SPI PAL を定義する */ #if (定義済み (SPI_OVER_LPSPI)) /*! @brief LPSPIのクロック名 */ const clock_names_t g_lpspiClock[LPSPI_INSTANCE_COUNT] = FEATURE_LPSPI_CLOCKS_NAMES if (インスタンス-> instType == SPI_INST_TYPE_LPSPI ) { lpspi_master_config_t lpspiConfig; lpspiConfig. bitsPerSec = config-> baudRate ; lpspiConfig.whichPcs = ( lpspi_which_pcs_t )config-> ssPin ; lpspiConfig. pcsPolarity = ( lpspi_signal_polarity_t )(!(bool)(config-> ssPolarity )); lpspiConfig. bitcount = config-> frameSize ; ( void )CLOCK_SYS_GetFreq(g_lpspiClock[( uint32_t )instance-> instIdx ] ,&lpspiConfig.lpspiSrcClk ) ; lpspiConfig. clkPhase = ( lpspi_clock_phase_t )config-> clockPhase ; lpspiConfig. clkPolarity = ( lpspi_sck_polarity_t )config-> clockPolarity ; lpspiConfig. lsbFirst = config-> bitOrder ; lpspiConfig. transferType = ( lpspi_transfer_type )config-> transferType ; lpspiConfig. rxDMAChannel = config-> rxDMAChannel ; lpspiConfig. txDMAChannel = config-> txDMAChannel ; lpspiConfig.callback = config- > callback ; lpspiConfig. callbackParam = config-> callbackParam ; lpspiConfig.isPcsContinuous = false ; /* このインスタンスにLPSPI状態構造体の1つを割り当てます */ インデックス = SpiAllocateState (LpspiStateIsAllocated、LpspiStateInstanceMapping、インスタンス-> instIdx 、NO_OF_LPSPI_INSTS_FOR_SPI); ステータス = LPSPI_DRV_MasterInit(インスタンス-> instIdx 、( lpspi_state_t *)(&LpspiState[index])、&lpspiConfig); } そうでない場合、 #endif 連続モードでテストする前に、すべてのライブラリを変更して、PAL の使用を停止し、DRV の方法の使用を開始する必要があります。SOて結果を更新しますが、8 ビット フレームで正しい順序で送信されるようです。ただし、40 ビット フレームではそれが実現されないのはまだイライラします。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 更新ありがとうございます。 tx_buffer に 8 ビット配列を CAN 使用しますか? Re: Weird behavior in S32K144 board to board SPI communication はい、いくつかテストした後、問題の根本を見つけることができました。 どうやら、CAN を使用していないときでもピンを設定していたようで、1 つのピンがマスターの CS と衝突したようです。どうして 1 つのことが別のことに終わるのかはわかりませんが、CAN 構成を削除した後、ほとんどの問題は解消されましたが、1 つだけ問題がありました。 何らかの理由で、8 ビットを超えるフレームでデータを送信すると、各ワード内のバイトが入れ替わります。0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 というデータを含む 64 ビット フレームを配置すると、0x04 0x03 0x02 0x01 0x8 0x07 0x06 0x05 になります。これは、SPI が内部的にワードで動作し、データをバイトごとに入力しているためと思われます。あるいはそれはパルライブラリかもしれません。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@danielmartynek 、 まずおっしゃる通り、私の IDE バージョン、SDK は 4.0.2 です。申し訳ありません。 私が示しているコードは CAN コールバックであり、CAN データを SPI バッファにコピーします。このコードは、カスタム ライブラリに組み込もうとしているためこのようになっていますが、実際には、CAN から読み取った内容を SPI (SPI1) に送信し、スレーブ (SPI0) が読み取った内容を CAN に送信するだけです。 CAN は 4 バイトを送信し、次に保護によって CRC である最後のバイトが追加されます。SO SPI は 5 を送信し、次に 5 を読み取り、その後 CAN はバッファの最初の 8 バイト内にあるものをそのまま送信します。バッファ自体は実際にはもっと大きいのですが、 SPI_MasterTransfer はバッファの最初の 5 バイトだけを送信します。 デバッグモードで確認したところ、 SPI_MasterTransfer 内では送信中の SPI は常に期待通りの順序で、ギャップなくバイトが送信されています。常に正しく(少なくとも一貫性を持って)送信されているように見える、SO 問題はスレーブの受信にあるようです。 マスター ブロッキングでも同じ問題が発生するようです。スレーブをブロックするとマスターの送信がブロックされるため、スレーブをブロックして確認することはできません。また、マスターとスレーブの両方のクロック極性を低く設定すると、多くの上位ビットが失われることもわかりましたが、まずは最初のメッセージの受信が機能しない問題に取り組みましょう。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 SDKs ではなく IDEs (3.6.2) を指定したようです。 リリース番号がわかれば、報告されたバグを確認CANます。 非ブロッキング方法を使用しているようですが、ブロッキング転送関数でテストできますか? コードはあまり読みやすくありません。 伝達関数の引数としてどのような値を置きますか? バッファをどうやって埋めるのですか? SPI 通信で観察されるギャップは、ドライバのオーバーヘッドによって発生します。ドライバは送信 FIFO に十分な速さでデータを入れることができません。8 ビット モードでは、ドライバは FIFO にデータを 1 バイトずつ書き込むため、連続した書き込みの間にレイテンシが発生します。この遅延は、SPI クロック速度が高くなると顕著になります。この問題を軽減するには、DMA を使用することをお勧めします。 よろしくお願いいたします。 ダニエル Re: Weird behavior in S32K144 board to board SPI communication こんにちは、ダニエル。 私のSDKは3.6.2です。私は 33664EVB ボードとその TPL を介して SPI を使用しており、チップ セレクトは使用していません。チャネルはそれぞれ SPI1_clock、SPI1_tx、TPL1_data、TPL1_clock です。混乱を避けるために、FUTUREの画像では名前を付けます。後者の 2 つを SPI0_rx と SPI0_clock に直接入力してテストしたところ、同じ結果が示されたことを指摘しておきます。 8 ビット モードでテストしたところ、次の結果が得られました。 最初のメッセージ: rchust_0-1756888805291.png 4番目のメッセージ: rchust_1-1756888893698.png 最初に気づくのは、最初の単語と 2 番目の単語の間にある大きなギャップです。より大きなメッセージでもテストしましたが、8 ビットを使用すると各単語間にギャップが生じます。周波数を下げてみると、ギャップは減少し、500kHz あたりで消えます。それでも、33664EVB および 3771 のアプリケーション ノートでは 2MHz の使用が推奨されており、一般的に速度が低いことは望ましくありません。 まったく同じではありませんが、問題は依然として似ています。最初は最後のバイトはまったく表示されませんが、次にそれが最初に表示され、その後に他のバイトが正しい順序で表示されます。また、8 ビットではデータが入力した順序で送信されますが、40 ビット モードでは信号内のデータが交換され、その後スレーブによって再度交換されることも指摘しておく価値があります。 ワード間の大きなギャップがなければ 8 ビットの方が望ましいのですが、それでも問題は発生します。8ビット500kHzの場合: 最初のメッセージ: rchust_2-1756889381283.png 2番目のメッセージ: rchust_3-1756889458503.png 3 番目のメッセージSO: rchust_4-1756889521919.png これは 2 つの問題を示しています。1 つ目は私が言及しているスレーブによって読み取られたデータの不一致に関する問題であり、次に TPL のクロックを見ると 2 つ目の問題がわかります。TPL はパルス幅を 2MHz のように維持します。それがそのスピードが必要な理由の一つです。 Re: Weird behavior in S32K144 board to board SPI communication こんにちは@rchust 、 ドライバのバージョンを指定できますか? どのようなプロトコルを使用していますか?チップセレクト信号を使用していますか? ロジック アナライザのキャプチャでチャネルにラベルを付けることはできますか? LPSPI ハードウェアは 8 ビット フレームの連続送信をサポートしており、当社のソフトウェア ドライバーはこれと互換性があります。 8 ビットのデータを FIFO に配置することで、40 ビットのフレームを連続モードで送信CAN。 また、タイミングや信号の整合性に関連する潜在的な問題を排除するために、より低いボー レートで SPI 通信をテストしてみてください。 よろしくお願いいたします。 ダニエル
查看全文
如何在 K82 微控制器中使用 QSPI 别名区 尊敬的各位, 我目前正在研究 FRDM-K82F 评估板上的 led_demo_qspi_alias 演示项目,以更好地了解如何利用 K82 微控制器上的 QSPI 别名区域进行调试。 我仔细地按照 MBOOTQSPIUG 文档中概述的步骤进行了操作,但遗憾的是,我无法实现预期的结果。 作为参考,我还在恩智浦社区论坛的主题下描述了我的问题 " frdmk82 使用 led_demo_qspi_alias 示例项目 " 时的疑难解答 现在,我决定尝试通过 J-Link 调试器和 MCUXpresso 加载项目,并观察到以下行为: 启动时,程序计数器似乎卡在引导程序区。 immagine (2).png 但是,如果我手动将程序计数器设置为 main() 的地址(从 .map文件),调试会话就会成功启动。 能否请您说明一下导致这种行为的原因?特别是考虑到 MBOOTQSPIUG 文件中的程序在我的情况下似乎不起作用,是否有建议的方法绕过这个启动问题? 提前感谢您的支持。 亲切的问候, Vladimir Zitoli Re: How use QSPI Alias region in K82 microcontroller 你好@Vladimir_Zitoli 感谢您与我们联系。 - 您是否参考过"第 8 章 在 QuadSPI 别名区" 的MBOOTQSPIUG 文档? 本章介绍如何从别名内存区下载和运行应用程序。请注意,说明步骤基于 IAR IDE。如果使用 MCUXpresso IDE,在配置链接器文件时要特别注意。 例如: Alice_Yang_1-1760171548226.png -如果你的目标只是在 MCUXpresso IDE 上调试 “led_demo_qspi_alias_a000” 演示,请将 “RESET 处理” 设置更改为 SOFT,如下所示。 将板载调试探针更改为 CMSIS-DAP。 Alice_Yang_0-1760171495668.png BR 爱丽丝
查看全文
imx8mPlus-安卓 BSP 你好 我是 i.MX 平台和安卓电路板支持包的新手。 我正在将i.MX8M Plus与恩智浦安卓电路板支持包一起使用,我正在开发一个与CAN总线通信的显示系统(数字集群)。 我想确认一下我对流程的理解是否正确:--------。 -> 我从恩智浦下载并刷新安卓电路板支持包镜像(包括 Linux 内核和 CAN 驱动程序)。 ->电路板支持包已经支持 SocketCan 了,所以我不需要修改 CAN HAL 或内核代码。 -> 在 Android Studio 中,我可以版本一个应用程序,它能够: -通过 NDK/JNI 使用 C/C++ 打开 SocketCAN 接口(如 can0 -从总线接收 CAN 帧 -解码它们并更新安卓应用程序(Java/Kotlin 层)中的界面变量(如速度、RPM 等) ->未来,我计划添加照相机和导航功能,我也计划在同一个 Android Studio 应用程序中实现这些功能。 请您确认一下: -> 这种总体方法是否适合在安卓 电路板支持包 环境中使用 CAN 通信? -> 使用 Android Studio(通过 JNI)从应用程序打开和读取 SocketCAN 数据的方法正确吗? -> 对于摄像头和导航集成,直接在 Android Studio(应用层)中开发它们也行吗? ->如果这个过程不正确,能否请您解释一下我应该遵循的正确方法或架构? 我对这个平台很陌生,所以如果能有明确的解释或参考官方文档,这些文档描述了使用CAN进行Android 电路板支持包开发的正确流程,我将不胜感激。 Re: iMX8MPLUS - ANDROID BSP 您好, 大部分是的,如果您想使用 Android studio 创建 Android 应用程序,您的想法是正确的,为此您需要查看 Android 文档,没有比 Android 开发人员网页更好的地方了: https://developer.android.com/studio/intro 另外,我建议先在 Linux 上进行几次测试,这样你就可以习惯板和 CAN 接口,然后切换到安卓世界。 致以最崇高的敬意/问候, Aldo。
查看全文
S32ZE MBDT mTopR52_SPF_multiCPU 示例问题 您好, 我在尝试编译和生成示例项目的代码时遇到了问题,"mTopR52_SPF_multiCPU" 。 这是我收到的错误信息: Wei_H_0-1760571920372.png 于是我试着运行脚本: mbd_s32ze_build_multicore('mTopR52_SPF2_MultiCPU') 但我发现了以下错误 未识别字段名"Core_type". 在 mbd_s32ze_build_multicore>@(x)mbd_s32ze.nxp.target.get_target_core(x.Core_type) 中出错 在 mbd_s32ze_build_multicore 中出错 Re: S32ZE MBDT mTopR52_SPF_multiCPU example issue 你好 您使用的是哪个版本的 MATLAB?您可以尝试在命令行中运行 mbd_s32ze_path 脚本,然后运行 sl_refresh_customization,并重新启动 MATLAB。 此外,验证是否已从 Hw Settings-> 硬件实现-> 多核中启用多核,然后尝试使用 “版本选定节点” 按钮进行构建。 需要注意的是,使用 SPF2 内核需要高级许可证和启用 DSP/ML 选项的处理器。如果您没有此类许可证,请联系恩智浦销售团队。 vladmitroi_0-1761222446769.png
查看全文
eMMC 上の DTB とカーネル イメージを更新する簡単な方法はありますか? 開発中は、DTB とカーネル イメージを頻繁に更新する必要があります。 SD カードの使用は非常に便利です。カード リーダーは、FAT パーティション上の DTB とカーネル イメージを読み書きCAN。 しかし、eMMC の使用は非常に不便です。もっと簡単な方法はありますか? Re: Is there a simple way to update the DTB and kernel image on an eMMC? これがより良い方法だと私は信じています。 UUUを使わずにeMMC上のLinuxカーネルとdtbをアップグレードする方法 Re: Is there a simple way to update the DTB and kernel image on an eMMC? こんにちは、 fastboot モードに入るには次のものが必要です: 1. ボードの電源を入れ、任意のキーを押してブート フローを停止し、U-boot に入ります。 2. U-boot で次のコマンドを入力します。 fastboot 0 次のコマンドを使用して、UUU でファイルを送信します。 uuu -v -b fat_write mmc 0:1 例: uuu -v -b fat_write hello_world.elf mmc 0:1 hello_world.elf よろしくお願いいたします。 Re: Is there a simple way to update the DTB and kernel image on an eMMC? 前に述べたように、fastboot を使用してください。 ありがとうございます。 Re: Is there a simple way to update the DTB and kernel image on an eMMC? こんにちは、 何についておっしゃっていますか? DTB を fastboot でアップロードしますか、それとも SD カードから eMMC をフラッシュしますか、あるいはその両方ですか? よろしくお願いいたします。 Re: Is there a simple way to update the DTB and kernel image on an eMMC? 具体的にはどうすればいいのでしょうか? ガイダンス文書はありますか? ありがとうございます。 Re: Is there a simple way to update the DTB and kernel image on an eMMC? こんにちは、 U-boot から fastboot でボードを構成する DTB ファイルを更新し、UUU を使用してファイルを転送CAN。 イメージのフラッシュに関しては、UUU で再度フラッシュするか、SD カードから eMMC をフラッシュすることをお勧めしますが、このプロセスはより複雑だと思います。 よろしくお願いいたします。
查看全文
HSEをインストールした後にアプリケーションファームウェアが壊れた ファームウェアS32K3_HSE_DemoExamples_1_0_0を使用してHSEをインストールした後、メモリをフルにインストールしました。 アプリケーション コードが動作しなくなりました。デバッグ モードでは、フラッシュにアクセスしようとすると致命的なエラーが発生する可能性があります。 HSE と連携するには、アプリケーションで何かを変更する必要がありますか? HSE に乱数を生成させたいだけです。 Re: application firmware broke after installing HSE こんにちは@ggreguer HSE が稼働している場合、まだ CUST_DEL ライフサイクルであれば、サービス HSE_SRV_ID_ERASE_FW を使用できます。これにより、HSE ファームウェアと SYS_IMG が消去されるSO、HSE の観点からはほぼ「工場出荷時設定へのリセット」と同じになります。ほとんどと言うのは、OTP メモリである UTEST フラッシュにプログラムされたデータには影響しないからです。つまり、UTEST の HSE 機能フラグがプログラムされ、FULL_MEM ファームウェアがインストールされている場合、HSE 用に予約された領域は引き続き予約されます。AB_SWAP がインストールされている場合、UTEST の OTA フラグがプログラムされるSO、HSE FW 消去後も AB_SWAP ファームウェアの領域は予約されたままになります。SO、100% 工場出荷時の状態にリセットされるわけではありません。 HSE ファームウェアに問題があり起動できない場合は、ファームウェアを回復するか、SBAF でファームウェアを消去する必要があります。これは、ハンドシェイク メカニズムによって実行できます。残念ながら、この状況では他に方法はありません。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE こんにちは@lukaszadrapa 、お元気ですか?これらのフラグをチェックして、何が起こっているのかさらに調査します。 一方、ロックしているこれらの MCU でマスター リセットを実行する方法はありますか?HSE からすべてを削除し、再び正常に動作させるには、工場出荷時設定にリセットする必要があります。ロックされているボードがいくつかあるのですが、本当に必要です。 Re: application firmware broke after installing HSE HSE に何らかの問題がある場合 (間違ったクロック構成による致命的なエラー、HSE メモリ リソースの ECC エラーなど)、フラッシュが HSE に対してロックされているが、何らかのエラーのために操作が完了していない可能性があります。HSE GPR レジスタは 0x4039_C028、ビット 16 ~ 29 で確認できます (HSE ファームウェア リファレンス・マニュアル v2.6、表 143 を参照)。HSE_CONFIG_GPR3 のステータス ビット)。リセット後約 1 秒経過しても一部のビットが永続的に設定されている場合、HSE はシャットダウン モードになっている可能性があり、ハンドシェイク手順を開始する必要があります。HSE FWリファレンスマニュアルの「14.6.7 HSEファームウェアハンドシェイク」を参照してください。こちらにも説明を書きました: https://community.nxp.com/t5/S32K/S32K3-HSE-ERR-GENERAL/mp/2072826/highlight/true#M47407 それでも解決しない場合は、具体的に何が問題なのかを詳しく教えていただく必要があります。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE もう 1 つ質問があります。MCU をハード リセットして、エラーなしですべてのメモリを消去できる以前の状態に復元する方法はありますか? 送信された画像に示すように、HSE が初期化されるのを待ってアプリケーション ファームウェアをすでにテストしましたが、まだ動作しません。次を使用してフラッシュに書き込もうとすると、 C40_Ip_pFlashBaseAddress->DATA[0] = 0x00U; Re: application firmware broke after installing HSE こんにちは@ggreguer 1. HSE がインストールされると、フラッシュの一部が HSE ファームウェア専用に割り当てられます。リファレンス・マニュアルの次の表を参照してください。 表199.HSE_Bファームウェア使用機能フラグが有効になっている場合の構成の詳細 表200。ABスワップ構成 https://www.nxp.com/webapp/Download?colCode=S32K3XXRM 表 199 は、実際には FULL_MEM がインストールされている場合のメモリの状態です。 たとえば、Pemicro デバッガーを使用する場合、インストールされているファームウェアに応じて適切なフラッシュ アルゴリズムを選択するのはユーザー次第です。このようなフラッシュ アルゴリズムは、予約済み領域へのアクセスを回避します。 Segger のツールはステータス レジスタに基づいてこれを自動的に実行すると思います。詳細については、Segger に直接お問い合わせください。 https://kb.segger.com/NXP_S32K3xx#HSE_activated https://www.segger.com/support/technical-support/ 2. HSE ファームウェアをインストールしたら、次の 2 つが必要になります。 - MU_0 の FSR レジスタの HSE_STATUS_INIT_OK フラグが設定されるまで待機する必要があります。その前に、HSE サービスをトリガーすることはCANません。たとえば、HSE DemoExamples には次のようなものがあります。 lukaszadrapa_0-1761287124700.png または、RTD の例では次のようになります。 lukaszadrapa_1-1761287139514.png - リセット後にクロックが初期化されている場合、PRTN0_CORE2_STAT レジスタの WFI ビットを待つ必要があります。このビットは、SBAF/HSE がアイドル状態であり、クロックを変更CANことを示します。HSE の実行中に HSE_CLK を変更することはできません。これにより、予期しない動作が発生する可能性があります。これは RTD ドライバの以前のバージョンでは行われず、ユーザーが行う必要がありました。現在、この問題は修正され、RTD 5.0.0 以降のクロック初期化関数に実装されています。 よろしくお願いいたします。 ルーカス Re: application firmware broke after installing HSE また、HSE をインストールした後、J-Flash を使用してメモリを消去することもできません。 Re: application firmware broke after installing HSE #こんにちは@lukaszadrapa 私はS32K3X4EVB-T172ボードで作業しており、HSEファームウェアをインストールしようとしています。 HSE ファームウェアのフラッシュは成功しましたが、アプリケーションは常に次の場所で停止します。 if (FALSE == checkHseFwFeatureFlagEnabled()) { /* ここで止まります */ } SO、HSE FW の初期化は続行されません。 UTEST領域(0x1B000080)をチェックしたところ、値0XFFFFFFFFが返されました。 私たちのプロジェクトとイメージを確認して、この問題の解決にご協力ください。 ありがとう
查看全文
在 i.MX RT 双图像设置中,HAB 身份验证成功,但出现警告(不支持的引擎 - DCP)1050 你好, 我正在为 i.MX RT1050 MCU 开发安全启动实现,并希望实现双映像身份验证 ——一个用于第二阶段引导加载程序,另一个用于应用程序映像,两者都位于外部闪存中。 设置概述 SRK、IMG 和 CSF 证书使用恩智浦安全配置工具 (SPT) 生成。 第二阶段引导加载程序由 ROM 使用 HAB 进行签名和验证。 应用程序映像在启动加载程序后存储在外部闪存中,可独立更新(如通过 USB 或 OTA)。 第二态引导加载程序会调用ROM HAB 应用程序接口(API),以在执行前验证应用程序映像。 实施细节 两个镜像(引导加载程序 + 应用程序)都使用相同的 SRK/CSF 密钥集签名。 在第二阶段引导加载程序中,我调用了 HAB 身份验证,如下所示: load_addr = (uint32_t) hab_authenticate_image_no_dcd(1,ivt_offset,image_start,字节); hab_image_entry_f hab_authenticate_image_no_dcd (uint8_t cid、uint32_t ivt_t 起始、大小_t 字节) { 返回 g_habrvtTree-> authenticate_image_no_dcd (cid、ivt_offset、(void **) & 开始,(size_t *) & 字节,空值);} 身份验证有效 — 该函数返回有效的重置处理程序地址,以确认图像已成功验证。 问题:HAB 警告(不支持的引擎 - DCP) 验证成功后,我使用 hab_rvt_report_status() 和 hab_rvt_report_event() 查询 HAB 状态和事件日志。 虽然身份验证通过了,但我始终收到HAB 警告,而不是 HAB_SUCCESS。 输出示例: Hab rvt 报告状态 = 0x69,配置 = 0xcc,状态 = 0x99 报告事件 #0-> 0xf0 [HAB EVENT #0](44 字节): DB 00 2C 43 69 0A C0 00 CA 00 24 00 02 C5 1B 00... 根据HAB4 文档对这一事件进行解码时,它表示 0x69 → 警告 0x0A → 不支持的引擎 0xC0 → 在 hab_rvt.run_csf() 中记录的事件 序列 02 C5 1B 00 映射到 图像密钥验证索引 协议:HAB_PCL_CMS 发动机DCP 默认配置 由此我明白,ROM 报告 "警告 "是因为它试图在 CSF 执行期间使用 DCP 引擎,但 DCP 在我的第二阶段引导加载器上下文中没有正确初始化或可用。 我的尝试 我使用 SDK 驱动程序手动初始化了 DCP:   DCP_Init(DCP,&config); (启用所有通道和默认设置) 但是,警告仍然存在 - 验证成功,但事件日志仍然报告 "不支持引擎 (DCP)"。 问题 在初级 HAB 验证SSB 过程中,ROM 如何初始化和使用 DCP? 手动调用 HAB ROM 应用程序接口时,会出现这种警告吗? 是否有可能从自定义引导加载程序调用 ROM HAB 身份验证 API 并实现 HAB_SUCCES S(无警告),还是在初始启动环境之外使用 ROM HAB API 时会出现此警告? Re: HAB authentication succeeds with WARNING (Unsupported Engine – DCP) on i.MX RT dual image setup1 你好@BiHDeveloper 感谢您的联系! 在深入研究之前,您能否手动修改 BD 文件,将 Header_Engine 设为 "any"?然后把结果告诉我 diego_charles_2-1762816138764.png 编辑:更新bd文件后,如上所示,再次版本镜像,注意SPT在版本映像时自动生成BD文件按钮。为了避免这种情况,您可以在项目工作区手动运行 build_image 脚本。然后将新图像写入处理器。 如果您发现任何变化,请告诉我。 迪亚戈
查看全文
iMXRT1165でSDPを使用したQSPIフラッシュのプログラミング 私は、iMX RT 1165を使用しているカードで生産のためのセットアップを試みています。USB経由のシリアルダウンロードを利用したいのですが。SDKのフラッシュローダーの例を使用し、古いプロセッサ(1060など)でsdphostとblhostを使用するプロセスを説明するいくつかのドキュメントを見つけました。私は、指示は同等であると思っていました。しかし、私はそれを機能させることができませんでした。私はsdphostとblhost用のspsdk pythonツールを使用しています。 それで私の質問はこれらの指示の更新版がありますか?または、これらの指示が同じである場合、私は何が間違っていますか? これが私の試みからの出力です: $ sdphost -v -u 0x1fc9:0x013d write-file 0x20202000 evkmimxrt1160_flashloader_cm7.bin INFO:spsdk.sdp.sdp:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.sdp.sdp:TX-CMD: WriteFile(address=0x20202000, length=83432) Status (HAB mode) = 2 (0x2) NO DESCRIPTION. Response status = 32 (0x20) NO DESCRIPTION. $ sdphost -v -u 0x1fc9:0x013d jump-address 0x20202400 INFO:spsdk.sdp.sdp:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.sdp.sdp:TX-CMD: Jump To Address: 0x20202400 INFO:spsdk.sdp.sdp:RX-PACKET: Response: 0x00000020 Status (HAB mode) = 32 (0x20) NO DESCRIPTION. $ blhost -v -u 0x1fc9:0x013d flash-image program.bin erase INFO:spsdk.mboot.mcuboot:Connect: identifier='usb', device=SE Blank RT Family (0x1FC9, 0x013D)path=b'/dev/hidraw1' sn='' INFO:spsdk.mboot.mcuboot:CMD: FlashEraseRegion(address=0x00000000, length=90112, mem_id=0) INFO:spsdk.mboot.mcuboot:CMD: Status: 10000 (0x2710) Unknown Command. Response status = 10000 (0x2710) Unknown Command.
查看全文
代码在紧耦合(ITC)内存中执行速度较慢 作为实验,我标记了一个相当昂贵的函数 __RAMFUNC(SRAM_ITC) 令我惊讶的是,它的运行速度慢了约 10%。有人可以分享一下为什么会发生这种情况吗? 这是在 iMXRT1062 上,如果不是从 ITC 运行,则从闪存 (XIP) 运行。 i.MXRT 106x 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , iMXRT 系列所有 M7 内核的 FPU 设置应为 FPv5-D16。唯一的例外是 iMXRT1011,这里必须是 FPv5-SP-D16。 对于 M4 和 M33 核心,它也是 FPv5-SP-D16。 在 ITCM 中执行速度不如从闪存执行速度快的原因是,该函数可能太小,以至于完全可以放入缓存中。 然而,如果代码库规模增加,就会发生缓存破坏。这意味着函数执行的速度不再确定。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , 如果要调用的函数在地址范围内最多“远离”四兆字节,则可以使用直接跳转“BL”,而无需任何修饰。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 确实如此。 完整的情况是: 该代码使用了大量双精度数学。 该项目设置为使用单精度浮点 ABI,因此充满了函数调用,而不是 .f64运营。 当代码放入 ITCM 时,每个函数调用都经过了一层修饰。 选择双精度 ABI 后,该功能现在的速度提高了一倍,并且在 ITCM 中不会减慢速度。它也没有变得更快,但我确信这其中有更多平凡的原因。 🙂 我发现奇怪的是,该项目是使用错误的 ABI 创建的 - 它是从 iMXRT1062 模板创建的。 对于 FP ABI 来说,这个线程很有用: https://community.nxp.com/t5/i-MX-RT/FPU-Type-options-for-MCUXpresso-for-double-precision-floating/mp/1231125/highlight/true#M12674 回复:代码在紧耦合(ITC)内存中执行速度较慢 啊,是的,可能是这样。 只是为了清楚起见,从 ITC 到其他 ITC 函数的函数调用是否仍然很快? 回复:代码在紧耦合(ITC)内存中执行速度较慢 你好@expertsleepers , 您从 ITCM 执行的代码是否调用位于闪存或 SDRAM/OCRAM 中的函数?由于编译器插入了饰面函数,因此这些现在更加昂贵。 当调用 Std-Lib 函数时,它们的位置也不太明显。 此致 回复:代码在紧耦合(ITC)内存中执行速度较慢 但如果该函数是从闪存执行的,那么情况不也是如此吗? 该函数访问 OC SRAM 和外部 DRAM。我确信两者都会导致等待,但我不明白这怎么会使 ITC 比 XIP 慢。 回复:代码在紧耦合(ITC)内存中执行速度较慢 该函数可能有一些例程需要另一个内存中包含的数据,从而导致执行时出现一些等待状态。 此致, 奥马尔 回复:代码在紧耦合(ITC)内存中执行速度较慢 我明白。关注这个话题。 回复:代码在紧耦合(ITC)内存中执行速度较慢 不幸的是,有问题的代码是一个非常大的项目的一部分。我必须尝试将其隔离到一个新的项目中 - 当然它可能不会表现出相同的行为。如果我设法创建一个小测试用例,我会发布。 回复:代码在紧耦合(ITC)内存中执行速度较慢 有趣的。您能提供一个测试用例吗?我想重现这种行为。
查看全文
Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settings We are looking to include multiple MIMXRT105x chips along with other devices in a 5 pin JTAG chain (TMS, TCK, TDI, TDO and nTRST). We have found AN4826, AN12419 and the MCU-LINK-PRO UM11673-2940346 documents. Are there any other application notes or other documentation that could contain useful guidelines and instructions for PCB layout and how to write an appropriate custom MCU-LINK-PRO connection scripts. Thank you for your help, Richard Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Thank you for you help Sam. +1 My take away is that there is no additional NXP documentation to find detailed NCU-LINK-Pro configuration comparable to e.g. Segger's more expensive debug probe and it's documentation; no worries and thank you once again. Best regards, Richard  Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Hi @RidiculousRichard  Thanks for your questions, it seems you want to know how to find dedicated documentaion about JTAG or MCU-LINK-pro for program or debug when you use MIMXRT105X, e.g useful guidelines and instructions for PCB layout. There are some comments from my side, please help clarify more if my understanding is wrong. 1. MIMXRT1050 EVKB Board Hardware User’s Guide to find JTAG connetor (J21 is a standard 20-pin/2.54 mm Box Header Connector for JTAG) Sam_Gao_0-1717490334065.png 2. MIMXRT1050-EVK Design Resouces to download the schematics, layout files, and gerber files (including Silkscreen) for layout reference 3. AN4826 published by 2014 is still good guidelines for Schematic and PCB Layout, also please refer MCU-LINK-Pro User Manual to find more details, or other from MCU-LINK-Pro Documentation, it works well with our MCUXpresso or 3rd part IDE. Sam_Gao_1-1717490780729.png Have a nice day. Sam Hi @Masmiseim  Thanks for your information and input. Have a nice day, Sam Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Thank you for the link and good experience report. +1 I'm hoping someone who knows of MCUXpresso & MCU-LINK-Pro configuration documents will post some links to them. Re: Are there any guidelines for multiple chained MIMXRT105x JTAG PCB layout and MCU-LINK-Pro settin Hello, We did this with the 1170. The whole thing was very unspectacular and runs without any problems. If you want to achieve good performance, you should just follow the usual layout rules. Microchip has also created a nice summary on chaining: https://onlinedocs.microchip.com/pr/GUID-73C92233-8EC5-497C-92C3-D52ED257761E-en-US-1/index.html?GUID-31B03AFD-1033-4EF9-A937-872192990AE9 How you have to adapt the connect script depends on the development environment you are using. In principle, you only have to configure the bits before and after the device to be addressed, in each case for the instruction and data register. Unfortunately, I cannot say how this works with MCUXpresso. We use Rowley Crossworks, which makes this very easy. Regards
查看全文
S32G399A M7原子力開発環境 開発にS32G399Aを使用しており、MCU開発環境のセットアップ中にいくつかの問題が発生しました。詳細は次のとおりです。 ソフトウェアバージョン IDE: S32 Design Studio for S32 Platform 3.5、アップデートバージョン3 測温抵抗体(RTD): SW32G_RTD_4.4_4.0.2_D2306 問題 関連する環境をインストールした後、MEX 構成インターフェイスでピン機能が無効になりました。手動で強制的に有効にしたとき、エラーが発生しました:エラー:Siul2_Port_Ip_Types.h:そのようなファイルやディレクトリはありません。 ピン機能が無効になるのはなぜですか、また、ファイルが見つからないというエラーの原因は何でしょうか? 考えられる原因と解決策 Re:S32G399A M7核開発環境 ありがとうございました : )
查看全文
FS26 TRK2 UV故障 我正在使用带有 s32k344 的 FS26,并且 FS_OVUV_REG_STATUS 寄存器通过 SPI 显示 TRK2 上欠压。但是我在 TRK2 上没有任何负载,只有两个电容器:2.2uF/50V 和 100nF/100V。我用万用表和示波器测量了TRK2电压,它等于5V,也就是说,它是正确的。有人能帮我解决这个问题吗? 回复:FS26 TRK2 UV 故障 我正在开始处理您的案子,我会尽快与您联系。
查看全文
写入fip、kernal、rootfs到S32G的emmc 当我使用 s32g399ardb3 时,我可以将 fip、Image、dtb 和 rootfs 写入 SD 并成功启动。但我想将它们写入 emmc。我该怎么办?在规范中,我只找到如何将 fip 或整个 yocto 图像写入 emmc,而不是单独写入。谢谢。 回复:将fip、kernal、rootfs写入S32G的emmc 谢谢你的提问 有关 BSP UM 的可用信息,请参阅第 4.1.3 节介绍了将fip和整个二进制文件写入mmc的方法。 对于单独的kenel,dts和rootfs,UM中没有正式的描述,在我看来,您可以按照以下方式尝试。 首先按照 UM 中介绍的方式将整个预先构建的图像刷入 MMC。 通过 QSPI 闪存将开发板启动到 Linux,然后将 mmc 挂载到 rootfs,应该存在两个分区,将您自己的内核/dts 复制到分区 1。 清理分区2的内容,复制您的特定fsl-image-auto-s32xxxx.tar.gz(可以您将需要将 Ubuntu 16.04 中的 rootfs 复制到分区 2,然后在那里解压,最后您将获得部署自己的 rootfs。 最后,通过 MMC 启动开发板。 希望有帮助。 顺祝商祺! 陈银
查看全文
s32k3 flash swap requirements? Hi Nxp,     for S32K3 flash swap function, i don't know is there any limitation for it, 1.  is it MUST need hse fw? if not ,is there any simple code example available? 2. if hse fw is MUST, is ab-swap fw needed, or full-mem also works? thanks. Re: s32k3 flash swap requirements? thanks your explanation. Re: s32k3 flash swap requirements? Hi @victory  to be able to perform AB swap, it is necessary to install HSE AB Swap firmware and then call HSE service HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK. It won't work with Full Mem version of the firmware and it won't work without the firmware. You can take a look at HSE examples here: https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples Search for function HSE_ActivatePassiveBlock. Or absolute minimalist code without any drivers is to: Write value 0x00000051 (that the ID of HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK service) somewhere to non-cacheable (this is important because Messaging Unit does not see cached data) SRAM memory (not DTCM). And then write address of this value to Messaging Unit MU0, TR1 register. That's all. If you receive response 0x55A5AA33 (that's HSE_SRV_RSP_OK) in RR1 register, the operation was successful. Regards, Lukas
查看全文
BFU660F 的 Spice 型号 您好, 能否提供 BFU660F 的香料型号? 谢谢! 约翰 Re: Spice Model for BFU660F 您好, ,我试图将此模型用于 Orcad PSpice,但似乎无法识别某些参数(例如:...M参数......),软件就会出错。请提供可在 orcad PSpice 中导入的 BFU660F 模型, ,谢谢您的支持 ,致以最诚挚的问候 Jonata Re: Spice Model for BFU660F 亲爱的艾丽卡 我想在 LTSPICE 中使用 2 发射器模型。 请发布 BFU660F 的 4 针型号。 顺祝商祺! 诹访仁 Re: Spice Model for BFU660F 嗨,艾丽卡、 谢谢你的香料模型。 您可以关闭此主题。 顺祝商祺! 约翰 Re: Spice Model for BFU660F 您好。 SPICE 模型附后。 希望对你有所帮助。 此致问候
查看全文
CLRC66301B 掉电模式仍消耗 2 mA 而不是 nA 您好,恩智浦社区 我正在使用 CLRC66301B NFC 读卡器IC 并尝试通过将 PDOWN 引脚设为高电平来激活掉电模式 (3.3)V),详见数据手册。但是,电流消耗保持在2 mA,而数据表显示掉电时电流消耗应在8 nA至40 nA之间。 设置详情: PDOWN 引脚:3.3 V(恒定高电平) VDDs:VDD(TX)、VDD(AUX)、VDD(MCU)电压均为 3.3 V 接口:I²C(测试期间空闲) XTAL:连接 27.12 MHz 晶体 当前测量期间无通信或活动 测量电流: ~2 mA 问题 1.在断言 PDOWN 之前是否需要对寄存器进行配置? 2。IRQ、XTAL、IFSEL 或其他 GPIO 能否阻止进入真正的掉电模式? 3.PDOWN 是否需要使用 VDD 或 RESET 进行额外的定时或排序? 如有任何见解或建议,我们将不胜感激。 谢谢! 乌玛桑卡尔 NFC 控制器解决方案 Re: CLRC66301B Power-Down Mode Still Consumes 2 mA Instead of nA 您好, 当您提到当 SDA 和 SCL 物理断开时电流消耗会降低时,是指您移除了该引脚上的所有连接(同时移除主机 MCU 和上拉电阻器),还是指这些线路仅与主机 MCU 断开? 另外,能否请您描述一下测量所用的方法、设备和测试点? Eduardo。 Re: CLRC66301B Power-Down Mode Still Consumes 2 mA Instead of nA 亲爱的恩智浦团队 我使用带有 CLRC66303B 芯片的官方 CLEV6630ARD 板进行了掉电电流测试。只有在进行任何 I²C 通信之前物理断开 SDA 和 SCL 时,电流才会达到 ~40 nA。如果使用一次 I²C,即使将 PDOWN 设为高电平,电流也会保持在 2 mA 以上。 请说明在进入 PDOWN 之前,I²C 线路应该做些什么?具体来说 在断言 PDOWN 之前,MCU 是否应将 SDA 和 SCL 设置为高阻抗(输入,无拉)? 之前的任何 I²C 通信是否会阻止芯片进入真正的硬掉电? 谢谢! Follow-Up: CLRC66303 – High Current in Hard Power-Down Mode (CLEV6630ARD-Based Design) 亲爱的恩智浦团队 我之前曾就 CLRC66301HN 的硬掉电电流提出过问题,你的回复建议迁移到 CLRC663 Plus 系列 (CLRC66303)。此后我改用 CLRC66303B,使用基于 CLEV6630ARD 参考设计的定制板,我想继续提供最新的测试结果。 你之前的回复侧重于 LPCD 行为和 AN11783,但这个问题仅涉及通过 PDOWN 引脚进行硬掉电,没有RF场或 LPCD 处于活动状态。 掉电电流测量 (CLRC66303B): > 当 PDOWN 处于低电平时(芯片处于活动状态,RF场 开启):~100 mA >当 PDOWN 为高电平且存在 I²C 上拉时:~1.2 mA >当 PDOWN 为高且 I²C 线路被驱动为低时: ~6.6 mA >当 PDOWN 为高电平且 I²C 线路在使用前已物理断开时:~40 nA 只有在进行任何 I²C 通信之前物理断开 SDA 和 SCL 连接时,芯片才会在 PDOWN 模式下消耗 ~40 nA 电流。如果只使用一次 I²C,则即使在 PDOWN 钳位高电平之后,电流仍保持高电平。 硬件设置摘要: 芯片:CLRC66303B,I²C 模式。 微控制器:TI CC2652R7,100 kHz I²C 电压:3.3 V 调节 上拉:SDA/SCL 上 4.7 kΩ 至 3.3 V 未使用的引脚:按照数据表拉动 未启用射频或 LPCD 功能 方案设计:基于 CLEV6630ARD(附后) 需要澄清的问题: 1.在 PDOWN 模式期间,SDA/SCL 是否内部偏置? 2。即使后来将PDOWN设置为高电平,之前的任何I²C活动是否会阻止真正的掉电? 3.在断言 PDOWN 之前,是否有必要将 MCU I²C 引脚设置为 Hi-Z(输入,无拉)? 4.是否有恩智浦推荐的方法,可在硬 PDOWN 模式下可靠地实现<100 nA,而无需物理断开 I²C 线路? 我们的目标是确保电池的使用寿命,并且必须实现数据手册中规定的低功耗性能。如果有任何专门关于 PDOWN 行为和 I²C 漏电流的指导或文档,我们将不胜感激。 IMG_20250715_182911.jpg 附上示意图以供参考。 顺祝商祺! Umasankar C Re: CLRC66301B Power-Down Mode Still Consumes 2 mA Instead of nA 你好@Umasankarc 希望你一切顺利。 我知道你使用的是基于 CLRC66301HN(非增强版)的自定义板,对吗?如果是,请考虑我们建议改用 CLRC663 plus 系列 (CLRC66303)。 引脚 PDOWN 的高电平应启用硬掉电。数据手册中描述的掉电电流 (Ipd) 相当于 CLRC663 芯片中所有电源电流的总和;但是,嵌入在板中的外部元器件可能会消耗额外的功率。 AN11783 CLRC663 plus《电源卡检测》第 3.4 节中描述了一些低功耗设计建议。 Eduardo。
查看全文
[S32N55 B0] XSPI Flash operation leads to bus fault in CRS During the testing of the latest B0 silicon RTD in CRS, a flash operation leads to a bus fault in the following scenario: 1. A read operation of the external flash of sector size 256Kb is triggered in the 1000ms OS task. This request is being processed in the 1000ms task in a continuous loop until the operation is completed. 2. During the processing of read operation in 1000ms task, a higher priority 0.5ms task is cancelling this read operation. The cancellation of this read operation is successful in the higher priority task. But when the context is restored to the 1000ms task where the read operation had been initiated the core gets a bus fault. The customer put main in while loop until the current job is processed. They can always reproduce this scenario on RDB. Priority: MEDIUM RTD Re: [S32N55 B0] XSPI Flash operation leads to bus fault in CRS Hi @haoyue-yan, Based on the customer's situation as your message described. I suppose that this issue occurred because they invoked MemAcc_Mainfunction in both read and cancel task. They should invoke MemAcc_Mainfunction in only a task periodically (as the MemAcc MainFunction Period configured). Best regards, Dan Re: [S32N55 B0] XSPI Flash operation leads to bus fault in CRS Hi @haoyue-yan, Could you let me know their flow-code? For example: Best regards, Dan Re: [S32N55 B0] XSPI Flash operation leads to bus fault in CRS Hello Dan, Please find the attached .xdm files. Let me know if you can't download. Re: [S32N55 B0] XSPI Flash operation leads to bus fault in CRS Hello Dan,  Thanks for your response. They configured this parameter to 200ms. Sorry about that, I have attached them to this comment. The RTD version is 1.8.0_CD03. Re: [S32N55 B0] XSPI Flash operation leads to bus fault in CRS Hello @haoyue-yan, Look like this issue is related to your OS environment instead of RTD driver. 1. Did you enable "Mem MainFunction Period" for using in OS environment? 2. Your images are quite blur, I can't see in details. Could you send images again with bigger size? 3. what is the RTD package version you used? Best regards, Dan
查看全文