Eeprom.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "Eeprom.h"
  2. /****Private fonction */
  3. void readEeprom(uint8_t *tab, int len){
  4. //TODO (EEPROM IMPORTANT) On donne pas d'adresse a laqeuel on veux lire.
  5. HAL_I2C_Master_Receive(&EEprom.I2C,EepromADD,tab,len,1000);
  6. }
  7. void writeEeprom(uint8_t *tab, int len){
  8. //TODO (EEPROM IMPORTANT) On donne pas d'adresse a laqeuel on veux ecrire
  9. HAL_GPIO_WritePin(&EEprom.WC_PORT,EEprom.WC_PIN,0);
  10. HAL_I2C_Master_Transmit(&EEprom.I2C,EepromADD,tab,len,1000);
  11. HAL_GPIO_WritePin(&EEprom.WC_PORT,EEprom.WC_PIN,1);
  12. }
  13. uint16_t readPointerEcriture(){
  14. uint8_t t[2];
  15. t[0]=0x00;
  16. t[1]=0x00;
  17. writeEeprom(t,2);
  18. readEeprom(t,2);
  19. uint16_t res = t[0]<<8 & t[1];
  20. return res;
  21. }
  22. void writePointerEcriture(uint16_t p){
  23. uint8_t t[4];
  24. t[0]=0x00;
  25. t[1]=0x00;
  26. t[2]=(uint8_t)p>>8;
  27. t[3]=(uint8_t)p>>8;
  28. writeEeprom(t,4);
  29. }
  30. uint16_t readPointerLecture(){
  31. uint8_t t[2];
  32. t[0]=0x00;
  33. t[1]=0x01;
  34. writeEeprom(t,2);
  35. readEeprom(t,2);
  36. uint16_t res = t[0]<<8 & t[1];
  37. return res;
  38. }
  39. void writePointerLecture(uint16_t p){
  40. uint8_t t[4];
  41. t[0]=0x00;
  42. t[1]=0x01;
  43. t[2]=(uint8_t)p>>8;
  44. t[3]=(uint8_t)p>>8;
  45. writeEeprom(t,4);
  46. }
  47. /** Public Fonction*/
  48. void initEprom(I2C_HandleTypeDef typ,GPIO_TypeDef port, uint16_t pin){
  49. EEprom.I2C = typ;
  50. EEprom.WC_PORT = port;
  51. EEprom.WC_PIN = pin;
  52. }
  53. void writeData(uint16_t add, uint8_t *tab, uint8_t size){
  54. uint8_t t[size+2];
  55. t[0]=add>>8;
  56. t[1]=add;
  57. for(int i=0;i<size;i++)
  58. t[i+2]=tab[i];
  59. writeEeprom(t,size+2);
  60. }
  61. void readData(uint16_t add, uint8_t *tab, uint8_t size){
  62. uint8_t t[size+2];
  63. t[0]=add>>8;
  64. t[1]=add;
  65. writeEeprom(t,2);
  66. readEeprom(tab,size);
  67. }
  68. //fonction pour tester le hard de l'Eeprom
  69. void testEeprom(){
  70. uint16_t add = 0x04AA;
  71. writePointerEcriture(add);
  72. add = readPointerEcriture();
  73. }