Аккумулятор

Правильное отображение уровня заряда

Пока находится в разработке и исследованиях. Лично у меня пока работает так: В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h значения R1 = 1, R2 = 3.

#define R1 1 //100
#define R2 3 //150 //kohm
#define RESOLUTION (R1+R2)*7500/(4*R2)
#define COMPENSATION 1024*(200+50) //mV

Как-то отображает, но скорее всего показывает погоду на луне, а не заряд батареи. Надо разбираться.


Индикация режима заряда аккумулятора (анимация)

Поскольку в аккумуляторе нет информационного вывода от контроллера, для определения режима заряда предлагается следующий вариант:

В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h нужно закоментировать строку #define CHARG_STAT_PIN

//#define CHARG_STAT_PIN

Далее в драйвере /soc_src/drv/udc/udc.c добавить проверки с помощью команд препроцессора на определенность CHARG_STAT_PIN в функции MidCheckBatState():

unsigned int MidCheckBatState(void)
{
if (!BAT_GetDCDetect())
    return (BAT_NOT_CHARGING);

#ifdef CHARG_STAT_PIN

    if (__gpio_get_pin(CHARG_STAT_PIN) == CHARG_STAT_LEVEL)

#else

    if( read_battery() < BAT_MAX_VOLT )

#endif
        return (BAT_CHARGING);
    else
        return (BAT_FULL);
}


В функции init_udc() вызов gpio_set_dir(CHARG_STAT_PIN, 0, 0); так же обрамить в условие:

#ifdef CHARG_STAT_PIN

    gpio_set_dir(CHARG_STAT_PIN, 0, 0);

#endif

Далее, в файле /inc/midware.h необходимо подобрать значение BAT_MAX_VOLT. В серии экспериментов было выбрано значение 3950

#define BAT_MAX_VOLT 3950

Теперь, при воткнутом USB-кабеле, если в Windows сделать "Безопасное отключение устройства", будет показываться анимация заряда батареи на экране. При этом если нажать любую клавишу, произойдет возврат на рабочий стол MiniOS, и маленький индикатор заряда в правом верхнем углу так же будет показывать анимацию заряда. Как только уровень заряда дойдет до 3950 mV анимация остановиться (хотя на уровне железа на аккумулятор все равно будет подаваться напряжение).

Comments