api文件之api_para_set.c

/******************************************************************************
版权所有:  深圳市**科技有限公司 
文件名:    api_para_set.c
作者:      wangdy
创建日期:  2020/08/12
描述:      参数配置 及读取 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/************************************头文件************************************/

#include "api_para_set.h"
#include "tools_calc_heattime.h"
#include <string.h>
#include "yc_encflash_bulk.h"
#include "yc_qspi.h"
#include "flash_addr_def.h"
#include "api_sensorcheck.h"
#include "api_paper_calibration.h"

/*************************************变量*************************************/

_STORE_PARA_INFO                Store_Para;                    //普通存储测试参数 
_STORE_TEST_INFO                Store_Test;                    //测试数据 
BtParaStoreTypeDef              Bt_Para;                    //蓝牙参数  
CalibrationParaStoreTypeDef      Store_CalibrationPara;        //校准参数 

//默认初始值 
const BtParaStoreTypeDef BtParaStoreDefault = 
{
    .storeFlag = 0x00,                //存储标记 
    .Bt_NvRam = {0x00},                //NVRAM配对信息 
};

//定标参数 默认初始化
const CalibrationParaStoreTypeDef    CalibrationParaStoreDefault = 
{
    .storeFlag = 0x00,                                //存储标记信息   
    .SelectIndex = SELECTED_INDEX_DEFAULT,            //间隙纸的所选择的光耦的强度(一般为1~4或者1~16)
    .GapRef = GAP_THRESHOLD_DEFAULT,                //间隙纸的反馈值 
    .HavePaperRef = NOPAPER_THRESHOLD_DEFAULT,        //有纸及无纸的阈值 
};


/*************************************函数*************************************/

