Other Parts Discussed in Thread: MSP430WARE, ENERGYTRACE, MSP-FET
Dear,
Recently, I use MSP430F6736' LCD_C Module to drive an LCD. But the power consumption of LCD is not low enough as expected. The test result as follows:
|
Test condition |
Current |
Unit |
1 |
LPM3,LCD 4-mux mode,charge pump disabled, No connect external LCD |
3.3 |
uA |
2 |
LPM3,LCD 4-mux mode,charge pump disabled, connect external LCD |
12.9 |
uA |
3 |
LPM3,LCD 4-mux mode,charge pump enabled, No connect external LCD |
4.0 |
uA |
4 |
LPM3,LCD 4-mux mode,charge pump enabled, connect external LCD |
23.1 |
uA |
In condition 1 and 3, when no external LCD is connected to F6736, the power consumption is normal range. Based on the manufacturers of LCD, the static current of LCD is 0.46uA and the dynamic current is 2.73uA. So, in condition 3 and 4, when external LCD is connected to F6736, the actual test power consumption when LCD is connected to F6736 exceeds that we expected. Now, please explain the reason that the power consumption is abnormal when LCD is connected to F6736. Thanks!
Note: Schematic and test code as follows.
LCD_C_setPinAsLCDFunctionEx(LCD_C_BASE,
LCD_C_SEGMENT_LINE_0,
LCD_C_SEGMENT_LINE_21);
/*------------------------------------------------------------------------*/
/*---------------------------- set initParams ----------------------------*/
// FRAME_FREQ = 75Hz, LCD Mux 4, LCD_FREQ = 2 * Mux * FRAME_FREQ = 2 * 4 * 75Hz = 600Hz
// LCD_FREQ = ACLK/(LCDDIV+1)/2^LCDPRE = 32768/28/2 = 585, 1/3 Bias
LCD_C_initParam initParams = {0};
initParams.clockSource = LCD_C_CLOCKSOURCE_ACLK;
initParams.clockDivider = LCD_C_CLOCKDIVIDER_28;
initParams.clockPrescalar = LCD_C_CLOCKPRESCALAR_2;
initParams.muxRate = LCD_C_4_MUX;
initParams.waveforms = LCD_C_LOW_POWER_WAVEFORMS;
initParams.segments = LCD_C_SEGMENTS_ENABLED;
LCD_C_init(LCD_C_BASE, &initParams);
// LCD_C_selectBias(LCD_C_BASE, LCD_C_BIAS_1_3); //[Default],1/3 Bias
/*------------------------------------------------------------------------*/
/*------------------------------- VLCD source ----------------------------*/
// VLCD and V2 to V4 is generated internally, V5 is VSS
// Charge pump generated internally at 3.02V, internal bias (V2-V4) generation
LCD_C_setVLCDSource(LCD_C_BASE,
LCD_C_VLCD_GENERATED_INTERNALLY, //[Default]
LCD_C_V2V3V4_GENERATED_INTERNALLY_NOT_SWITCHED_TO_PINS, //[Default]
LCD_C_V5_VSS); //[Default]
/*------------------------------------------------------------------------*/
/*------------------------------ VLCD Voltage ----------------------------*/
//Set VLCD voltage
// LCD_C_setVLCDVoltage(LCD_C_BASE, LCD_C_CHARGEPUMP_DISABLED);
LCD_C_setVLCDVoltage(LCD_C_BASE, LCD_C_CHARGEPUMP_VOLTAGE_3_02V_OR_2_52VREF);
// LCD_C_setVLCDVoltage(LCD_C_BASE, LCD_C_CHARGEPUMP_DISABLED);
// Enable charge pump and select internal reference for it
LCD_C_enableChargePump(LCD_C_BASE);
// LCD_C_selectChargePumpReference(LCD_C_BASE, LCD_C_INTERNAL_REFERENCE_VOLTAGE);//[Default]
// LCD_C_disableChargePump(LCD_C_BASE);
// LCD_C_configChargePump(LCD_C_BASE, LCD_C_SYNCHRONIZATION_ENABLED, 0);
/*------------------------------------------------------------------------*/
/*------------------------------ Clear Memory ----------------------------*/
LCD_C_clearMemory(LCD_C_BASE);
// LCD_C_clearBlinkingMemory(LCD_C_BASE);
/*------------------------------------------------------------------------*/
/*----------------------------- Turn on LCD ------------------------------*/
LCD_C_on(LCD_C_BASE);
for(uint8_t i = 0; i < 10; i++)
{
//all segments is on
LCD_C_setMemory(LCD_C_BASE, i*2+1, 0xFF); //odd Pin,S1, S3,...
LCD_C_setMemory(LCD_C_BASE, i*2, 0xFF); //even Pin,S0,S2,...
}