加入eeprom驱动,用于保存屏幕触控的校准数据

This commit is contained in:
2021-08-08 14:49:30 +08:00
parent 4e864ed558
commit 30a814adb9
48 changed files with 23871 additions and 11153 deletions
+93
View File
@@ -0,0 +1,93 @@
/*
* eeprom.c
*
* Created on: Aug 8, 2021
* Author: wuwenfeng
*/
#include "eeprom.h"
extern I2C_HandleTypeDef hi2c2;
void IIC_SAND_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
HAL_I2C_Mem_Write(&hi2c2,DEVICE_ADD,IN_DEVICE_ADD,I2C_MEMADD_SIZE_8BIT,DATAS,LONG,100);
}
void IIC_READ_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
HAL_I2C_Mem_Read(&hi2c2,DEVICE_ADD,IN_DEVICE_ADD,I2C_MEMADD_SIZE_8BIT,DATAS,LONG,100);
}
eeprom_write_buff_info eeprom_write_buffer;
void EPPROM_SLOWWRITE_INIT()
{
eeprom_write_buffer.buff=NULL;
eeprom_write_buffer.end=NULL;
eeprom_write_buffer.head=NULL;
eeprom_write_buffer.save_timeout=5;
eeprom_write_buffer.save_busy=0;
}
void EEPROM_SLOWWRITE_SERVER()
{
eeprom_write_buff *buff;
char data;
if(eeprom_write_buffer.save_busy)
{
if(HAL_GetTick()>eeprom_write_buffer.save_time)
{
eeprom_write_buffer.save_busy=0;
}
}else
{
if(eeprom_write_buffer.head!=NULL)
{
eeprom_write_buffer.save_busy=1;
eeprom_write_buffer.save_time=HAL_GetTick()+eeprom_write_buffer.save_timeout;
buff=eeprom_write_buffer.head->next;
data=eeprom_write_buffer.head->date;
IIC_SAND_DATE(EEPROM_ADDRESS,eeprom_write_buffer.head->add,&data,1);
free(eeprom_write_buffer.head);
eeprom_write_buffer.head=buff;
}
}
}
void EEPROM_READ_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
IIC_READ_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
}
void EEPROM_WRITE_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
//IIC_SAND_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
uint16_t addoffset=0;
eeprom_write_buff *buff;
eeprom_write_buff *buff2;
while(LONG--)
{
buff =(eeprom_write_buff*)malloc(sizeof(eeprom_write_buff));
if(buff!=NULL)
{
buff->add=IN_DEVICE_ADD+addoffset;
buff->date=DATAS[addoffset];
buff->next=NULL;
}else{return ;}
if(eeprom_write_buffer.head==NULL)
{
eeprom_write_buffer.head=buff;
eeprom_write_buffer.end=buff;
}else
{
buff2=eeprom_write_buffer.end;
buff2->next=buff;
eeprom_write_buffer.end=buff;
}
addoffset++;
}
}