2397059_zh-CN

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

2397059_zh-CN

2397059_zh-CN

S32K148 FlexCAN 仅输出 SOF 脉冲,然后进入总线关闭状态

我用S32DS开发了这个程序。当尝试发送 CAN 帧时,TX 引脚上只会输出一个短的低电平脉冲,后续的 ID 和数据位会被截断,因此无法发送完整的帧。USB-CAN 分析仪未收到任何数据,FlexCAN 控制器直接进入总线关闭状态。

我已经检查了时钟配置和寄存器值,并测试了不同的 CAN 通道,但问题仍然没有解决。我想找出哪个配置参数设置错误。感谢您的帮助。

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

嗨,朱利安,

感谢你的回复。我想更正并补充我之前匆忙写成的消息中的一些重要细节。

主板:这是第三方主板(不是 NXP EVB),型号为 S32K148_REV2_Q144。值得注意的是:我发现卖家提供的原理图存在错误(标注的收发器位置与实际 PCB 丝印不符),因此该电路板的参考设计文档可能并不完全可靠。

官方 CAN 示例:我尝试构建 Can_example_S32K148,但遇到了与 CAN 本身无关的环境问题(缺少工具链/包含路径,最终 Port_Ci_Port_Ip.h 和 Port_Ci_Port_Ip_Cfg.h 之间出现版本不匹配错误——“不同的供应商 ID”/“AutoSar 版本号不同”)。这看起来像是 RTD 包版本与我的项目不匹配,而不是 IDE 版本问题。我会尝试解决这个问题,但我认为这与硬件问题的核心无关。

新证据(来自您已审阅过的我自己的项目):自从我上次留言以来,我使用逻辑分析仪进行了更深入的验证:

  1. MB8 内容 100% 正确— 直接从 CDD_CanTransmit() 之后的寄存器读取:CS=0x0C080000 (CODE=0xC 待定,DLC=8),ID=0x00400304 (>>18 = 0x10,与配置匹配),DATA=0x01020304/0x05060708 (与我的 8 字节有效载荷完全匹配)。

  2. 引脚上的 TX 信号也正确——同时探测 PTE5 和收发器的 TXD 输入(200MHz 逻辑分析仪),两个波形相同,证实 PCB 走线良好。

  3. 但传输在大约 8-9 位转换后中止(大致为 SOF + 几个仲裁位),控制器随后进入总线关闭状态(ESR1 确认 FLTCONF=11,TXERRCNT 每次尝试递增)。

  4. 即使正确连接了 USB-CAN 分析仪并启用了 120Ω 终端(总线未浮空), CANH/CANL 也显示为零活动。作为对照测试,我在另一块已知可正常工作的 STM32 板上运行了相同的设置(浮空与终端),终端后 CANH 显示出了正确的转换。在我的 S32K148 板上,在相同的端接条件下,CANH/CANL 保持完全平坦。

  5. 在 CAN1 上也出现了同样的结果(不同的引脚/收发器)。

由于 MCU 端的 TXD 信号在收发器输入端之前均已确认正常,但即使正确端接,CANH/CANL 信号也始终没有响应,因此我怀疑是收发器输出级(或两个通道共用的某个部分,例如……)出现了问题。电源瞬态行为——我只能用逻辑分析仪检查,无法用示波器检查。

问题:

  1. “TXD 在收发器输入端正确,但 CANH/CANL 在正确端接下完全平坦”是否更强烈地表明收发器硬件故障,还是存在其他常见的板级问题(使能/待机电路、电源去耦)也可能导致这种症状?

  2. 当总线上没有实际活动时,FlexCAN 是否应该在发送完前几个仲裁位后中止(而不是完成整个帧并在 ACK 时失败)?我想确认一下我对位监控机制的理解是否正确。

  3. 对于示例项目中的 RTD 版本不匹配问题——是否有办法检查哪个 RTD 版本与给定的 S32 配置工具版本匹配,以便我可以获取匹配的示例包?

再次感谢您的帮助。

此致敬礼,艾普丽尔

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff
嗨,朱利安,
我非常惊讶,也很感谢您回复我的问题。
 
