/******************************************************************************
版权所有: 深圳市**科技有限公司
文件名: 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