打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033

LiSun

打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、简介

基于Autosar的网络管理有三种模式:睡眠模式,网络模式和预睡眠模式。
在这里插入图片描述

(1) 睡眠模式

  1. 当节点没有主动网络唤醒及被动唤醒请求时,ECU通信控制器切换至睡眠模式,ECU功耗降低至适当水平。
  2. OEM一般通过测量静态电流的方法来检测各个ECU是否满足设计要求。
  3. 在睡眠模式下,节点的网络管理报文和应用报文禁止发送,同时节点在该模式下,如果检测到有效的唤醒源,节点必须唤醒。

(2) 预睡眠模式

  1. 该模式是为进入与睡眠模式之前的状态,各个ECU要实现总线活动静止下来。
  2. 进入该模式后,已经下发送队列的报文允许发送到网络上,不再往发送队列中放置报文,禁止发送网络管理报文和应用报文,但应该对总线上的报文进行ACK应答(CAN收发器自动完成)。
  3. 在预睡眠模式下会设定一个可配置的定时器,参数为CANNM_WAIT_BUS_SLEEP_TIME, 一旦超时,网络管理状态应该离开预睡眠模式,进入睡眠模式。

(3) 网络模式

分为三种状态,重复报文状态、常规操作状态、准备睡眠状态。

① 重复报文状态

该状态分为快速发送状态和正常发送状态。都是发送固定个数网络管理报文,发的次数和时间间隔都是可配置的。

② 常规操作状态

当节点为主动唤醒网络需要与其他节点继续进行通信时,必须保持在常规操作状态,该状态下网络管理报文和应用报文正常发送。

③ 准备睡眠状态

进入该模式节点停止发送网络管理报文,当NM Timeout Timer超时后停止发送应用报文。

在这里插入图片描述

二、实现方法

采用线程和软件定时器的方式,实现本功能。

(1)can_nm 网络管理硬件层

在这里插入图片描述

网络管理参数

一般由车厂提供参数。例如:AUTOSAR网络管理技术要求

#define CAN_NM_TIMER_MS             (5)   // 软定时器基准时间ms

// 预睡眠阶段(PBM)持续时间
#define NM_KEEP_PREPARE_T           (2000 / CAN_NM_TIMER_MS)
// T_NM_TIMEOUT 准备睡眠阶段(RSS)持续时间
#define NM_KEEP_READY_SLEEP_T       (2000 / CAN_NM_TIMER_MS)
// 正常报文阶段(NOS)持续时间
#define NM_KEEP_NORMAL_TI           (60   / CAN_NM_TIMER_MS)
// 重复报文阶段(RMS)持续时间
#define NM_KEEP_REPEAT_T            (2100 / CAN_NM_TIMER_MS)
// T_NM_MessageCycle 网络报文发送周期
#define NM_MSG_CYCLE_T              (1000 / CAN_NM_TIMER_MS)
// T_NM_ImmediateCycle Time 时间偏移量CanNmMsgCycleOffset
#define NM_MSG_REPEAT_IMMEDIATE_T   (20   / CAN_NM_TIMER_MS)
// N_ImmediateNM_TIME S  重复报文次数
#define NM_MSG_REPEAT_IMMEDIATE_CNT (5)

#define NM_APP_MSG_DELAY_T          (8    / CAN_NM_TIMER_MS)
#define NM_DIAG_MSG_DELAY_T         (16   / CAN_NM_TIMER_MS)


#define USE_NM_MSG_TRANSMIT_CONTROL /*使能网络管理报文传输控制*/
#define USE_DLL_WAKEUP_WHEN_SLEEP   /*休眠时使用链路层唤醒(任意网络报文唤醒)*/
// #define USE_NM_STANDERD_BUSOFF_RECOVERY  /*使能网络管理标准BUSOFF恢复策略*/
// #define USE_NM_MSG_REPEAT_MODE  /*使能网络管理报文传输控制*/

#define NM_BASE_ADDRESS       ID_NM                                  /*网络管理报文基地址 */
#define NM_ADDRESS_MASK       0x0FF                                  /*节点地址掩码*/
#define NM_STATION_ADDRESS    0x26                                   /*本节点地址 */
#define NM_CAN_ID             (NM_BASE_ADDRESS + NM_STATION_ADDRESS) /*本节点网络CAN报文 ID*/
#define NM_MSG_DATA_LEN       8                                      /*网络管理CAN报文数据长度*/
  1. 睡眠模式:节点上电或复位后应默认进入睡眠模式
  2. 报文重复阶段:当节点从其他模式进入Network Mode时,默认进入[报文重复阶段],该阶段是网络正式开始工作前的准备阶段,用来等待网络中所有相关节点进行网络准备,开启通信
  3. 准备睡眠阶段:节点工作完成后,由[正常运行状态]状态进入[准备睡眠阶段],准备进入睡眠状态。该阶段用来等待网络中所有节点工作完成,之后统一进入睡眠状态。
  4. 正常运行状态:节点由[报文重复阶段]进入正常运行状态,该状态为节点通信正常工作状态。
  5. 预睡眠模式:节点从[准备睡眠阶段]进入[预睡眠模式]

(2)app_nm 网络网络业务层

主要处理唤醒源,比如:CAN网络唤醒,BLE控车,SE唤醒,无感唤醒,keyfob唤醒。
在这里插入图片描述

posted on 2023-05-16 16:11  xuejianqiang  阅读(526)  评论(0编辑  收藏  举报  来源
打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033