Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430G2553: How to reduce power consumption while using micro SD card.

Part Number: MSP430G2553

I am using micro SD card to log reading from four force sensors connected to the microcontroller (MSP430G2553). Controller logs reading to the SD card every 15 minutes and goes to sleep. I am using 1000 mAh battery, which is lasting over a week. Is it possible to reduce the power consumption as to make it last over a month.  

(#) Even if the microcontroller is sleeping for 15 minute, SD card is continuously consuming power. 

(#) It takes couple of mA to write.

Help with any suggestion to reduce to power consumption drastically. 

Schematic is shown below, code is inserted after the schematic. 

#include <pfatfs.h>
#include <pffconf.h>

/*-----------------------------------------------------------------------
   Copy the file LOG.txt from this file's location to the root of the 
   SD-Card.
 
 */

#include "SPI.h" 
#include "pfatfs.h"
#define cs_pin      8             // chip select pin 
#define read_buffer 128             // size (in bytes) of read buffer 
//#define LOG_DELAY   200          // 5000ms -> 5sec

unsigned short int bw, br;
char buffer[read_buffer];
int rc;
DIR dir;				/* Directory object */
FILINFO fno;			/* File information object */
uint32_t sensor1;
uint32_t sensor2; 
uint32_t sensor3; 
uint32_t sensor4;
uint8_t StringLength = 0;
char buf[50];
uint32_t counter = 0;
uint32_t AccStringLength = 0;
unsigned long time;
int count=0;
int d=0;
int c=1;
uint32_t t1 = 0;
uint32_t t2 = 0;
uint32_t t3 = 0;
uint32_t t4 = 0;

void setup()

{
 analogReference(INTERNAL2V5);
    pinMode(9, OUTPUT);
    pinMode(10,OUTPUT);
   Serial.begin(9600);                
   FatFs.begin(cs_pin);              
   Serial.print(" \nSerial output \n\r"); 
}
         
/* Stop with dying message */         
void die ( int pff_err	)
{
   Serial.println();
   Serial.print("Failed with rc=");
   Serial.print(pff_err,DEC);
   for (;;) ;
}
void printDec(uint32_t ui) 
{
   Serial.print(ui/10, DEC);
   Serial.print(".");
   Serial.print(ui%10, DEC);
}
void loop()
{

	if(c==1)
	{
		digitalWrite(10,HIGH);
		delay(300);
		digitalWrite(10,LOW);
		delay(300);
	    c++;
	}

  sensor1 = analogRead(2);
  delay(5); 
  t1 = sensor1;
   
  sensor2 = analogRead(3);
  delay(5);  
  t2 = sensor2;
    
  sensor3 = analogRead(5);
  delay(5);  
  t3 = sensor3;
  
  sensor4 = analogRead(6);
  delay(5);  
  t4 = sensor4;
    
if(d==5)
{{ 
   rc = FatFs.open("LOG.TXT");
   if (rc) die(rc);
   delay(5);
   bw=0;
  sprintf(buf,"%lu Output is %lu,%lu,%lu,%lu\r\n",counter,t1,t2,t3,t4);
   counter++;
   StringLength =  strlen(buf);
   Serial.println(buf);        
 
   rc = FatFs.lseek(  AccStringLength );
   if (rc) die(rc);
   AccStringLength =  AccStringLength + 1024;
   
   rc = FatFs.write(buf,StringLength,&bw);
     
   if (rc) die(rc);
   rc = FatFs.write(0,0,&bw);   //Finalize write
   if (rc) die(rc);
   rc = FatFs.close();         //Close file
        if (rc) die(rc);
        
  d=0;
}}
{
  d=d+1;
} 
digitalWrite(9,LOW);
sleep(7500);
digitalWrite(9,HIGH);

}

**Attention** This is a public forum