autosar网管应用开发-- 配置笔记2

1.配置网络管理报文id范围

配置dbc(导入)

网管报文genmsgilsupport设置yes:相当于当成应用报文使用,可以手动设置byte2->byte7的数据

配置can邮箱的筛选器(直接配置)

can邮箱接收到can报文进行中断,送到canif中,进行下一步分类

其他报文要设置CanIfRxPduCanId:通过此参数设置接收到的CAN L-PDUCAN标识符。如果只给Rx-PDU分配了一个CAN标识符,则使用此参数。如果额外配置了CanIfRxPduCanIdMask参数,则定义了CAN标识符的范围。 网管报文是范围所以不设置

 

2.配置网络管理报文参数

根据需求表

T_START_NM_TX:进入重复消息状态,到发送第一帧网络管理报文时间限制

T_STARTx_AppFrame:网管报文发出到发出应用报文时间限制

T_NM_immediateCycleTime:快发网管报文周期

T_NM_MessageCycle:网管报文发送周期

T_WAKEYP:休眠状态接收到报文到发出报文时间间隔

·

MsgTimeoutTime:

指定NM pdu的传输超时时间。如果在此超时时间内CAN接口没有发送确认,则canm模块将给出错误通知。

限制:(CanNmPassiveModeEnabled == False)时,此参数才有意义。它应该是CanNmMainFunctionPeriod的倍数,且小于CanNmMsgCycleTime。如果CanNmBusLoadReductionActiveTrue,它也应该小于CanNmMsgReducedTime

MsgReducedTime:

该值指定在减少总线负载的周期性传输模式下节点特定的总线周期时间。

限制:此参数仅在(CanNmBusLoadReductionEnabled == True)(CanNmBusLoadReductionActive == True)(CanNmPassiveModeEnabled == False)时相关。

该值在网络中必须唯一,且有如下限制:(0,5 * CanNmMsgCycleTime) <= CanNmMsgReducedTime < CanNmMsgCycleTime

 

NodeId:

指定本地节点的节点标识符。

如果canmpdunidposition = CANNM_PDU_OFF),则在网络管理消息中传输'NodeId'

节点标识符用于检测当前节点,并且可以由应用程序在任何时候读取。

备注:该值在NM消息中传递。

PduCbvPosition:

该值指定控制位向量NM PDU中的位置。

该参数的值表示控制位向量在NM PDU中的位置(CANNM_PDU_BYTE_0表示字节0,CANNM_PDU_BYTE_1表示字节1,CANNM_PDU_OFF表示控制位向量不属于NM PDU)

限制:如果(CanNmPduCbvPosition != CANNM_PDU_OFF),那么(CanNmPduCbvPosition != CanNmPduNidPosition)(cannmpdullength >= CanNmPduCbvPosition)

如果(CanNmPduNidPosition == CANNM_PDU_OFF)(CanNmPduCbvPosition != CANNM_PDU_BYTE_1)

PduNidPosition:

该值指定源节点标识符在NM PDU中的位置。vcu地址)

该参数的值表示源节点标识符在NM PDU中的位置(CANNM_PDU_BYTE_0表示字节0,CANNM_PDU_BYTE_1表示字节1,CANNM_PDU_OFF表示源节点标识符不属于NM PDU)

注意:如果'CanNmNodeIdEnabled'ON,则允许为每个通道设置'CanNmPduNidPosition'CANNM_PDU_OFF

限制:如果(CanNmPduNidPosition != CANNM_PDU_OFF),那么(CanNmPduNidPosition != CanNmPduCbvPosition)(cannmpdullength >= CanNmPduNidPosition)

如果(CanNmPduCbvPosition == CANNM_PDU_OFF),则(CanNmPduNidPosition != CANNM_PDU_BYTE_1)

 

CanNmActiveWakeupBitEnabled=>CRV 的bit4  区别是主动唤醒还是被动

CanNmNodeDetectionEnabled=>CRV 的Bit 0: Repeat Message Request   置1时候要跳转重复消息状态 检测总线当前存在的网络节点

3.配置网络管理报文数据初始化

网管状态回调函数,相当于状态机,网管状态改变,就会调用这个函数

void NmStateChangeIndCallback(UINT8 nmNetworkHandle,UINT8 nm_Previous_State,UINT8 nm_Current_State)

4.网络管理需求配置

1.首帧为网管报文    2. data0:0x1为报文唤醒 0x2为硬线唤醒  3.节点地址配置

1配置第一帧发送网管报文

任务调度时,先打开can通道再发送网管报文,所以task里面cansm要在cannm上面。

 

 

任务从睡眠或者预睡眠 ->重复消息状态,且当前是重复消息状态,更新信号源

 

 

 

2. data0:0x1为报文唤醒 0x2为硬线唤醒

void NmStateChangeIndCallback(UINT8 nmNetworkHandle,UINT8 nm_Previous_State,UINT8 nm_Current_State)

{

U8 u8_canUserData[6]={0};

    if(nmNetworkHandle == ComMConf_ComMChannel_CN_PT_CarFLZCU_VCU_BDMessagelis_78603eb3)

    {

        switch(nm_Previous_State)

        {

            case NM_STATE_BUS_SLEEP:

                if(nm_Current_State == NM_STATE_REPEAT_MESSAGE)

                {

                    //主动唤醒

u8_canUserData[0]=0x01

                }

            break;

            case NM_STATE_READY_SLEEP:

                if(nm_Current_State == NM_STATE_REPEAT_MESSAGE)

                {

                    //被动唤醒

u8_canUserData[0]=0x02

                }

            break;

      default:

            break;

}

CanNm_SetUserData(ComMConf_ComMChannel_CN_PT_CarFLZCU_VCU_BDMessagelis_78603eb3, u8_canUserData);

 

 

3.节点地址配置(ecu地址byte1)

 

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YELL.DOLL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值