Hello,
I've designed a custom board using the VS1000D for a consumer product under development. It's working well except at power off there's a large transient on the audio outputs and it causes a large current spike from the audio power amplifier, triggering our lithium battery overcurrent protection circuit. If I could set VIO to zero volts a short period before calling RealPowerOff that should disable our amplifier (shutdown pin is connected to VIO) and prevent the transient from causing a large current spike. Theoretically, setting the volume to minimum might also work. Wondering if there's any way to minimize this transient in firmware? I've tried variations of the following in the power off routine but nothing has worked so far.
#ifdef USE_POWERBUTTON
if (PERIP(SCI_STATUS) & SCISTF_REGU_POWERBUT) {
voltages[voltIoPlayer] = 0; /*1.7V*/
PowerSetVoltages(&voltages[voltCoreUSB]);
volumeReg = 0x0000;
SetVolume();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
BusyWait10();
PERIP(GPIO0_CLEAR_MASK) = GPIO0_SD_POWER;
RealPowerOff();
}
#endif
Thank you for any help you might be able to provide.
VS1000 power off transient.
Re: VS1000 power off transient.
Hi,
Turns out I was updating the IO supply voltage register but then setting the USB voltage. Corrected code that's working is below:
#ifdef USE_POWERBUTTON
if (PERIP(SCI_STATUS) & SCISTF_REGU_POWERBUT) {
volumeReg = 0xC0C0;;
SetVolume();
voltages[voltIoPlayer] = 0; /*1.7V*/
PowerSetVoltages(&voltages[voltCorePlayer]);
PERIP(GPIO0_CLEAR_MASK) = GPIO0_SD_POWER;
{int i;
for (i=0; i<100; i++){
BusyWait10();
}
}
RealPowerOff();
}
#endif
There's now no turn off transient. Can you please tell me if there's a way to turn the VIO regulator off altogether though? 1.7V as a minimum is workable but this is a consumer product and if we can save the cost of a level detector to sense 1.7V or 3.3V IO power to determine when to mute the amplifier that would be great. I don't have any outputs left on the VS1000 to activate the amplifier mute line directly.
Thank you,
Ed
Turns out I was updating the IO supply voltage register but then setting the USB voltage. Corrected code that's working is below:
#ifdef USE_POWERBUTTON
if (PERIP(SCI_STATUS) & SCISTF_REGU_POWERBUT) {
volumeReg = 0xC0C0;;
SetVolume();
voltages[voltIoPlayer] = 0; /*1.7V*/
PowerSetVoltages(&voltages[voltCorePlayer]);
PERIP(GPIO0_CLEAR_MASK) = GPIO0_SD_POWER;
{int i;
for (i=0; i<100; i++){
BusyWait10();
}
}
RealPowerOff();
}
#endif
There's now no turn off transient. Can you please tell me if there's a way to turn the VIO regulator off altogether though? 1.7V as a minimum is workable but this is a consumer product and if we can save the cost of a level detector to sense 1.7V or 3.3V IO power to determine when to mute the amplifier that would be great. I don't have any outputs left on the VS1000 to activate the amplifier mute line directly.
Thank you,
Ed
Re: VS1000 power off transient.
In vs1000 there is a common shutdown bit for all regulators. Also, in vs1000 the crystal oscillator works from IOVDD, so turning off IOVDD would mean the chip can never start up under software control anymore. The same applies to xRESET, which is referenced to IOVDD, and would (or would not) assert if IOVDD is lost.
Note that the transient on audio outputs doesn't really come from IOVDD. The analog is powered from AVDD.
You could turn off the analog drivers (set SCISTF_ANADRV_PDOWN), so that LEFT/RIGHT/CBUF start to float first (but they'll still bias around the RCAP voltage).
Can you share the schematics (pdf)? (Send to support@vlsi.fi if you can't share it publically.)
Note that the transient on audio outputs doesn't really come from IOVDD. The analog is powered from AVDD.
You could turn off the analog drivers (set SCISTF_ANADRV_PDOWN), so that LEFT/RIGHT/CBUF start to float first (but they'll still bias around the RCAP voltage).
Can you share the schematics (pdf)? (Send to support@vlsi.fi if you can't share it publically.)
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook