AW3215A 设置截止电流问题

void CHG_Done_Current_Set(void) 
{
    GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 0);
    for(int itemp = 16; itemp > 1; itemp--); //延时5us左右
    GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 1);
}

当需要对截止电流做调整,先看下代码和SEPC

代码中设置方式如上,

SPEC对截止电流的设置如下:

要知道截止电流的大小,需要知道Ioreg

Ioreg的设置再看下SPEC。

Ioreg = 100mV/Rsns

要看下Rsns,找下原理图

这是当前B项目的SNS电阻 R505  0.1R_1%,但是问了下BOM中是用的0.13的电阻

那就0.13吧。

所以这个Iorge = 0.100v/0.13Ω = 769mA.

这个电流看起来还是比较大的。

根据当前的代码来看用的是20%Iorge = 0.2 * 769 = 153mA的截止电流

当前要求是设置到300mA ,那么试试看 

30%Iorge = 0.3 * 769 = 230.7mA

40%Iorge = 0.4 * 769 = 307.6mA

50%Iorge = 0.5 * 769 = 384.5mA

所以设置40%Iorge比较合适。

当前设置是先将CTRL pin拉低然后延时5us后再拉低

这里先用用示波器验证下,是否因为没有写为volatile导致pin脚低和高之间的延时被“优化”掉了。

先用示波器测下

先用Delay(20ms)测下,果然是20ms。准确

再用默认代码试下这个循环,这里有点问题,因为不是volatile,这个循环我用波形验证了下不起作用

把这个int 类型改为volatile uint32_t 类型,设置为100*1000次循环,用示波器1S去抓取波形,测得

100*1000次循环对应42ms,也就是42*1000us,也就是说1个循环对应0.42us.

默认代码原来是16次循环

则16*0.42us = 6.72us

虽然SPEC中建议高低电平时间设置为2us(1-10us)比较合适,但我还是按照模式的循环做修改

都统一设置为6.72us的延时

    /*
     * 100 * 1000 -> (shi)42ms --> 42* 1000us
     * 1->0.42us
     *
     */
    /*
     * 低6.72us--->高6.72us--->低6.72us--->高6.72us--->低6.72us--->高
     * 40%Ioreg
     */
    GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 0);
	for(volatile uint32_t itemp = 16; itemp > 1; itemp--); //这个无所谓,默认的,是16*0.42 = 6.72us
	GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 1);
	for(volatile uint32_t itemp = 16; itemp > 1; itemp--); //这个无所谓,默认的,是16*0.42 = 6.72us
	GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 0);
	for(volatile uint32_t itemp = 16; itemp > 1; itemp--); //这个无所谓,默认的,是16*0.42 = 6.72us
	GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 1);
	for(volatile uint32_t itemp = 16; itemp > 1; itemp--); //这个无所谓,默认的,是16*0.42 = 6.72us.
	GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 0);
	for(volatile uint32_t itemp = 16; itemp > 1; itemp--); //这个无所谓,默认的,是16*0.42 = 6.72us
	GPIO_PinModeSet(gpioPortC, CHG_CTRL_PIN, gpioModePushPull, 1);

OK,按照SPEC做理论代码书写OK。

可以验证正式的电流了。

1:要验证下正常充电电流是否是769mA.

2: 要验证下截止电流是否是307mA

ps,其实可以先测试下SNS的电阻是不是0.13Ω,哈哈

周一来验证下

猜你喜欢

转载自blog.csdn.net/yangkunhenry/article/details/99702795