Eeprom.c 1.7 KB

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