/*******************************************************************************
* 名称:        Para_Store_Init       
* 描述:        参数存储 初始化  
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
void Para_Store_Init(void)
{
    //=========================读取设备信息 
    qspi_flash_read(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para));
    
    //判断蓝牙参数数据是否有效  
    if(AVALIABLE_STORE_FLAG != Store_Para.BT_Name_Para.StoreFlag)
    {
        //蓝牙名称设置为默认的 
        memset(Store_Para.BT_Name_Para.Bt_Name,0x00,31);
        memcpy(Store_Para.BT_Name_Para.Bt_Name,DEFAULT_BT_NAME,strlen(DEFAULT_BT_NAME));
    }
    //判断蓝牙密码参数是否有效 
    if(AVALIABLE_STORE_FLAG != Store_Para.BT_Passwd_Para.StoreFlag)
    {
        //蓝牙PIN设置为默认的  
        memset(Store_Para.BT_Passwd_Para.Bt_PIN,0x00,16);
        memcpy(Store_Para.BT_Passwd_Para.Bt_PIN,DEFAULT_BT_PASSWD,strlen(DEFAULT_BT_PASSWD));
    }
    //判断加热时间  
    if(AVALIABLE_STORE_FLAG != Store_Para.Print_Heattime_Para.StoreFlag)
    {
        Store_Para.Print_Heattime_Para.BasicHeatTime = DEFAULT_HEAT_TIME;    //默认的基本加热时间  
    }
    if(    (Store_Para.Print_Heattime_Para.BasicHeatTime < MIN_HEAT_TIME) && 
        (Store_Para.Print_Heattime_Para.BasicHeatTime > MAX_HEAT_TIME)  )    //超出阈值  则用默认值 
    {
        Store_Para.Print_Heattime_Para.BasicHeatTime = DEFAULT_HEAT_TIME;    //默认的基本加热时间  
    }
    //判断当前的纸张类型 
    if(AVALIABLE_STORE_FLAG != Store_Para.Print_Paper_Type_Para.StoreFlag)
    {
        Store_Para.Print_Paper_Type_Para.PrintPaperType = PAPER_GAP;        //默认走间隙纸 
    }
    
    //=========================蓝牙信息 
    qspi_flash_read(BT_STORE_START_BASE,(uint8_t *)&Bt_Para,sizeof(BtParaStoreTypeDef));
    
    //参数合法性判断  不合法 直接用默认值 
    if(AVALIABLE_STORE_FLAG != Bt_Para.storeFlag)
    {    
        Bt_Para = BtParaStoreDefault;        
        MyPrintf("bt use default value\r\n");
    }
    
    //=========================定标校准信息 
    qspi_flash_read(CALIBRATION_STORE_START_BASE,(uint8_t *)&Store_CalibrationPara,sizeof(CalibrationParaStoreTypeDef));
    
    //参数合法性判断  不合法 直接用默认值 
    if(AVALIABLE_STORE_FLAG != Store_CalibrationPara.storeFlag){    
        Store_CalibrationPara = CalibrationParaStoreDefault;    
        MyPrintf("calibdata use default value\r\n");
    }
}


/*******************************************************************************
* 名称:        Para_Store_BtPara_Write       
* 描述:        蓝牙参数存储  写数据 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Para_Store_BtName_Para_Write(void)
{
    //标志位置为有效 
    Store_Para.BT_Name_Para.StoreFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }
    return true;
}


/*******************************************************************************
* 名称:        Para_Store_BtPara_Write       
* 描述:        蓝牙密码存储  写数据 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Para_Store_BtPass_Para_Write(void)
{
    //标志位置为有效 
    Store_Para.BT_Passwd_Para.StoreFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }

    return true;
}


/*******************************************************************************
* 名称:        Para_Store_PrintPaper_Type_Write      
* 描述:        间隙纸色带种类型号 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Para_Store_PrintPaper_Type_Write(void)
{
    //标志位置为有效 
    Store_Para.Print_Paper_Type_Para.StoreFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }
    return true;
}


/*******************************************************************************
* 名称:        Para_Store_HeatTime_Para_Write       
* 描述:        写加热时间参数 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Para_Store_HeatTime_Para_Write(void)
{
    //标志位置为有效 
    Store_Para.Print_Heattime_Para.StoreFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }
    
    return true;
}

/*******************************************************************************
* 名称:        Test_Store_CutterTime_Write       
* 描述:        测试数据  次数更新并写入 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Test_Store_CutterTime_Write(void)
{
    //标志位置为有效 
    Store_Test.Cutter_Test_Data.StoreFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }
    
    return true;
}


/*******************************************************************************
* 名称:        Test_Store_Init       
* 描述:        测试数据  初始化 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
void Test_Store_Init(void)            
{    
    //读取设备信息 
    qspi_flash_read(TEST_STORE_START_BASE,(uint8_t *)(&Store_Test),sizeof(_STORE_TEST_INFO));
    
    
    //判断测试数据是否有效 
    if(AVALIABLE_STORE_FLAG !=  Store_Test.Cutter_Test_Data.StoreFlag)
    {
        //改为默认值  
        Store_Test.Cutter_Test_Data.StoreFlag = 0;
        Store_Test.Cutter_Test_Data.Cutter_Test_Sum = 0;
    }
}


/*******************************************************************************
* 名称:        BtParaReadFromFlash       
* 描述:        
* 输入参数:    无  
* 输出参数:    无   
* 其它:           
*******************************************************************************/
bool BtParaReadFromFlash(void)        
{
    uint8_t chip_id[6] = {0};
    BtParaStoreTypeDef bt_para;    
    
    //flash 
    qspi_flash_read(BT_STORE_START_BASE,(uint8_t *)&bt_para,sizeof(BtParaStoreTypeDef));
    
    //参数合法性判断  不合法 直接用默认值 
    if(AVALIABLE_STORE_FLAG != bt_para.storeFlag)
    {    
        Bt_Para = BtParaStoreDefault;        
        MyPrintf("bt use default value\r\n");
    }
    else 
    {
        Bt_Para = bt_para;
        MyPrintf("bt use right value\r\n");
    }
    
    //MyPrintf("flash flag = %d\r\n",UserParaAll.BtPara.storeFlag);
    
    return true;
}

