欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > STM32上实现简化版的AUTOSAR DEM模块

STM32上实现简化版的AUTOSAR DEM模块

2025/3/14 10:07:45 来源:https://blog.csdn.net/Allen_Spring/article/details/146242675  浏览:    关键词:STM32上实现简化版的AUTOSAR DEM模块

请添加图片描述

文章目录

  • 摘要


摘要

在一些可以不使用AUTOSAR的项目中,往往也有故障检测和DTC存储的需求,开发一套类似于AUTOSAR DEM模块的软件代码,能够满足DTC的检出和存储,使用FalshDB代替Nvm模块,轻松构建持久化存储,如果你也有这样的需求,请阅读本篇,希望能够帮到你。


/********************************************************************************* @file    dem.c* @brief   DEM模块实现 - 基于FlashDB的故障管理* @note    支持功能:*           - DTC状态管理(当前/历史故障)*           - 故障计数器*           - 快照功能*           - FlashDB持久化存储*******************************************************************************/
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "fdb.h"
#include "stm32f4xx_hal.h"/* 配置区 - 根据实际硬件调整 -------------------------------------------------*/
#define DEM_DB_NAME              "dem_db"        // 数据库名称
#define DEM_MAX_DTC_ENTRIES      50              // 最大DTC条目数
#define DEM_CURRENT_THRESHOLD    3               // 当前故障确认阈值
#define DEM_HISTORY_MAX_COUNT    0xFF            // 历史故障最大计数/* 宏定义 --------------------------------------------------------------------*/
#define DTC_STATUS_CURRENT       (0x01U)         // 当前故障状态位
#define DTC_STATUS_HISTORY       (0x02U)         // 历史故障状态位
#define DEM_SNAPSHOT_MAGIC       (0xDEADC0DE)    // 快照数据魔数/* 类型定义 ------------------------------------------------------------------*/
#pragma pack(push, 1)  // 严格字节对齐
/*** @brief  DTC条目存储结构*/
typedef struct {uint32_t dtc_code;           // DTC编码 (SAE标准格式)uint8_t status;              // 状态位uint16_t current_counter;    // 当前故障计数器uint16_t history_counter;    // 历史故障计数器uint32_t first_occurrence;   // 首次发生时间戳uint32_t last_occurrence;    // 最后发生时间戳
} DTC_Entry;/*** @brief  快照数据结构*/
typedef struct {uint32_t magic;             // 魔数校验uint32_t timestamp;         // 快照时间戳uint16_t dtc_count;         // 有效DTC数量DTC_Entry entries[];        // DTC条目数组
} DEM_Snapshot;
#pragma pack(pop)/* 模块全局变量 --------------------------------------------------------------*/
static struct fdb_kvdb dem_kvdb;            // FlashDB实例
static DTC_Entry dtc_list[DEM_MAX_DTC_ENTRIES];

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词