aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-08-23 08:49:56 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-08-23 08:49:56 +0300
commitb92bebe3f84a5ef683e44decf1991359fb3a4e21 (patch)
tree57f1c054f36307ad92c8954670494a8c9b842ad0 /Software/Embedded_SW/Embedded
parentbe4b16ebb5b6d6d77834c85b087aa748129cbdcd (diff)
parent0cd5871508a048d1b47b6f4286af106a3f9a8488 (diff)
downloadTango-b92bebe3f84a5ef683e44decf1991359fb3a4e21.tar.gz
Tango-b92bebe3f84a5ef683e44decf1991359fb3a4e21.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c13
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.c101
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.h2
-rw-r--r--Software/Embedded_SW/Embedded/Main.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c49
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c9
8 files changed, 170 insertions, 16 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
index dd817765c..1ecedf00c 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
@@ -119,6 +119,9 @@
#define F1_DRYER_LOADARM_ROTENC_M (*((volatile short *)(FPGA1_BASE | 0x152))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
#define F1_DRYER_LOADARM_ROTENC_I (*((volatile short *)(FPGA1_BASE | 0x154))) //value of index counter
+//WATCHDOG
+#define F1_Watchdog_reg (*((volatile short *)(FPGA1_BASE | 0x160)))//Watchdog enable bit, watchdog value - F1_gpo_01 BIT2 DYEINGH_SSR10_CTRL HeadHeaterZ5
+
//SSI
#define F1_RSPARE_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | 0x180))) //The 16 Lsb bits of the shifted in data.
#define F1_RSPARE_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | 0x182))) //16 bit MSB if nessesary
@@ -627,6 +630,9 @@
#define F3_RSPARE_ROTENC_msb (*((volatile short *)(FPGA3_BASE | 0x112))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
#define F3_RSPARE_ROTENC_index (*((volatile short *)(FPGA3_BASE | 0x114))) //value of index counter
+//WATCHDOG
+#define F3_Watchdog_reg (*((volatile short *)(FPGA3_BASE | 0x140)))//Watchdog enable bit, watchdog value - F3_GPO_01_bus BIT4 DYEINGH_SSR11_CTRL HeadHeaterZ6
+
//SPI_MOTO_RLOADING_A1
#define F3_MOTO_SPARE1_1_A1_TX_00 (*((volatile short *)(FPGA3_BASE | 0x200))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
#define F3_MOTO_SPARE1_1_A1_TX_01 (*((volatile short *)(FPGA3_BASE | 0x202))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
index 4d10b6b7c..ef3933d30 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
@@ -309,8 +309,8 @@ bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch)
LS_Dispenser_7_8.bits.F2_LS_DISPENSER_UP_8 = NO_LIMIT;
break;
default :
- //error
- break;
+ LM_Status = NO_LIMIT;
+ break;
}
return LM_Status;
}
@@ -376,13 +376,20 @@ uint32_t Control_WD(bool IsEnable, unsigned char SetTimer_Steps100mSec) // Contr
*/
{
#ifndef EVALUATION_BOARD
+
+ short WD_Enable = 0x4000 | SetTimer_Steps100mSec;
+
if (IsEnable == DISABLE)
{
+ F1_Watchdog_reg = 0;
F2_Watchdog_reg = 0;
+ F3_Watchdog_reg = 0;
}
else
{
- F2_Watchdog_reg = 0x4000 | SetTimer_Steps100mSec; // Enable the watchdog
+ F1_Watchdog_reg = WD_Enable; // Enable the watchdog F3_GPO_01_bus BIT4 DYEINGH_SSR11_CTRL HeadHeaterZ6
+ F2_Watchdog_reg = WD_Enable; // Enable the watchdog F2_CTRL + reset dispensers motor drivers
+ F3_Watchdog_reg = WD_Enable; // Enable the watchdog F1_gpo_01 BIT2 DYEINGH_SSR10_CTRL HeadHeaterZ5
}
#endif
return OK;
diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.c
index 944abb737..702ecafcc 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.c
@@ -3,6 +3,11 @@
//see also https://github.com/yuvadm/tiva-c/blob/master/boards/dk-tm4c129x/drivers/mx66l51235f.c
//On board Quad SPI 512Mb Flash
+
+//Macronixýþ þýMX66L51235FZ2I-10Gýþ
+//Sector Size 4KB
+
+
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
@@ -47,6 +52,12 @@
#define INS_PAGE_PROGRAM 0x02
#define INS_READ_DATA 0x03
+//-------------------- AVI: based on https://github.com/turingo/stm32ss/blob/master/src/stm32ss/bsp/sf.c
+#define INS_BLOCK_ERASE (0xd8)
+#define INS_CHIP_ERASE (0xc7)
+#define INS_WRITE_DISABLE (0x04)
+//-------------------------
+
#if defined(ewarm)
#pragma data_alignment=1024
tDMAControlTable g_sDMAControlTable[6];
@@ -610,13 +621,36 @@ int Read_Ext_Flash_Device_ID()
return 0;
}
-int Erase_Sector_before_writting_To_Ext_Flash(uint32_t ui32Address)
+int Erase_Sector_before_writting_To_Ext_Flash(uint32_t ui32Address)// 4Kb every 100h is sector (0-0xFFF, 0x1000-0x1fff,..)
{
SSILibSendEraseCommand(SSI3_BASE,ui32Address,INS_SECTOR_ERASE_4KB);
return 0;
}
+int Erase_Block(uint32_t ui32Address)// 32Kb or 64Kb ?
+{
+ //writeLine("Starting Erase Block Operations...");
+
+
+ SSILibSendEraseCommand(SSI3_BASE,ui32Address,INS_BLOCK_ERASE );
+
+ //writeLine("Erase Block Completed...");
+
+ return 0;
+}
+
+int Erase_Chip()// 32Kb or 64Kb ?
+{
+ //writeLine("Starting Erase Block Operations...");
+
+ SSILibSendEraseCommand(SSI3_BASE,0,INS_CHIP_ERASE );
+
+ //writeLine("Erase Block Completed...");
+
+ return 0;
+}
+
int Write_Words_To_Ext_Flash(uint32_t ui32Address, uint32_t NumOfWords, uint32_t* TxBuf)
{
@@ -714,7 +748,8 @@ int Ext_Flash_Operation(uint32_t ui32Address,uint32_t Operation, uint32_t NumOf
Display_RX_TX_Ext_Flash_Data(NumOfWords, pui32DataTx, NULL);
// Erase the Sector before Program Operation...
- Erase_Sector_before_writting_To_Ext_Flash(ui32Address);
+ Erase_Sector_before_writting_To_Ext_Flash(ui32Address);//Erase all the sector not only from this address
+ //Erase_Block(ui32Address);//Added by AVI for testing
// Write NUM_SSI_DATA words to the External Flash
Write_Words_To_Ext_Flash(ui32Address, NumOfWords, pui32DataTx);
@@ -750,7 +785,7 @@ Flash_Union Flash_RW;
uint32_t WriteBuf[MaxFlashBytes];
uint32_t ReadBuf[MaxFlashBytes];
-
+/*
uint32_t ExtFlashWriteBuf(uint32_t ui32Address,uint32_t NumOfWords, uint32_t* pui32DataTx)
{
static uint32_t AddressCounter = 0;
@@ -795,9 +830,63 @@ uint32_t ExtFlashWriteBuf(uint32_t ui32Address,uint32_t NumOfWords, uint32_t* p
Ext_Flash_Operation(0X00 + (0X100*AddressCounter), TX, No_Bytes , WriteBuf, NULL );////always use address 0 and handle the add by the AddressCounter
}
- return return_start_address;
+ return return_start_address;// for reading what we just wrote
}
+*/
+
+uint32_t ExtFlashWriteBuf(/*uint32_t ui32Address,*/uint32_t NumOfWords, uint32_t* pui32DataTx)//ui32Address not in use
+{
+ uint32_t AddressCounter = 0;
+ uint32_t i;
+ uint32_t No_Bytes;
+
+ static uint32_t Current_Start_address = 0x00;
+ uint32_t Save_Current_Start_address = 0x00;
+
+ assert(NumOfWords <= MaxFlashWords);
+
+ No_Bytes = NumOfWords *4;
+
+ uint32_t Current_End_address = Current_Start_address + No_Bytes;
+
+ memset(&Flash_RW,0,sizeof(Flash_RW));
+
+ for(i = 0; i < NumOfWords;i++)
+ {
+ Flash_RW.DWords[i] = pui32DataTx[i];
+ }
+
+ for(i = 0; i < No_Bytes;i++)
+ {
+ WriteBuf[i] = Flash_RW.Bytes[i];
+ }
+
+ if(No_Bytes >MaxBytesForAddress)
+ {
+ uint32_t number = No_Bytes / MaxBytesForAddress;
+ uint32_t Remainder = No_Bytes % MaxBytesForAddress;
+
+ for(i=0;i<number;i++,AddressCounter++)
+ {
+ Ext_Flash_Operation(Current_Start_address + (0X100*AddressCounter) , TX, MaxBytesForAddress , WriteBuf+ (MaxBytesForAddress*i), NULL ); //always use address 0 and handle the add by the AddressCounter
+ }
+ if(Remainder)
+ {
+ Ext_Flash_Operation(Current_Start_address + (0X100*AddressCounter) , TX, Remainder , WriteBuf+ (MaxBytesForAddress*i), NULL );////always use address 0 and handle the add by the AddressCounter
+ }
+ }
+ else
+ {
+ Ext_Flash_Operation(Current_Start_address, TX, No_Bytes , WriteBuf, NULL );////always use address 0 and handle the add by the AddressCounter
+ }
+
+ Save_Current_Start_address = Current_Start_address;
+
+ Current_Start_address = Current_End_address;// for the next time
+
+ return Save_Current_Start_address;// for reading the data that we just wrote
+}
uint32_t* ExtFlashReadBuf(uint32_t ui32Address,uint32_t NumOfWords )
@@ -805,7 +894,7 @@ uint32_t* ExtFlashReadBuf(uint32_t ui32Address,uint32_t NumOfWords )
uint32_t No_Bytes;
- static uint32_t AddressCounter = 0;
+ uint32_t AddressCounter = 0;
uint32_t i = 0;
assert(NumOfWords <= MaxFlashWords);
@@ -830,7 +919,7 @@ uint32_t* ExtFlashReadBuf(uint32_t ui32Address,uint32_t NumOfWords )
}
else
{
- Ext_Flash_Operation(ui32Address + (0X100*AddressCounter), RX, No_Bytes, NULL, ReadBuf );
+ Ext_Flash_Operation(ui32Address, RX, No_Bytes, NULL, ReadBuf );
}
for(i = 0; i < No_Bytes;i++)
diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.h b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.h
index e0f9eb9f7..cca2cd848 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/Flash_Memory.h
@@ -4,7 +4,7 @@
int Ext_Flash_Operation();
int FlashFS_Init();
-uint32_t ExtFlashWriteBuf(uint32_t ui32Address,uint32_t NumOfWords, uint32_t* pui32DataTx);
+uint32_t ExtFlashWriteBuf(/*uint32_t ui32Address,*/uint32_t NumOfWords, uint32_t* pui32DataTx);
uint32_t* ExtFlashReadBuf(uint32_t ui32Address,uint32_t NumOfWords );
extern Flash_Union Flash_RW;
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 18852e3fa..4fa7c52b3 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -193,6 +193,10 @@ int main(void)
//Write_DAC_and_Input_Register();
+/*
+ Erase_Chip();
+ SysCtlDelay(1000);
+ Erase_Block(0);*/
//-----------------------------------------------------------
#ifndef EVALUATION_BOARD
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c
index 185d4ac66..b035ff97b 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c
@@ -69,6 +69,8 @@ float CalculateDispenserPressure (int DispenserId)
//DispenserPressure[DispenserId] *=10000000; //uBar;
//DispenserPressure[DispenserId] *=145.0377; //PSI;
+ DispenserPressure[DispenserId] *= 10; //MPascal -> Bar
+
return(DispenserPressure[DispenserId]);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
index 581a27f1f..68b79edeb 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
@@ -12,7 +12,7 @@
#include "Drivers/USB_Communication/USBCDCD.h"
-
+//#include "drivers/twine_graphicslib/graphics_adapter.h"
#include "Stub_Status.h"
@@ -25,6 +25,20 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
//request->cartridgeid
+ //writeLine("cartridge Request: ");
+
+ //writeFloat(request->cartridgeid);
+
+ /*
+ int i;
+ for( i=0;i<8;i++)
+ {
+ Read_MidTank_Pressure_Sensor(i);
+ SysCtlDelay(1);
+ }
+
+ */
+
StubCartridgeReadResponse response = STUB_CARTRIDGE_READ_RESPONSE__INIT;
response.cartridgeid = request->cartridgeid;
@@ -43,8 +57,20 @@ void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
response.has_cartridgeused = false;
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+/*
+ writeLine("Sending Response: ");
-
+ writeFloat(response.cartridgeid);
+ writeString(", ");
+ writeFloat(response.cartridgecolor);
+ writeString(", ");
+ writeFloat(response.cartridgeversion);
+ writeString(", ");
+ writeFloat(response.cartridgedata);
+ writeString(", ");
+ writeFloat(response.cartridgeused);
+ writeString(", ");
+*/
Write_status_response(status);
responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeReadResponse, requestContainer->token, true, &response, &stub_cartridge_read_response__pack, &stub_cartridge_read_response__get_packed_size);
@@ -71,8 +97,19 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer)
//request->cartridgeversion
//request->cartridgedata
//request->cartridgeused
+/*
+ writeLine("Cartridge Request: ");
-
+ writeFloat(request->cartridgeid);
+ writeString(", ");
+ writeFloat(request->cartridgecolor);
+ writeString(", ");
+ writeFloat(request->cartridgeversion);
+ writeString(", ");
+ writeFloat(request->cartridgedata);
+ writeString(", ");
+ writeFloat(request->cartridgeused);
+*/
StubCartridgeWriteResponse response = STUB_CARTRIDGE_WRITE_RESPONSE__INIT;
response.cartridgeid = request->cartridgeid;
@@ -83,7 +120,13 @@ void Stub_CartridgeWriteRequest(MessageContainer* requestContainer)
// response.statusword = OK;
// response.has_statusword = true;
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+/*
+ writeLine("Sending Response: ");
+ writeFloat(response.cartridgeid);
+ writeString(", ");*/
+// writeFloat(response.statusword);
+// WRITELINESTATUS;
Write_status_response(status);
responseContainer = createContainer(MESSAGE_TYPE__StubCartridgeWriteResponse, requestContainer->token, true, &response, &stub_cartridge_write_response__pack, &stub_cartridge_write_response__get_packed_size);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
index f478e9428..51c92ed8c 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
@@ -300,10 +300,10 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
StubExtFlashWriteWordsResponse response = STUB_EXT_FLASH_WRITE_WORDS_RESPONSE__INIT;
- response.address = 0;// alwayes send sddress 0
- response.has_address = true;
+ uint32_t Current_Start_address = ExtFlashWriteBuf(/*0,*/request->n_wordtwrite, request->wordtwrite);// alwayes send sddress 0
- uint32_t Address = ExtFlashWriteBuf(0,request->n_wordtwrite, request->wordtwrite);// alwayes send sddress 0
+ response.address = Current_Start_address;
+ response.has_address = true;
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
@@ -331,6 +331,9 @@ void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer)
response.readbytes = ExtFlashReadBuf(request->address,request->number_of_words);
response.n_readbytes = request->number_of_words;
+ response.address = request->address;
+ response.has_address = true;
+
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_read_words_response__pack, &stub_ext_flash_read_words_response__get_packed_size);