我使用的是自己设计的硬件板;只有电源电路与官方 EVB 原理图不同,而其余电路与参考设计一致。
我测试了官方的 CAN 示例项目。我只配置了 CAN0 引脚,而没有启用和配置 MCAL 层中的 PORT 模块,但项目一直编译失败。
 
具体的编译错误是: “f ../board/Port_Ci_Port_Ip_Cfg.h:47:10: 致命错误: Port_Ci_Port_Ip_Types.h: 没有该文件或目录”。
 
我的自定义项目文件中已有此头文件,但是导入此官方示例项目后,代码生成过程中并未自动生成此头文件。
缺少头文件错误是否可能是由于 IDE 软件版本不匹配造成的?目前我正在使用S32DS 为 S32 平台进行开发,现在我正在下载S32DS for ARM 2.2.2来切换开发环境。
期待您的指导。
 
顺祝商祺!
 
四月
Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好@April

从你的项目来看,配置和流程似乎都是正确的。请问您使用的是恩智浦半导体的S32K148EVB芯片,还是您自己设计的芯片?

您是否尝试过测试 RTD 中包含的 Can_example_S32K148 项目?您可以简单地添加 CAN0 引脚并禁用环回模式以启用 Tx/Rx 并测试该程序。

最后,您是否确认两个节点(S32K148 和 CAN 分析仪)都设置为相同的位时序和协议配置(CAN 与 CAN FD)?您可以使用以下工具来计算值: MPC5xxx/S32Kxx/LPCxxxx:CAN / CAN FD 位定时计算

如果您使用的是自定义设计,您可以参考S32K148 EVB 的原理图S32K1xx 硬件设计指南,了解 CAN 接口设计和建议。

此致,
朱利安

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好@April

1. 是的,这表明是收发器故障,而不是模块配置问题。能否确认一下您的定制设计中使用的是哪种收发器?

我建议检查 STB、EN、S、RS、WAKE、INH 或类似引脚与实际安装的收发器是否匹配

S32K148 EVB 使用UJA1132HW ,但是,如果您使用的是TJA1043之类的芯片,则必须将其配置为正常模式 STB_N = 高EN = 高)。

2. 是的,如果收发器实际上没有驱动总线,那么在几个仲裁位之后提前中止是合理的。

3. 通常情况下,“不同的供应商 ID”/“AutoSAR 版本号不同”错误会在导入项目并尝试使用不同的 RTD / S32 配置工具版本更新配置时出现;但是,如果您只是从“文件 -> 新建 -> 从示例创建 S32DS 项目”导入示例,则应该不会有任何兼容性问题:

Julin_AragnM_0-1784738938507.pngJulin_AragnM_0-1784738938507.png

从您分享的项目来看,您使用的是 S32K1 RTD 3.0.0。然而,当我导入 QLP04 项目时,从属性中可以看到配置的是 GCC 11.4:

Julin_AragnM_1-1784739211073.pngJulin_AragnM_1-1784739211073.png

根据 RTD 版本说明,3.0.0QLP04 仅支持 NXP GCC 10.2:

Julin_AragnM_3-1784739259075.pngJulin_AragnM_3-1784739259075.png

我不确定你是如何导入和编译这个项目的,但请确保你至少安装了 S32DS 3.6.4 版本。仅安装了一个RTD软件包。S32DS不支持同时安装多个RTD版本。

此致,
朱利安

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好@April

感谢您提供的补充信息。

1. 关于 TJA1051,确实该收发器只有 S 引脚用于配置正常模式,但是,请检查您是否使用的是TJA1051T/E衍生型号,因为该型号有一个额外的 EN 引脚,您必须将其拉高

Julin_AragnM_0-1784829788604.pngJulin_AragnM_0-1784829788604.png

2. “找不到文件”错误很可能是由于端口配置错误,从而导致工具生成了错误的代码。您在端口容器中遇到的错误是由于“引脚”功能组名称应该以“端口容器名称”+“外围设备功能组名称”的形式命名造成的,在您的情况下应该是“ PortContainer_0_VS_0 ”。

Julin_AragnM_2-1784829995267.pngJulin_AragnM_2-1784829995267.png

Julin_AragnM_1-1784829932110.pngJulin_AragnM_1-1784829932110.png