/*******************************************************************************
* 名称:        UserParaWritetoFlash       
* 描述:        写入flash内存 
* 输入参数:    无  
* 输出参数:    无   
* 其它:           
*******************************************************************************/
bool BtParaWritetoFlash(void)
{
    Bt_Para.storeFlag = AVALIABLE_STORE_FLAG;
    
    qspi_flash_sectorerase(BT_STORE_START_BASE);
    if(! qspi_flash_write(BT_STORE_START_BASE,(uint8_t *)(&Bt_Para),sizeof(BtParaStoreTypeDef)))
    {
        return false;
    }
    
    return true;
}

/*******************************************************************************
* 名称:        Para_Store_Factory_Setting       
* 描述:        恢复出厂设置 
* 输入参数:    无  
* 输出参数:    无   
* 其它:        无   
*******************************************************************************/
bool Para_Store_Factory_Setting(void)
{
    //标记清空 
    memset((char *)(&Store_Para),0x00,sizeof(_STORE_PARA_INFO));
    
    qspi_flash_sectorerase(PARA_STORE_START_BASE);
    if(! qspi_flash_write(PARA_STORE_START_BASE,(uint8_t *)(&Store_Para),sizeof(Store_Para)))
    {
        return false;
    }
    return true;
}

//读取标定参数信息 
bool CalibrateParaReadFromFlash(CalibrationParaStoreTypeDef *calipara){
    CalibrationParaStoreTypeDef  CaliPara;
    
    //flash 
    qspi_flash_read(CALIBRATION_STORE_START_BASE,(uint8_t *)&CaliPara,sizeof(CalibrationParaStoreTypeDef));    //读出flash参数
    
    //参数合法性判断  不合法 直接用默认值 
    if(AVALIABLE_STORE_FLAG != CaliPara.storeFlag)
    {
        *calipara = CalibrationParaStoreDefault;
    }
    else 
    {
        *calipara = CaliPara;
    }
    
    return true;
}

//写定标参数信息 
bool CalibrateParaWritetoFlash(CalibrationParaStoreTypeDef *calipara){
    calipara->storeFlag = AVALIABLE_STORE_FLAG;                    //写入数据 
    qspi_flash_sectorerase(CALIBRATION_STORE_START_BASE);       
    if(! qspi_flash_write(CALIBRATION_STORE_START_BASE,(uint8_t *)(calipara),sizeof(CalibrationParaStoreTypeDef)))
    {
        return false;
    }
    return true;
}

以下为.h文件:

/******************************************************************************
版权所有:  深圳**科技有限公司  
文件名:    api_test.h
作者:      wangdy  
创建日期:  2020/7/9
描述:      测试处理接口 
其它:      
修改历史:  //修改历史记录列表,每条修改记录应包含修改日期、修改者及修改内容简述
            序号    修改时间    修改人  修改内容
            ????    ????/??/??  ??????  参考样式       
******************************************************************************/

/*********************************防止多次编译*********************************/
#ifndef _API_PARA_SET_H
#define _API_PARA_SET_H

/************************************头文件************************************/
#include <stdint.h>
#include <stdbool.h>
#include "bsp_bt.h"
#include "var_global.h"
//#include "bsp_flash.h"

/************************************宏定义************************************/

#define   DEFAULT_BT_PASSWD            "0000"                    //默认配对码 
#define   DEFAULT_BT_NAME            "PT-Q1_12345678"        //默认蓝牙名 

#define   AVALIABLE_STORE_FLAG        0x12345678


#define  DEFAULT_EMPTY_VALUE    1600                            //色带 小于该阈值  认为是无纸 
//---连续纸 
#define  DEFAULT_CONTINEPAPER_PAPER_VALUE    2500                //色带 大于该阈值  认为是有纸 
#define  DEFAULT_CONTINEPAPER_GAP_VALUE        2499                //色带 连续纸不用测试间隙信息 
//---间隙纸 
#define  DEFAULT_GAPPAPER_PAPER_VALUE        2500                //色带 大于该阈值  认为是有纸  
#define  DEFAULT_GAPPAPER_GAP_VALUE            2499                //色带 小于该阈值  认为是间隙 

#define  DEFAULT_GAPPAPER_GAP_DIFFER_VALUE     1                    //最大值和最小值对应的差值信息 

/************************************结构体************************************/

