Estoy intentando almacenar valores "long int" en la memoria ( SM28VLT32 ) A través de la comunicación SPI. Estoy usando el compilador IAR. La memoria es de 16 bits de acceso de lectura o escritura. Me gustaría almacenar valores de más de 16 bits como "3245672341" y algunas veces valores flotantes. Ej: "5008.456". Puedo convertir float a int, entonces el entero será mayor que el valor de 16 bits. Tengo que almacenar una matriz de [6] valores "long int" cada minuto a la memoria. No puedo almacenar valores enteros largos en la memoria, ya que tiene acceso de lectura y escritura de 16 bits.
Estoy pensando en convertir "long int" a "string"! ¿Alguna sugerencia sobre cómo puedo almacenar esos valores y debo usar menos memoria?
Actualmente puedo almacenar un valor entero de 16 bits utilizando el código siguiente.
unsigned int sampledata[5]= {34586, 43877,53780, 64879,1};
FlashPointer = 2;
int StoreToFlash(unsigned int sampledata[], int StartAddress); // Strore Sample to flash
StoreToFlash(sampledata, FlashPointer); //function calling
int StoreToFlash(long int sampledata[], int StartAddress)
{
int iCtr;
int ErrorCode = 0;
int address = StartAddress;
// Write to flash
for(iCtr=0;iCtr<5;iCtr++)
{
ErrorCode = Flash_Write(address++, sampledata[iCtr]);
if((ErrorCode &0x45)!= 0)
{
Flash_ClearError();
}
}
return ErrorCode;
}
int Flash_Write(int Address, long int Data) //Flash wirte function
{
int error ;
int data0 = 0;
// Make chip select Low
Flash_Set_CS_Status(0);
// Send Command ID 0x17
data0 = Flash_SPI_SendByte(0x17);
// Send Address Byte 3
data0 = Flash_SPI_SendByte((Address & 0xFF0000) >> 16);
// Send Address Byte 2
data0 = Flash_SPI_SendByte((Address & 0xFF00) >> 8);
// Send Address Byte 1
data0 = Flash_SPI_SendByte(Address & 0xFF);
// Send Data Byte MSB
data0 = Flash_SPI_SendByte((Data & 0xFF00) >> 8);
// Send Data Byte LSB
data0 = Flash_SPI_SendByte(Data & 0xFF);
// Send Dummy Byte
data0 = Flash_SPI_SendByte(0);
// Make Chip select high
Flash_Set_CS_Status(1);
}
How can i store sampledata[5]= {3456782676, 3890.345, 5035.675, 1, 64534}?