2297703_zh-CN

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

2297703_zh-CN

2297703_zh-CN

如何在 CanIf User RxIndication 回调中获取 CAN ID?

你好,我使用的是带有 SW32K1_S32M24x_RTD_R21-11_3.0.0 的 S32K144,并已将 CanIf 配置为使用自定义回调函数。


我的配置:
CanIfRxPduUserRxIndicationName 设置为"Service_CanIf_RxIndication"
当收到 CAN 消息时,CanIf_RxIndication() 将调用该回调。


问题
我注意到在 CanIf_RxIndication() 中,CAN ID 可通过 Mailbox->CanId 参数获得。但是,在我的 Service_CanIf_RxIndication() 回调中,我只能接收到 PduId,而无法检索到实际的 CAN ID。此外,我还注意到 CanIf.h 标题状态:" 短截线版本-此文件仅包含示例代码。"


我的问题
1.我能修改或替换 CanIf.c 吗?短截线代码?
自 CanIf.h 起 明确表示它是 " 短截线 版本 " 和 " 示例代码 ",修改 Canif.c 以将 CAN ID 传递给用户回调是否可以接受?

2。修改短截线代码会违反 AUTOSAR 架构吗?
如果我自定义 CanIF 短截线实现,这是否会破坏 AUTOSAR 合规性或导致任何兼容性问题?

3.是否有其他解决方案?
有没有推荐的方法可以在不修改CanIF源代码的情况下将CAN ID传递给上层回调?


环境
MCU: S32K144
RTD 版本:SW32K1_S32M24x_RTD_R21-11_3.0.0
集成开发环境S32 Design Studio 3.6




感谢您的帮助!

Re: How to get CAN ID in CanIf User RxIndication callback?

你好,@Soratari

Q1。是的,短截线模块是用来编辑/替换的。由于 Canif 模块是一个短截线,它只提供了 CAN 驱动程序所需的头文件,例如 CANIF_CBK.H。

Q2. 不,只要您遵守指南,不更改标准化函数名、变量等,就不会违反 ASR 架构。

Q3。通常,短截线模块用于测试目的。您应该使用第三方供应商(如 Elektrobit (EB)、Vector 等)提供的 CanIf、EthIf& LinIf。不过,出于调试目的,可以自行修改。

致以最诚挚的问候,
Julián

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-23-2026 05:21 AM
更新者: