CanNm报文的触发发送详解

原创 汽车电子嵌入式 2024-10-14 06:48

前言

在《Can/Lin报文的触发发送(Trigger Transmit)》一文中我们介绍了报文(Can, Lin)的触发发送机制Trigger Transmit,在《AUTOSAR架构下CanNm User Data详解》一文中我们介绍了CanNm User Data的使用方法。而CanNm的报文就是可以以trigger transmit方式触发发送,且和CanNmUser data强相关,所以,本文就来详细介绍下CanNm报文的发送方式,并回答以下问题:

问题1CanNm通过以下哪个API外发CanNm报文?

CanNm_Transmit

CanNm_TriggerTransmit

CanIf_Transmit

以及CanNm_TransmitCanNm_TriggerTransmit用来干嘛的?

问题2CanNm User Data的触发方式获取有什么好处?

由于CanNm报文的发送和Com, PduR, CanIf, Can Driver模块都相关,所以,我们先介绍这些相关模块和CanNm报文发送相关的内容,然后结合实际AUTOSAR实现方案(Vector, Etas)看实际项目中CanNm报文是如何发送的。

目录


注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

1.Com模块的触发发送

背景知识1:通过《AUTOSAR架构下CanNm User Data详解》一文我们知道,CanNm报文的User Data可以通过SWC --> Com_SendSignal的方式来设置(也就是通过Com模块来更新CanNmUser Data),也可以通过Cdd直接调用CanNm_SetUserData的方式来设置(不用经过Com模块),本文假设通过Com模块来设置User Data,也就是需要Com模块的参与。

 


背景知识2User通过SWC --> Com_SendSignal只会设置User DataCom模块的缓存,CanNm模块通过调用PduR_CanNmTriggerTransmit -> Com_TriggerTransmit主动从Com模块拿取User Data数据。


2.PduR模块的触发发送

PduR模块应通过调用Com_TriggerTransmit,将通信接口模块发出的PduR_CanNmTriggerTransmit 请求转发到上模块。


也就是CanNm模块通过PduR模块将触发发送请求路由到Com模块。


问题:为什么不直接通过CanNm -> Com模块获取User Data了,而是要通过一个感觉多月的PduR模块了?


:因为Autosar是一套通用的架构,Com模块不仅仅单独为CanNm模块服务,比如Lin报文的发送也是触发发送模式,也需要通过Lin -> PduR -> Com来获取PDU数据。所以,设计一个中间路由模块PduR, 可以通过PduR将底层模块路由到任意上层模块。


Lower Module(Com, Cdd e.g.) -> PduR -> Upper Module (Can, Lin, Eth e.g.)



3.CanNm模块的触发发送

3.1. CanNm_TriggerTransmit()

Case 1:  (CanNmComUserDataSupport == TRUE) && (CanIfTxPduTriggerTransmit == FALSE)


  • Step 1: CanNm_Mainfunction -> PudR_CanNmTriggerTransmit -> Com_TrggerTransmit 获取User Data数据。

  • Step 2:  CanNm_Mainfunction -> CanIf_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr )发送CanNm报文。

注意PduInfoPtr-> SduDataPtr != NULL


Case 2:  (CanNmComUserDataSupport == TRUE) && (CanIfTxPduTriggerTransmit == TRUE)


Step 1:CanNm_Mainfunction -> CanIf_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr ) -> Can_Write(). 发送数据。

注意PduInfoPtr-> SduDataPtr ==NULL


Step2: Can_Write() -> CanIf_TriggerTransmit() -> CanNm_TriggerTransmit() -> PudR_CanNmTriggerTransmit -> Com_TrggerTransmit()获取User Data数据。



3.2. CanNm_Transmit

通常情况下,CanNm处于RepeatMessage State或者NormalOperation State的时候会外发NM报文,且其报文周期是固定的。如果有其他User调用了CanNm_Transmit,则会触发NM报文的发送。



3.3. CanNm Transmission Sequence

CanNm报文的发送都是通过CanNm_Mainfunction调用CanIf_Transmit,但是会根据CanIfTxPduTriggerTransmit配置参数来决定PduInfo -> SduDataPtr指针参数是否为空,从而决定User Data数据的获取方式。



4.CanIf模块的触发发送

如果CanIfTxPduTriggerTransmit配置参数为TRUE, 上层调用CanIf_TransmitPduInfo -> SduDataPtr指向参数应该为NULL指针。


Conditions:  (CanNmComUserDataSupport == TRUE) && (CanIfTxPduTriggerTransmit == TRUE)

  • Step 1:CanNm_Mainfunction -> CanIf_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr ) -> Can_Write(). 发送数据。


注意PduInfoPtr ==NULL


  • Step2: Can_Write() -> CanIf_TriggerTransmit() -> CanNm_TriggerTransmit() -> PudR_CanNmTriggerTransmit -> Com_TrggerTransmit()获取User Data数据。



CanIf模块提供了CanIfTriggerTransmitSupport CanIfTxPduTriggerTransmit

配置参数类配置报文的触发发送。



5.Can Driver模块的触发发送

如果CanTriggerTransmitEnable配置为TRUE且上层模块(CanIf_Transmt)传递的PduInfo -> SduDataPtrNULL, Can_Write会调用CanIf_TriggerTransmmit来获取要发送的PDU数据.




6.总

6.1. CanNm获取User Data方式1

Condition:

CanNmComUserDataSupport ==TRUE &&

CanNmUserDataEnabled ==TRUE &&

NmComUserDataSupport ==TRUE &&

NmUserDataEnable ==TRUE &&

CanIfTriggerTransmitSupport ==TRUE &&

CanIfTxPduTriggerTransmit ==TRUE &&

CanTriggerTransmitEnable ==TRUE



6.2. CanNm获取User Data方式2

Condition:

CanNmComUserDataSupport ==TRUE &&

CanNmUserDataEnabled ==TRUE &&

NmComUserDataSupport ==TRUE &&

NmUserDataEnable ==TRUE &&

CanIfTriggerTransmitSupport == FALSE &&

CanIfTxPduTriggerTransmit == FALSE &&

CanTriggerTransmitEnable ==FALSE



问题1CanNm通过以下哪个API外发CanNm报文?

CanNm_Transmit

CanNm_TriggerTransmit

CanIf_Transmit

以及CanNm_TransmitCanNm_TriggerTransmit用来干嘛的?


CanNm通过CanIf_Transmit来发送CanNm报文。User可以调用CanNm_Transmit触发Nm报文的发送;以6.2中的方式2发送CanNm报文时通过CanNm_TriggerTransmit来获取user data数据。


问题2CanNm User Data的触发方式获取有什么好处?


:可以在Can Driver也就是硬件发送CanNm报文的时候获取user data的数据,能最实时的将user data的数据发送到Can总线上。注意:只有6.2章节中的方式2才是真正意义上的触发发送方式。



End

「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」


点击文章最后左下角的阅读原文可以获取更多信息


或者复制如下链接到浏览器获取更多信息

https://blog.csdn.net/qq_36056498/article/details/132125693


文末福利




1
.如需汽车电子嵌入式收集的学习文档,
后台回复“

资料

即可免费下载;

2.为便于技术交流,创建了汽车电子嵌入式技术交流群,可尽情探讨AP,CP,DDS,SOME/IP等前沿热点话题,后台回复“加群”即可加入;



注:本文引用了一些第三方工具和文档,若有侵权,请联系作者删除!


推荐阅读

汽车电子嵌入式精彩文章汇总第一期:20210530-20230703

汽车电子嵌入式精彩文章汇总第2期

汽车电子嵌入式精彩文章汇总第3期

【OS】AUTOSAR OS Event实现原理

【OS】AUTOSAR OS Spinlock实现原理(下篇)

【OS】AUTOSAR OS Spinlock实现原理(上篇)

CanNm处于PBS状态下接收到一帧诊断报文DCM会响应吗

TC3xx芯片CAN模块详解

AUTOSAR OS Alarm实现原理

AUTOSAR OsTask切换原理

TC3xx 芯片SPI模块详解

AUTSOAR ComStack如何实现PDU只收不发的

AUTOSAR OsStack监控原理

AUTOSAR架构下ICU唤醒详解



End


欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号

评论
  • 近年来,越来越多的企业在5S管理的基础上,开始追求6S、7S甚至8S管理,仿佛S越多,管理就越先进,企业就越优秀。于是,6S增加了“安全”,7S又加上了“节约”,8S甚至引入了“学习”……看似更加全面,实则很多企业只是机械地增加S,却忽略了管理的核心目标:提升效率、降低浪费、优化工作环境。优思学院认为,5S本身已经是一套成熟的精益管理工具,它的核心理念不仅简单高效,而且易于实施和推广。如果企业只是为了赶时髦,盲目增加S,而没有真正理解5S的本质,那么这些额外的“S”很可能会变成管理上的负担,而不
    优思学院 2025-03-07 12:43 337浏览
  • 一、系统概述MYD-LD25X搭载的Debian系统包含以太网、WIFI/BT、USB、RS485、RS232、CAN、AUDIO、HDMI显示和摄像头等功能,同时也集成了XFCE轻量化桌面、VNC远程操控、SWITCH网络交换和TSN时间敏感网络功能,为工业设备赋予“超强算力+实时响应+极简运维”的体验!类别名称描述源码TF-AArm Trusted Firmware 2.8OP-TEEOP-TEE 3.19BootloaderU-boot 2022.10KernelLinux Ke
    米尔电子嵌入式 2025-03-07 14:08 390浏览
  • 在企业管理和职场环境中,权力是一个常被提及却又让人感到微妙的话题。有人觉得它充满吸引力,有人却对它避之不及。然而,不管你对权力的态度如何,理解它、掌握它,甚至善用它,都是职场成功的重要一环。今天,我们就来深入探讨权力的本质,特别是个人权力和社会权力的区别,以及如何在职场中逐步建立属于自己的影响力。权力的两种面貌:你掌控自己,还是掌控他人?说到权力,首先要区分它的两种类型。个人权力是你对自己生活的掌控感。比如,你能自由决定自己的职业方向,不用总是请示他人。这种权力让人感到踏实和满足,是我们在生活中
    优思学院 2025-03-07 15:56 334浏览
  • 文/郭楚妤编辑/cc孙聪颖‍今年全国两会期间,备受瞩目的《政府工作报告》明确提出,要因地制宜发展新质生产力,为产业发展指明方向。报告强调培育生物制造、量子科技、具身智能、6G 等前沿未来产业。生物制造以生物质或二氧化碳为原料,通过工业发酵实现规模化生产,2023 年市场规模达 4200 亿元,预计未来十年年增速近 17%。量子科技在密码学、通信、计算等方面取得突破,具身智能借助人形机器人等载体引发关注,6G 技术研发将推动更高速、稳定的通信与万物互联。制造业数字化转型也在加速。报告指出,要大力发
    华尔街科技眼 2025-03-10 19:08 9浏览
  • 文/Leon编辑/cc孙聪颖2025 年全国两会正如火如荼地进行,这一备受瞩目的年度盛会,再度成为社会各界聚焦的核心。会议期间,代表们积极建言献策,诸多建议迅速引发舆论热潮,频繁登上热搜榜单。其议题范畴极为广泛,紧密围绕产业革新、民生保障与就业促进、教育优化升级、AI 技术规范与发展等多个关键领域展开探讨。这些热点议题不仅精准呼应了当下经济社会发展的紧迫需求,更深度契合了民众对美好生活的向往与诉求,因此在网络空间中激起千层浪,吸引了海量网民的高度关注 。全国人大代表、美的集团首席财务官钟铮,今年
    华尔街科技眼 2025-03-08 20:11 146浏览
  • 文/郭楚妤编辑/cc孙聪颖在这个瞬息万变的时代,流量的到来毫无预兆,不知哪片云会带来降雨。哪怕行事极为低调,也可能在不经意间成为舆论焦点。原本团结、紧张、严肃的全国两会,就因一位来自商界的人大代表周云杰的意外走红,变得活泼起来。周云杰是海尔集团董事局主席、首席执行官,在两会期间以一种意想不到的方式进入大众视野,成为网络热议的焦点人物。故事得从 3 月 5 日讲起。当日,第十四届全国人民代表大会第三次会议首场 “代表通道” 集中采访活动在北京人民大会堂举行。小米公司创始人雷军以全国人大代表的身份亮
    华尔街科技眼 2025-03-08 20:30 146浏览
  •       上个月在立创商城搞了一块ESP32S3R8N8,然后从优信电子淘了一块1.69寸ISP的屏幕,来学习lvgl相关的知识这两个电子元器件还是很精致的。立创在学习资料还是非常丰富的。可以从入门到精通。对于ESP32S3R8N8,立创提供了几中语言和开发工具的入门(如下图),我选择了Arduino赛道。我选择VS code +Platformio 来进行我的1.69寸显示屏点亮。在platformio搭建Arduino环境,参照LED成功比点亮。简单的几行代码
    zhusx123 2025-03-10 22:09 7浏览
  • 3月9日,海信电视举行“巅峰画质 影游旗舰”新品发布会,正式发布E8Q旗舰系列电视新品,搭载全球首颗信芯AI画质芯片H7、全新升级的黑曜屏Ultra、330Hz系统级高刷、U+Mini LED光晕控制系统、影院级帝瓦雷声学系统五大行业首发科技,为极致影游爱好者打造电视画质的巅峰之作。海信电视E8Q系列提供65/75/85/100/116英寸五个版本,其中E8Q Pro零售指导价为75英寸/13599元、85英寸/17999元、100英寸/27999元;E8Q零售指导价为65英寸/7499元、75
    华尔街科技眼 2025-03-09 20:52 148浏览
  •        深夜的公园里,当路灯熄灭后,传统监控摄像头只能拍出模糊的黑白画面,仿佛老式胶片电影里的场景。而搭载为旌瑶光ISP的摄像头,却能像猫科动物一样,在几乎全黑的环境中捕捉到行人衣服的颜色、树叶的纹理,甚至快速跑动的宠物狗毛发细节。这种从“黑白默片”到“全彩4K电影”的跨越,背后是为旌瑶光ISP对传统红外补光技术的颠覆性创新。一、传统方案之困:被红外光“绑架”的夜视世界        传统安防摄像头依赖红外
    中科领创 2025-03-07 16:50 539浏览
  • J599系列光纤连接器的特点标准J599 III系列光纤连接器、J599 A8系列光纤连接器和J599 A6系列光纤连接器均具有相同的符合GJB599B标准规定的插座法兰尺寸。其中,J599 A8系列光纤连接器和J599 A6系列光纤连接器可提供APC的端面类型,其插入损耗和回损损耗性能更优。J599系列光纤连接器的未来发展方向随着国内光纤通信技术的日趋成熟,光纤处理工艺水平的不断提高,以及对光纤连接器需求的多样化,J599系列光纤连接器正在向低损耗、高密度、高可靠方向发展。中连讯科J599 I
    用户1741596356358 2025-03-11 14:24 9浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