aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShai Frieder <Shai.Frieder@twine-s.com>2019-10-07 18:29:45 +0300
committerShai Frieder <Shai.Frieder@twine-s.com>2019-10-07 18:29:45 +0300
commitb30b9e33bc8a7df92b37df790ff3cd97d9f76a55 (patch)
treeed1f55dda2dbf62d63295fcf40a1e834711ffa89 /Software/Embedded_SW/Embedded
parent35217ac6ffc06af7d23ea3f9359f0dd4f2decf6e (diff)
parent07280066f97510892838c451bee6c066a7591131 (diff)
downloadTango-b30b9e33bc8a7df92b37df790ff3cd97d9f76a55.tar.gz
Tango-b30b9e33bc8a7df92b37df790ff3cd97d9f76a55.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c49
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h22
2 files changed, 71 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c
index 9d13727ee..f88852d83 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c
@@ -5,9 +5,58 @@
* Author: avi
*/
#include "include.h"
+#include "Head_EEPROM.h"
+#include <Drivers/I2C_Communication/I2C.h>
+#include "../I2C_Head_Mux.h"
//EEPROM M24M01-DFMN6TP
uint32_t I2C_HEAD_EEPROM_SLAVE_ADD = 0xA0;
+uint8_t Head_Write_Buf[Max_Head_buf_size +2];
+uint32_t Head_I2C_EEprom_Write_Ch()
+{
+ uint32_t status= OK;
+ uint8_t i = 0;
+
+
+ status |= Select_Main_Head_Mux_Channel();
+
+ Head_Write_Buf[0] = 0x00;
+ Head_Write_Buf[1] = 0x00;
+
+ for(i=0;i<Max_Head_buf_size;i++)
+ {
+ Head_Write_Buf[i+2] = Head_struct.Write_Head_EEPROM.Buf[i];
+ }
+
+ status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_HEAD_EEPROM_SLAVE_ADD, Head_Write_Buf, Max_Head_buf_size+2);
+
+ return status;
+}
+
+uint32_t Head_I2C_EEprom_Set_for_Read_Ch()
+{
+ uint32_t status= OK;
+
+ status |= Select_Main_Head_Mux_Channel();
+
+ Head_Write_Buf[0] = 0x00;
+ Head_Write_Buf[1] = 0x00;
+
+ status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_HEAD_EEPROM_SLAVE_ADD, Head_Write_Buf, 2);
+
+ return status;
+}
+
+uint32_t Head_I2C_EEprom_Read_Ch()
+{
+ uint32_t status= OK;
+
+ status |= Select_Main_Head_Mux_Channel();
+
+ status |= I2C_Read(I2C_ID_HEAD_CARD, I2C_HEAD_EEPROM_SLAVE_ADD + 1, Head_struct.Read_Head_EEPROM.Buf, Max_Head_buf_size);
+
+ return status;
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h
index 98214bd5b..fdffce869 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h
@@ -9,6 +9,28 @@
#define DRIVERS_I2C_COMMUNICATION_HEAD_CARD_EEPROM_HEAD_EEPROM_H_
+typedef struct
+{
+ uint32_t SN;
+ uint32_t Uint32_Spare[5];
+ double Double_Spare[5];
+}HEAD_EEPROM_BYTES;
+
+typedef union
+{
+ HEAD_EEPROM_BYTES bytes;
+ uint8_t Buf[sizeof(HEAD_EEPROM_BYTES)];
+}HEAD_EEPROM;
+
+typedef struct
+{
+ HEAD_EEPROM Write_Head_EEPROM;
+ HEAD_EEPROM Read_Head_EEPROM;
+}HEAD_EEPROM_STRUCT;
+
+HEAD_EEPROM_STRUCT Head_struct;
+
+#define Max_Head_buf_size sizeof(Head_struct.Write_Head_EEPROM.Buf)