Hi,
I am trying to charge 160mAh Li-Ion with PTX130W and PTX30W EVBs.
I set the Constant Current to 160mA
and Charge Termination to 4.1V.
when I analyzed the CSV data from the GUI,
I saw that the Current reduced before Vbat reacted to Vtrem..
also the GUI indicated that the charging mode is CC.
Can you please assist how to set th OEM/on runing parameters so i could charge the battery with real CC mode?
Hi There,Thank you for posting your question online.
00u12yl3js54ftqzn358 said:Can you please assist how to set th OEM/on runing parameters so i could charge the battery with real CC mode?
Please keep in mind, that OEM parameters can be changes up to 100 times. After this it is no longer supported.Please refer on the PTX130W Product page, under Design & Development you can find the Software & Tools- Software:It contains the OEMFlashTool.pyzYou can use this tool to update the OEM parameters:You can also do it via the SDKAs an example, PTX30Example.c
void PTX30W_Example_Main(void) { ptxStatus_t status; /** * Enable the battery emulator circuit, that provides power to the PTX30W. * Note: This is only required if the the PTX-EVK PCB is used without a real battery! * Put SW2 into position "Emu" if you don't have a battery attached to the PCB. */ ptx30w_BatteryEmulator_Init(); /** * Initializes the PTX30W interface and verifies the HW revision of the PTX30W. * Attention: This API can fail with two error codes: * - A "ptxStatus_WrongHardware" error means that the hardware version is too old or the PTX30W does not have * a valid firmware image flashed. * - A "ptxStatus_InterfaceError" means the host MCU could not receive the I2C_ACK. There are three main reasons * why this can happen: * 1) The wrong I2C address was passed to ptx30w_Init(). * 2) SCL or SDA is not connected correctly. * 3) PTX30W is still in shipping mode. Get the device out of shipping mode by pressing at least 5 seconds on the SM-Button. */ status = ptx30w_Init(0x4B, false, false); ptxDeviceInformation_t device_information; memset(&device_information, 0, sizeof(ptxDeviceInformation_t)); if(ptxStatus_Success == status) { /** * Retrieve information about the hardware version and firmware version. */ status = ptx30w_GetDeviceInformation(&device_information); } /** * A firmware version of zero, indicates that the device is not * completely setup --> OEM parameters need to be set. */ if((ptxStatus_Success == status) && (0 == device_information.OemValid)) { /** * Configure the OEM parameters (this can only be done once). */ ptxOemConfigParam_t ptx30Config; status |= ptx30wOemConfig_Init(&ptx30Config); /** Initialize the struct. */ status |= ptx30wOemConfig_SetBcICharge(&ptx30Config, 200u, 30u); /** Set charge current to ~200mA in WPT phase, ~30mA for NFC phase. */ status |= ptx30wOemConfig_SetBcVTerm(&ptx30Config, ptx30wVTerm_4V18); /** Set the termination voltage to 4.18V. */ status |= ptx30wOemConfig_SetBcVRecharge(&ptx30Config, ptx30wVRecharge_3V87); /** Set recharge voltage to 3.87V. */ status |= ptx30wOemConfig_SetBcVTrickle(&ptx30Config, ptx30wVTrickle_3V0); /** Set trickle charge voltage to 3.0V. */ status |= ptx30wOemConfig_SetBcITerm(&ptx30Config, 20u); /** Set termination current to 20mA. */ status |= ptx30wOemConfig_SetBcIChargeCold(&ptx30Config, ptx30wIChargePercent_100); /** Keep 100% charging current for temp. range of 0C < T < +10C. */ status |= ptx30wOemConfig_SetBcIChargeHot(&ptx30Config, ptx30wIChargePercent_100); /** Keep 100% charging current for temp. range of +45C < T < +60C. */ status |= ptx30wOemConfig_SetBcVTermCold(&ptx30Config, ptx30wVTermReduction_None); /** Do not reduce termination voltage for temp. range of 0C < T < +10C. */ status |= ptx30wOemConfig_SetBcVTermHot(&ptx30Config, ptx30wVTermReduction_None); /** Do not reduce termination voltage for temp. range of +45C < T < +60C. */ status |= ptx30wOemConfig_SetVdMcuMode(&ptx30Config, ptx30wVdMcuMode_Output_3V3); /** Set VdMcu to 3.3V. */ status |= ptx30wOemConfig_SetBcLoBatOffEn(&ptx30Config, 1u); /** Enable Low Battoff. */ status |= ptx30wOemConfig_SetBcEnable(&ptx30Config, 1u); /** Enable battery charging. */ status |= ptx30wOemConfig_SetISensorThresh(&ptx30Config, ptx30wIThreshSel_2mA); /** Set the current threshold to 2mA. */ status |= ptx30wOemConfig_SetVddCThLow(&ptx30Config, 3600u); /** Sets the minimum regulation voltage to 3.6V. */ status |= ptx30wOemConfig_SetVdBatOffsetHigh(&ptx30Config, 600u); /** Power regulation VDBAT offset, high (600mV). */ status |= ptx30wOemConfig_SetVdBatOffsetLow(&ptx30Config, 125u); /** Power regulation VDBAT offset, low. (125mV). */ status |= ptx30wOemConfig_SetI2cAddress(&ptx30Config, 0x4B); /** Set I2C Address to 0x4B. */ status |= ptx30wOemConfig_SetIrqPolarity(&ptx30Config, ptx30wIrqPolarity_ActiveHigh); /** Configure IRQ line to be active high. */ status |= ptx30wOemConfig_SetAdjWptDurationInt(&ptx30Config, ptx30wWptDuration_128ms); /** Set the adjust charging cycle duration to 128ms. */ status |= ptx30wOemConfig_SetTcmWptDurationInt(&ptx30Config, ptx30wWptDuration_512ms); /** Set the trickle charge cycle duration to 512ms. */ status |= ptx30wOemConfig_SetCcmWptDurationInt(&ptx30Config, ptx30wWptDuration_4096ms); /** Set the constant current charge cycle duration to 4s. */ status |= ptx30wOemConfig_SetCvmWptDurationInt(&ptx30Config, ptx30wWptDuration_2048ms); /** Set the constant voltage charge cycle duration to 2s. */ status |= ptx30wOemConfig_SetTcmTimeout(&ptx30Config, 0u); /** Disable timeout. */ status |= ptx30wOemConfig_SetCcmTimeout(&ptx30Config, 0u); /** Disable timeout. */ status |= ptx30wOemConfig_SetCvmTimeout(&ptx30Config, 0u); /** Disable timeout. */ status |= ptx30wOemConfig_SetCapWtInt(&ptx30Config, ptx30wWptDuration_16384ms); /** The Poller will disable its RF-field for this specified duration when the listener's battery is fully, before polling again. */ status |= ptx30wOemConfig_SetGpio0Config(&ptx30Config, ptx30wGpio0Config_StartUpCircuit);/** Configure GPIO0 to control the start-up circuit. */ status |= ptx30wOemConfig_SetGpio1Config(&ptx30Config, ptx30wGpio1Config_WlcpCtrl); /** Set GPIO1 to be controlled by the WLC- Poller. */ status |= ptx30wOemConfig_SetBcUvlo(&ptx30Config, ptx30wBcUvlo_3V0); /** Set UVLO to 3.0V. */ status |= ptx30wOemConfig_SetWptReqSel(&ptx30Config, ptx30wWptReqSel_BcControlled); /** WPT Request controlled by battery charger. */ status |= ptx30wOemConfig_SetNfcResistiveMod(&ptx30Config, ptx30wResistorSetting_17Ohm); /** Resistor value of modulator set to 17 Ohm in communication phase during modulation. */ status |= ptx30wOemConfig_SetNfcResistiveSet(&ptx30Config, ptx30wResistorSetting_27Ohm); /** Resistor value of modulator set to 27 Ohm in communication phase when idle. */ status |= ptx30wOemConfig_SetWptResistiveMod(&ptx30Config, ptx30wResistorSetting_Disabled);/** Resistor value of modulator set to 'open' in WPT phase during modulation. */ status |= ptx30wOemConfig_SetWptResistiveSet(&ptx30Config, ptx30wResistorSetting_Disabled);/** Resistor value of modulator set to 'open' in WPT phase when idle. */ status |= ptx30wOemConfig_SetNtcMode(&ptx30Config, ptx30wNtcMode_Period1ms); /** Sets the read out interval of the NTC to 1ms. */ status |= ptx30wOemConfig_SetLimiterVoltage(&ptx30Config, ptx30wLimiterVoltage_4v8); /** Set the limiter voltage to 4.8 Volts. This setting defines maximum voltage on VDBUFC. Set this value approx. 500mV higher than the termination voltage. */ /** * An "invalid command" error, indicates that the OEM parameters were already * written to the device. */ if(ptxStatus_Success == status) { status = ptx30w_WriteOemParameters(&ptx30Config); } }
Thank you for the answer,
I know how to use the OEM tool,
please provide me the parameters for real 160mA CC charging, the stay constant till Vbat is 4.1V.
thanks
Uri
Hi Uri,Thank you for the reply.Let me check on this with the NFC team and I will get back to you.Best Regards,OV_Renesas
Hi Uri,Please find below the answer from the NFC team:
Have a look at BcIChargeWpt in the OEM flash tool and ptx30wOemConfig_SetBcICharge() in the SDK/on page 13-14 of the integration note.There is also BclChargeNfc what determines the desired charging current during the communication phase. (160mA would be already quite high during communication phase in a way that the high power transfer via the field might make it tricky to have proper communication modulated on that field at the same time)
Although it seems to me rather unlikely, temperature control could play a roleMaybe you set the values of BcIChargeHot and had a rather bad timing/temperature increase.
If all this is what you used already to config/took into account, it would be handy as a next step to have the CSV file and your config.Best Regards,OV_Renesas