#pragma pack(push)
#pragma pack(1)

//===========================基本参数

//参数测试  
typedef struct
{
    uint32_t    StoreFlag;            //存储标志 
    uint8_t       Bt_Name[31];        //蓝牙名称  
}_BT_NAME_PARA;

//蓝牙PIN码 
typedef struct
{
    uint32_t    StoreFlag;            //存储标志 
    uint8_t       Bt_PIN[16];            //蓝牙密码 
}_BT_PASSWD_PARA;

//基本加热时间控制  
typedef struct
{
    uint32_t                StoreFlag;            //存储标记 
    uint16_t                BasicHeatTime;        //基本加热时间  
}_PRINT_HEATTIME_PARA;


//纸张类型信息控制 
typedef struct
{
    uint32_t                StoreFlag;                //存储标记 
    PrintPaperTypeEnum        PrintPaperType;            //色带型号种类信息 
}_PRINT_PAPER_TYPE_PARA;

typedef struct
{
    _BT_NAME_PARA            BT_Name_Para;
    _BT_PASSWD_PARA            BT_Passwd_Para;
    _PRINT_HEATTIME_PARA    Print_Heattime_Para;    //加热时间参数  
    _PRINT_PAPER_TYPE_PARA    Print_Paper_Type_Para;    //纸张类型信息  
}_STORE_PARA_INFO;

//===========================测试数据 

//测试数据写入 
typedef struct
{
    uint32_t    StoreFlag;            //存储标志 
    uint32_t       Cutter_Test_Sum;    //写入测试次数 
}_CUTTER_TEST_DATA;

typedef struct
{
    _CUTTER_TEST_DATA        Cutter_Test_Data;
}_STORE_TEST_INFO;

//===========================蓝牙存储参数 

//蓝牙存储信息 
typedef struct
{
    uint32_t storeFlag;                //存储标记 
    uint8_t Bt_NvRam[NVRAM_LEN];    //NVRAM 存储配对信息     
}BtParaStoreTypeDef;


//===========================定标及校准参数 


//定标存储信息 
typedef struct
{
    uint32_t                         storeFlag;            //存储标记信息  
    uint8_t                         SelectIndex;        //间隙纸的所选择的光耦的强度(当前为1~3)
    uint32_t                        GapRef;                //间隙纸的反馈值  
    uint32_t                        HavePaperRef;        //是否有纸 值 
}CalibrationParaStoreTypeDef;


#pragma pack(pop)

/**********************************可导出变量**********************************/

extern  _STORE_PARA_INFO                Store_Para;                    //一般参数GET 
extern  _STORE_TEST_INFO                Store_Test;                    //测试数据  
extern  BtParaStoreTypeDef                  Bt_Para;                    //蓝牙参数  
extern  CalibrationParaStoreTypeDef      Store_CalibrationPara;        //校准参数 

/***********************************函数实现***********************************/

//基本存储参数 
void Para_Store_Init(void);            //参数初始化 
bool Para_Store_BtName_Para_Write(void);        //参数写 
bool Para_Store_BtPass_Para_Write(void);        //写密码 
bool Para_Store_HeatTime_Para_Write(void);        //写加热时间  
bool Para_Store_GapPaper_Para_Write(void);        //参数数据存储 
bool Para_Store_PrintPaper_Type_Write(void);    //色带种类信息存储 
bool Para_Store_NoPaper_ADC_Write(void);        //无纸ADC值 存储信息 
bool Test_Store_CutterTime_Write(void);            //切刀测试 
bool Para_Store_Factory_Setting(void);            //恢复出厂设置 

//蓝牙参数  
bool BtParaReadFromFlash(void);
bool BtParaWritetoFlash(void);

//测试参数 
void Test_Store_Init(void);            //测试数据  初始化 
bool Test_Store_CutterTime_Write(void);    //测试次数 ++

//定标参数存储 
bool CalibrateParaReadFromFlash(CalibrationParaStoreTypeDef *calipara);
bool CalibrateParaWritetoFlash(CalibrationParaStoreTypeDef *calipara);    //写定标参数信息 


#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值