在申请RMA之前,能否请您测试一下我附上的项目?这是 MCAL 中的一个简单的测试代码,它使 Rx 以中断模式运行,Tx 以轮询模式运行。成功回波 10 帧后,绿色 LED 指示灯会切换状态。

我使用 PCAN-USB 分析仪,通过 J11 CAN 接头对该程序进行了测试,设置如下:

Julin_AragnM_3-1784830112924.pngJulin_AragnM_3-1784830112924.png

我可以看到帧已成功回放,并且绿色 LED 指示灯每 10 帧切换一次:

Julin_AragnM_4-1784830143208.pngJulin_AragnM_4-1784830143208.png

由于我使用的是 S32K148-EVB,因此不需要启用收发器,但是,在您的设置中,请检查TJA1051 是否已正确启用(以及是否还需要启用 EN 引脚)。

此致,
朱利安

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

嗨,朱利安,

再次感谢您的耐心等待——自从我上次发消息以来,又有一些更新。

收发器检查:我仔细查看后确认它是TJA1051 ,而不是 UJA1132 系列 SBC。这个只有一个使能引脚(S 引脚),在我的板上硬连接到地(= 正常模式),所以你提到的多引脚 STB_N/EN 逻辑在这里并不适用——控制电路的这一部分看起来已经是正确的了。

与第二个独立项目进行交叉验证:我为该板(从经销商处购买)构建并运行了一个完全不同的 CAN 演示,使用了较旧的 Processor Expert/S32 SDK 堆栈 — can_pal — 而不是 RTD/AUTOSAR。按下按钮后,CAN_Send() 函数被正确调用,但我注意到返回值始终为 STATUS_BUSY (0x002),这意味着之前的传输实际上从未完成。就像我的 RTD 项目一样,USB-CAN 分析仪在所有三个通道上都没有接收到任何信号。现在我有两个完全独立的驱动程序堆栈,它们都给出了相同的结果,这让我相当确信这不是我这边的软件/配置问题。

关于官方示例项目:我按照您的建议将 GCC 版本切换回 10.2,但在构建过程中仍然遇到同样的“文件未找到”错误。我进一步研究了一下,现在怀疑这可能与端口模块(MCAL 层)未完全配置有关——似乎存在一个与端口模块和引脚工具的功能组链接方式相关的验证错误,但我无论尝试什么都无法正确配置它。

April_4-1784786142962.pngApril_4-1784786142962.png


它们就是一个例子:

April_0-1784785801363.pngApril_0-1784785801363.png
April_1-1784785825602.pngApril_1-1784785825602.png
这是我之前自己搭建的项目的一部分:

April_2-1784786013234.pngApril_2-1784786013234.pngApril_3-1784786034737.pngApril_3-1784786034737.png

鉴于目前的情况——控制引脚接线看起来正确,引脚上的 TXD 也已确认正确,并且两个独立的软件堆栈在所有三个通道上都显示出一致的“无总线活动”/传输卡顿行为——您认为这是否足以将其视为硬件故障并进行 RMA,或者还有其他值得先检查的地方吗?

再次感谢你在这件事上提供的帮助。

此致敬礼,艾普丽尔

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好@April

我很高兴现在一切都按预期运行了!

请问之前的错误原因是什么?是简单的硬件连接问题吗?

祝你今天也过得愉快!

此致,
朱利安

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好,朱利安,

我迫不及待地想告诉你,现在一切都完美运行了!我非常激动地与大家分享这个好消息。我已经订购了全新的MCU板和CAN收发器进行重新测试,这次通信运行完美无瑕。原来我之前遇到的持续 BusOff 错误完全是硬件故障。

我还加载了您附加的测试项目,它也运行良好。你的示例代码可以像你描述的那样流畅地发送和接收 CAN 帧。

我非常感谢您这些天来给予我的所有耐心指导。我完全被这个问题难住了,独自一人根本无法解决这个问题,是你的详细回复帮我摆脱了困境。

祝您身体健康,工作顺利,天天幸福!

此致,
四月

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

你好@Julián_AragónM

哈哈,不是线路问题。原有的 TJA1051 收发器模块存在缺陷,导致了 BusOff 问题。

再次非常感谢您的帮助!^_^


此致,
四月

Tags (1)
No ratings
Version history
Last update:
‎07-25-2026 03:31 AM
Updated by: