|
|
@@ -1,13 +1,25 @@
|
|
|
#include "Eeprom.h"
|
|
|
|
|
|
+/****Private fonction */
|
|
|
|
|
|
+void readEeprom(uint8_t *tab, int len){
|
|
|
+ //TODO (EEPROM IMPORTANT) On donne pas d'adresse a laqeuel on veux lire.
|
|
|
+ HAL_I2C_Master_Receive(&EEprom.I2C,EepromADD,tab,len,1000);
|
|
|
+}
|
|
|
+
|
|
|
+void writeEeprom(uint8_t *tab, int len){
|
|
|
+ //TODO (EEPROM IMPORTANT) On donne pas d'adresse a laqeuel on veux ecrire
|
|
|
+ HAL_GPIO_WritePin(&EEprom.WC_PORT,EEprom.WC_PIN,0);
|
|
|
+ HAL_I2C_Master_Transmit(&EEprom.I2C,EepromADD,tab,len,1000);
|
|
|
+ HAL_GPIO_WritePin(&EEprom.WC_PORT,EEprom.WC_PIN,1);
|
|
|
+}
|
|
|
|
|
|
uint16_t readPointerEcriture(){
|
|
|
uint8_t t[2];
|
|
|
t[0]=0x00;
|
|
|
t[1]=0x00;
|
|
|
- writeEeprom(EepromADD,t,2);
|
|
|
- readEeprom(EepromADD,t,2);
|
|
|
+ writeEeprom(t,2);
|
|
|
+ readEeprom(t,2);
|
|
|
uint16_t res = t[0]<<8 & t[1];
|
|
|
return res;
|
|
|
}
|
|
|
@@ -18,15 +30,15 @@ void writePointerEcriture(uint16_t p){
|
|
|
t[1]=0x00;
|
|
|
t[2]=(uint8_t)p>>8;
|
|
|
t[3]=(uint8_t)p>>8;
|
|
|
- writeEeprom(EepromADD,t,4);
|
|
|
+ writeEeprom(t,4);
|
|
|
}
|
|
|
|
|
|
uint16_t readPointerLecture(){
|
|
|
uint8_t t[2];
|
|
|
t[0]=0x00;
|
|
|
t[1]=0x01;
|
|
|
- writeEeprom(EepromADD,t,2);
|
|
|
- readEeprom(EepromADD,t,2);
|
|
|
+ writeEeprom(t,2);
|
|
|
+ readEeprom(t,2);
|
|
|
uint16_t res = t[0]<<8 & t[1];
|
|
|
return res;
|
|
|
}
|
|
|
@@ -37,27 +49,33 @@ void writePointerLecture(uint16_t p){
|
|
|
t[1]=0x01;
|
|
|
t[2]=(uint8_t)p>>8;
|
|
|
t[3]=(uint8_t)p>>8;
|
|
|
- writeEeprom(EepromADD,t,4);
|
|
|
+ writeEeprom(t,4);
|
|
|
}
|
|
|
|
|
|
+/** Public Fonction*/
|
|
|
+
|
|
|
+void initEprom(I2C_HandleTypeDef typ,GPIO_TypeDef port, uint16_t pin){
|
|
|
+ EEprom.I2C = typ;
|
|
|
+ EEprom.WC_PORT = port;
|
|
|
+ EEprom.WC_PIN = pin;
|
|
|
+}
|
|
|
|
|
|
-//ne fonctionne pas a refaire on eccrit même si on arrivent a la fin
|
|
|
-void writeDataFifo(uint8_t *tab, uint8_t size){
|
|
|
+
|
|
|
+void writeData(uint16_t add, uint8_t *tab, uint8_t size){
|
|
|
uint8_t t[size+2];
|
|
|
- uint16_t pr = readPointerEcriture();
|
|
|
- t[0]=(uint8_t)pr>>8;
|
|
|
- t[1]=(uint8_t)pr;
|
|
|
- for (int i= 0; i<size;i++)
|
|
|
+ t[0]=add>>8;
|
|
|
+ t[1]=add;
|
|
|
+ for(int i=0;i<size;i++)
|
|
|
t[i+2]=tab[i];
|
|
|
- writeEeprom(EepromADD,t,size+2);
|
|
|
-
|
|
|
- pr=pr+(size/2);//
|
|
|
- if (pr>0x800)
|
|
|
- writePointerEcriture(pr);
|
|
|
+ writeEeprom(t,size+2);
|
|
|
}
|
|
|
|
|
|
-void readDataFifo(uint8_t *tab, uint8_t size){
|
|
|
-
|
|
|
+void readData(uint16_t add, uint8_t *tab, uint8_t size){
|
|
|
+ uint8_t t[size+2];
|
|
|
+ t[0]=add>>8;
|
|
|
+ t[1]=add;
|
|
|
+ writeEeprom(t,2);
|
|
|
+ readEeprom(tab,size);
|
|
|
}
|
|
|
|
|
|
//fonction pour tester le hard de l'Eeprom
|