2400549_zh-CN

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

2400549_zh-CN

2400549_zh-CN

S32K344 RTD 3.0.0:空 .slewRateCtrlSel为 LPSPI4 引脚生成 — 版本失败

你好,

我正在 S32K344(172 引脚 MQFP)定制板上开发一个电池管理应用程序,该板的 SPI 布线遵循 NXP RD33772C14EVM 参考设计。我正在使用 S32 Design Studio 3.5 和 RTD 3.0.0。(平台、端口和 Spi 模块均报告软件版本为 3.0.0)以及 FS26 SBC CDD 2.0.0 (Sbc_fs26)。我的出发点是 S32K344 的 Sbc_fs26_example_HLD 示例。

在我的系统中,LPSPI0 已预留给未来的双通道菊花链,而其他 SPI 实例已被使用,因此 FS26 SBC 必须在 LPSPI4 上运行。按照 RD33772C14EVM 原理图,我将四个 LPSPI4 信号连接到参考设计使用的相同焊盘:lpspi4_pcs0 连接到 PTB8,lpspi4_sout 连接到 PTB9,lpspi4_sck 连接到 PTB10,lpspi4_sin 连接到 PTB11。在外围设备方面,我将 SPI 物理单元映射设置为 LPSPI_4,将 SpiHwUnit 设置为 CSIB0,并在 Mcu 元器件中启用了 LPSPI_4 外围时钟门。

运行“更新代码”并构建后,编译器停止运行,生成的文件 generate/src/Siul2_Port_Ip_VS_0_PBcfg.c 出现错误。生成器生成的赋值语句没有右侧等式:

../generate/src/Siul2_Port_Ip_VS_0_PBcfg.c:118:34: 错误:应在逗号 (,) 前插入表达式
118 | .slewRateCtrlSel=,

同样的空 .slewRateCtrlSel等号出现在第 158、198 和 238 行——分别对应四个 LPSPI4 引脚。如果我手动将这四行填充为 PORT_SLEW_RATE_NOT_AVAILABLE,版本会继续进行下去,然后在 .inputMuxReg 处以相同的方式失败。= {(空初始化器,“ISO C 禁止空初始化器大括号”)。换句话说,这四个焊盘的引脚配置结构生成的字段为空,这不是有效的 C。

当我查看 PTB8–PTB11 的“引脚”工具“布线详情”时,“转换速率控制”列(以及“输入滤波器”列)显示为“n/a”,选择“转换速率”单元格时,工具提示显示:“所选引脚不支持此功能的配置。”选择转换速率控制。所以这些特殊的垫子根本没有转换速率控制硬件。我的理解是,在这种情况下,生成器应该发出 PORT_SLEW_RATE_NOT_AVAILABLE(该值确实存在于此设备的 Siul2_Port_Ip_PortSlewRateControl 枚举中),就像它对其他不支持的 pad 功能使用 *_NOT_AVAILABLE 值一样——但它却什么也没发出,这导致版本失败。

让我确信这是工具/驱动程序问题而不是引脚选择错误的原因在于,NXP 自己的 LVBMS_RD_Bring_up_Example 使用了完全相同的四个 LPSPI4 焊盘(PTB8/PTB9/PTB10/PTB11)来构建 FS26 SBC,并且版本构建顺利。我发现该示例与我的项目之间唯一的区别是 RTD 版本:LVBMS 示例基于 RTD 2.0.0(平台/端口/Spi 软件 2.0.0),而我的项目使用 RTD 3.0.0。电路板引脚排列相同,四个引脚相同,引脚的电气特性也相同(两者仅方向设置不同)。所以看起来,RTD 2.0.0 和 RTD 3.0.0 之间,Siul2_Port_Ip 代码生成对于不支持压摆率的 pad 确实出现了倒退。

我的问题:

这是RTD 3.0.0中的已知问题吗?是否有已修复/已打补丁的RTD版本?
在 RTD 3.0.0 版本下,配置 PTB8–PTB11(RD33772C14EVM 引脚排列)上的 LPSPI4 的正确且受支持的方法是什么?这样,引脚工具就能生成有效的代码——例如,slewRateCtrlSel = PORT_SLEW_RATE_NOT_AVAILABLE 和一个有效的 inputMuxReg,而不是空字段?
如果没有配置级别的修复,手动编辑生成的 Siul2_Port_Ip_VS_0_PBcfg.c 是唯一的解决方法吗(每次“更新代码”都会覆盖它),还是将项目迁移到 Port/RTD 2.0.0 是推荐的方案?

如果需要,我可以附上完整的构建日志、带有工具提示的引脚“布线详情”屏幕截图,以及两个项目模块版本的并排对比图。

谢谢你,
宋炫植

Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails

嗨 VaneB,

非常感谢——问题果然出在这里。Pins 工具已更新为 LPSPI4 (PTB8–PTB11),但Port元器件的 PortPin 条目仍然指向原始的 LPSPI0 焊盘,因此 PortPin Pcr (Mscr) 值已过时。

我已将端口配置中的四个 PortPin Pcr 值更新为与新的引脚分配相匹配:

  • PCS0 → PTB8 (Pcr 40)
  • SOUT → PTB9 (Pcr 41)
  • SCK → PTB10(Pcr 42)
  • SIN → PTB11 (Pcr 43)

运行更新代码并重新构建后,.slewRateCtrlSel 文件为空。/ .inputMuxRegSiul2_Port_Ip_VS_0_PBcfg.c 中的错误已消失,项目可以顺利构建

我非常感谢您快速而准确的答复——这为我节省了很多时间。标记为解决方案。

此致,
炫植

Re: S32K344 RTD 3.0.0: empty .slewRateCtrlSel generated for LPSPI4 pins — build fails

你好@hyunsiksong

这个问题与 RTD 本身无关,也与 S32DS 配置工具生成的代码无关。相反,它与配置有关。

在外设工具的端口驱动程序配置中,分配给 PortPin Mscr 参数的值仍然与原始项目配置相对应。例如,该项目之前配置为使用 PTB1 作为 LPSPI0_PCS0,对应于 PortPin Mscr = 33。

然而,在更新后的配置中,使用的是 LPSPI4,并且 PCS0 已重新分配给引脚 8。因此,相应的 PortPin Mscr 值应为 40 而不是 33。

检查所有引脚的 PortPin Mscr,确保它们与当前的引脚分配匹配。更新这些值以反映新的配置应该可以解决问题。


BR,VaneB

タグ(1)
評価なし
バージョン履歴
最終更新日:
2 週間前
更新者: