/* * V1.0 */ #include /****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(t,2); readEeprom(t,2); uint16_t res = t[0]<<8 & t[1]; return res; } void writePointerEcriture(uint16_t p){ uint8_t t[4]; t[0]=0x00; t[1]=0x00; t[2]=(uint8_t)p>>8; t[3]=(uint8_t)p>>8; writeEeprom(t,4); } uint16_t readPointerLecture(){ uint8_t t[2]; t[0]=0x00; t[1]=0x01; writeEeprom(t,2); readEeprom(t,2); uint16_t res = t[0]<<8 & t[1]; return res; } void writePointerLecture(uint16_t p){ uint8_t t[4]; t[0]=0x00; t[1]=0x01; t[2]=(uint8_t)p>>8; t[3]=(uint8_t)p>>8; 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; } void writeData(uint16_t add, uint8_t *tab, uint8_t size){ uint8_t t[size+2]; t[0]=add>>8; t[1]=add; for(int i=0;i>8; t[1]=add; writeEeprom(t,2); readEeprom(tab,size); } //fonction pour tester le hard de l'Eeprom void testEeprom(){ uint16_t add = 0x04AA; writePointerEcriture(add); add = readPointerEcriture(); }