130 lines
2.3 KiB
C
130 lines
2.3 KiB
C
/*
|
|
* flash.c
|
|
*
|
|
* Created on: Oct 24, 2017
|
|
* Author: toporov
|
|
*/
|
|
|
|
#include "my.h"
|
|
#include "stm32f7xx_hal_flash.h"
|
|
#include "stm32f7xx_hal_flash_ex.h"
|
|
#include "flash.h"
|
|
#include "adc.h"
|
|
|
|
|
|
extern volatile float32_t aa1;
|
|
extern volatile float32_t aa0;
|
|
|
|
extern __IO float32_t MEAN;
|
|
|
|
//static const float32_t TEMP_CORR_KU[] = {1.06887186, 1.08734334, 1.09281802, 1.07570958, 1.08372843, 1.00074244, 1.00249016, 1.0147537, 1.08287311};
|
|
//static const float32_t TEMP_CORR_KU[] = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
|
|
extern __IO uint8_t CardState;
|
|
|
|
extern __IO uint32_t NextIndexMeas;
|
|
extern __IO uint32_t NextIndexPoint;
|
|
|
|
extern volatile uint32_t Ns;
|
|
extern volatile uint32_t Fs;
|
|
volatile UserData_TypeDef pardata, pardata_old;
|
|
volatile CorrData_TypeDef corrdata;
|
|
|
|
volatile bool FirstOn = false;
|
|
|
|
extern __IO uint32_t WavFileNameLen;
|
|
extern __IO uint32_t MeasFileNameLen;
|
|
extern __IO uint32_t DiagFileNameLen;
|
|
|
|
volatile char _SERIAL_DRAW[10];
|
|
|
|
FLASH_OBProgramInitTypeDef OBInit;
|
|
static FLASH_EraseInitTypeDef EraseInitStruct;
|
|
|
|
|
|
volatile bool CORRECTION = false;
|
|
volatile char _SERIAL[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
|
|
|
|
|
volatile uint32_t id = 0;
|
|
|
|
void initFlash(void)
|
|
{
|
|
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
|
HAL_FLASHEx_OBGetConfig(&OBInit);
|
|
|
|
rdPar();
|
|
}
|
|
|
|
|
|
void wrPar(void)
|
|
{
|
|
volatile uint32_t i;
|
|
volatile uint32_t lenpar = 0;
|
|
volatile uint32_t Address, *pData;
|
|
uint32_t SECTORError = 0;
|
|
|
|
#ifndef DEBUGGING
|
|
|
|
|
|
lenpar = 8u << 2;
|
|
|
|
|
|
__disable_irq();
|
|
HAL_FLASH_Unlock();
|
|
EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
|
|
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
|
|
EraseInitStruct.Sector = USERSECTOR; //FLASH_SECTOR_11;
|
|
EraseInitStruct.NbSectors = 1;
|
|
if(HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError) == HAL_OK)
|
|
{
|
|
Address = USERPAGE;
|
|
pData = (uint32_t *) &pardata.OWN;
|
|
for(i = 0; i < lenpar; i++)
|
|
{
|
|
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
|
|
Address += 4;
|
|
}
|
|
}
|
|
HAL_FLASH_Lock();
|
|
__enable_irq();
|
|
#endif
|
|
}
|
|
|
|
void rdPar(void)
|
|
{
|
|
uint8_t i, j;
|
|
uint32_t lenpar;
|
|
volatile bool rewrite = false;
|
|
sfloat hpf;
|
|
|
|
memcpy((void *) &pardata.OWN, (void *) USERPAGE, 8u);
|
|
|
|
if(pardata.OWN != 18)
|
|
{
|
|
pardata.OWN = 18;
|
|
pardata.BAUD = 7;
|
|
pardata.INFB = 0;
|
|
pardata.LANG = RUS;
|
|
|
|
rewrite = true;
|
|
}
|
|
|
|
if(rewrite)
|
|
{
|
|
rewrite = false;
|
|
wrPar();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
void rdFlash(void)
|
|
{
|
|
//rdPar();
|
|
}
|
|
|
|
|
|
|
|
|