aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Drivers
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-12-23 09:34:15 +0200
committerAvi Levkovich <avi@twine-s.com>2020-12-23 09:34:15 +0200
commit7769a81204af381152824b3a3b30aaaddf76aaca (patch)
treeb946489e7e2b5d231612a9322c3e6c407a6bf4cd /Software/Embedded_SW/Embedded/Drivers
parenteb434d3a2db37d47df2d29e597e92900fdf84af8 (diff)
parent953cb38772543e941c9b115a787bc2bec2187ee1 (diff)
downloadTango-7769a81204af381152824b3a3b30aaaddf76aaca.tar.gz
Tango-7769a81204af381152824b3a3b30aaaddf76aaca.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Drivers')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/NFC.c11
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.c14
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c34
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h28
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c36
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h12
6 files changed, 99 insertions, 36 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/NFC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/NFC.c
index 33f154492..1e989d4d1 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/NFC.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/NFC.c
@@ -118,15 +118,14 @@ RFID_RETURN_CODE RFID_Status = 0;
uint8_t Connect_to_RFID_Reder(uint8_t readerID)//2
{
RFID_RETURN_CODE RFIDRetValue;
- bool isTagValid;
uint8_t Status = OK;
-
-
+/*
+ bool isTagValid;
uint32_t newPwd;
uint32_t newPACK;
uint32_t counter;
-
int PwdRetVal;
+*/
static uint32_t nop = 0;
RFID_StartDiscovery(readerID);
@@ -187,7 +186,7 @@ NFC_Tag NFC_Tag_U[Max_Readers];//read with updates
RFID_RETURN_CODE TagWriteData(RFID_READER_ID readerID)
{
- uint8_t index = 0;
+ //uint8_t index = 0;
uint32_t dummy = 0;
uint32_t Tuint32 = 0;
//uint16_t Tuint16 = 0;
@@ -375,7 +374,7 @@ RFID_RETURN_CODE TagWriteData(RFID_READER_ID readerID)
RFIDRetValue = WriteValue( readerID, &tagInfo, tagMemory, 31, Tuint32 );
- return SUCCESS;
+ return RFIDRetValue;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.c
index 7035d172e..6d6425172 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.c
@@ -1209,13 +1209,13 @@ uint32_t crc_ccitt_update(unsigned char * buf, int len)
}
-void RFID_Test()
+RFID_RETURN_CODE RFID_Test()
{
uint8_t i, readerID = 1;
NxpNci_RfIntf_t tagInfo;
-uint8_t addressBlock = 0xE3; // NTAG216 - User memory blocks: 0x04-0xE1 = 222 blocks = 888 bytes
-uint8_t tagId[]= {0};
+//uint8_t addressBlock = 0xE3; // NTAG216 - User memory blocks: 0x04-0xE1 = 222 blocks = 888 bytes
+//uint8_t tagId[]= {0};
uint8_t Serial[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G'};
uint8_t factoryID[] = { '1', '2', '3'};
uint16_t fillingSystem = 55;
@@ -1250,12 +1250,12 @@ uint8_t uid[7] = {0};
uint8_t hashValue[16] = {0};
uint8_t newPACK[] = {0x11, 0x22};
uint8_t newPwd[] = {0xFF, 0xFF, 0xFF, 0xFF};
-uint8_t startingBlock = 0x04;
+/*uint8_t startingBlock = 0x04;
uint8_t pwdAddr = 0xE5;
-uint8_t tagMemory[1024];
uint16_t succeededWriteSize = 0;
uint16_t succeededReadSize = 0;
-bool firstTime = true;
+bool firstTime = true;*/
+uint8_t tagMemory[1024];
uint32_t dummy = 0;
RFID_RETURN_CODE RFIDRetValue;
@@ -1421,6 +1421,6 @@ while(1)
}
//----------------------------------------------------------------------------
-
+ return RFIDRetValue;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c
index 10f65db1d..c757c3a3b 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c
@@ -132,18 +132,16 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b
return(1);
}
int base_flashErased = false;
-uint32_t EraseFlashSection(uint32_t ui32FlashStart)
+uint32_t EraseFlashSection(void)
{
- volatile uint32_t ui32Idx = ui32FlashStart;
+ volatile uint32_t ui32Idx = FLASH_RAM_BASE;
uint32_t status;
- if (ui32FlashStart<GENHWCFG_SECTION_FLASH)
- {
- if (base_flashErased == true)
- return ERROR;
- else
- base_flashErased = true; //once in a run
- }
+ if (base_flashErased == true)
+ return WARNING;
+ else
+ base_flashErased = true; //once in a run
+
#ifdef FLASH_DEBUG
Address[RxIndex] = ui32FlashStart;
Size[RxIndex] = ui32FileSize;
@@ -152,9 +150,27 @@ uint32_t EraseFlashSection(uint32_t ui32FlashStart)
RxIndex = 0;
#endif
status = FlashErase(ui32Idx);
+ //FlashErase returns 0 or -1
return status;
}
+/*void FlashTest(void)
+{
+ int i;
+ uint32_t stack[0x200];
+ uint32_t offset = 0;
+
+ for (i = 0; i < 0x200; i++)
+ stack[i] = i;
+
+ while (offset < FLASH_SIZE)
+ {
+ ReadAppAndProgram(FLASH_RAM_BASE+offset,0x200,stack);
+ offset+=0x200;
+ }
+ EraseFlashSection();
+
+}*/
//Each word may not be subject to more than a specific number of programming cycles before an
//erase cycle is required. In other words, for any given word, FlashProgram can only be called
//twice before FlashErase is called.
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h
index 7da9f92a7..ab2c87acc 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h
@@ -8,23 +8,23 @@
#ifndef DRIVERS_FLASH_RAM_FLASHPROGRAM_H_
#define DRIVERS_FLASH_RAM_FLASHPROGRAM_H_
-#define FLASH_RAM_BASE 0x000F8000
+#define FLASH_RAM_BASE 0x000FC000
-#define EMBEDDED_PARAMETERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000 ) //512
-#define PROCESS_PARAMETERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000 )//512
-#define DANCERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000)
-#define DISPENSERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000)
-#define GENHWCFG_SECTION_FLASH (FLASH_RAM_BASE + 0X2000)
-#define ALARM_SECTION_FLASH (FLASH_RAM_BASE + 0X4000 )
+//#define EMBEDDED_PARAMETERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000 ) //512
+//#define PROCESS_PARAMETERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000 )//512
+//#define DANCERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000)
+//#define DISPENSERS_SECTION_FLASH (FLASH_RAM_BASE + 0X0000)
+//#define GENHWCFG_SECTION_FLASH (FLASH_RAM_BASE + 0X0000)
+//#define ALARM_SECTION_FLASH (FLASH_RAM_BASE + 0X0000 )
+//#define PROCESS_PARAMETERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0200 )
+//#define DANCERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0400)
+//#define DISPENSERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X500)
+//#define GENHWCFG_MAP_IN_FLASH (FLASH_RAM_BASE + 0x0300)
#define EMBEDDED_PARAMETERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0000 )
-#define PROCESS_PARAMETERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0200 )
-#define DANCERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0400)
-#define DISPENSERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X500)
-#define GENHWCFG_MAP_IN_FLASH (FLASH_RAM_BASE + 0X2000)
-#define ALARM_MAP_IN_FLASH (FLASH_RAM_BASE + 0X4000 )
+#define ALARM_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0300)
-#define FLASH_SIZE 0X8000
+#define FLASH_SIZE 0X4000
extern int base_flashErased;
@@ -38,7 +38,7 @@ extern int base_flashErased;
//*****************************************************************************
uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* buffer);
void FlashInit(void);
-uint32_t EraseFlashSection(uint32_t ui32FlashStart);
+uint32_t EraseFlashSection(void);
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
index e9d5cfc07..71d26888d 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c
@@ -60,6 +60,42 @@ uint32_t MCU_E2PromRead(int Address,uint32_t *Data)
return OK;
}
+/**************************************************/
+uint32_t MCU_E2PromProgramChunk(int Address,uint16_t Length,uint32_t Data)
+{
+ uint32_t Buffer = Data;
+#ifdef EVALUATION_BOARD
+ return 0;
+#else
+ Report("MCU_E2PromProgramChunk",__FILE__,Length,Address,RpWarning,Data,0);
+ return (EEPROMProgram((uint32_t *)Buffer, Address, Length));
+#endif
+}
+uint32_t MCU_E2PromReadChunk(int Address,uint16_t Length,uint32_t *Data)
+{
+#ifndef EVALUATION_BOARD
+ EEPROMRead((uint32_t *)Data,Address, Length);
+#endif
+ Report("MCU_E2PromReadChunk",__FILE__,Length,Address,RpWarning,*Data,0);
+
+ return OK;
+
+}
+void MCU_E2PromUpdateResetReason(int i)
+{
+ uint32_t Head;
+ uint32_t RESC = SysCtlResetCauseGet();
+
+ EEPROMRead(&Head,EEPROM_RESET_REASON_HEAD_ADDRESS, 4);
+ if (Head>=EEPROM_RESET_REASON_MAX_DATA) Head=0;
+ Head++;
+ RESC+=(i*0x1000);
+ EEPROMProgram(&Head, EEPROM_RESET_REASON_HEAD_ADDRESS, 4);
+ EEPROMProgram(&RESC, (EEPROM_RESET_REASON_HEAD_ADDRESS+(Head*4)), 4);
+
+}
+
+/*************************************************/
void MCU_E2PromProgramMidTank(int midtankId,float a,float b)
{
float A,B;
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
index 12598ed07..2102d1716 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
@@ -61,6 +61,18 @@ typedef enum {
ORIFICE3_ZERO_VALUE_ADDR,
}EEPROM_ADDRESSES;*/
+#define EEPROM_RESET_REASON_HEAD_ADDRESS 160
+#define EEPROM_RESET_REASON_MAX_DATA 80
+
+#define DISPENSERS_MAP_IN_EEPROM 0x200
+#define PROCESS_PARAMATERS_IN_EEPROM 0x400
+
+uint32_t MCU_E2PromProgramChunk(int Address,uint16_t Length,uint32_t Data);
+uint32_t MCU_E2PromReadChunk(int Address,uint16_t Length,uint32_t *Data);
+
+void MCU_E2PromUpdateResetReason(int i);
+
+
uint32_t MCU_E2PromProgram(int Address,uint32_t Data);
uint32_t MCU_E2PromRead(int Address,uint32_t *Data);
void MCU_E2PromProgramMidTank(int midtankId,float a,float b);