Problema de corriente de corte del conjunto 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);
}

Cuando necesite ajustar la corriente de corte, primero mire el código y SEPC

El método de configuración en el código es el anterior,

SPEC establece la corriente de corte de la siguiente manera:

 

Para conocer la corriente de corte, necesita conocer Ioreg

Mire SPEC para la configuración de Ioreg.

Ioreg = 100mV / Rsns

Para ver Rsns, busque el diagrama esquemático

Esta es la resistencia SNS R505 0.1R_1% del proyecto B actual, pero pregunté sobre la resistencia 0.13 utilizada en la lista de materiales

Luego 0.13.

Entonces este Iorge = 0.100v / 0.13Ω = 769mA.

Esta corriente parece ser relativamente grande.

De acuerdo con el código actual, se usa la corriente de corte del 20% Iorge = 0.2 * 769 = 153mA

El requisito actual es establecerlo en 300 mA y luego intentar 

30% Iorge = 0.3 * 769 = 230.7mA

40% Iorge = 0.4 * 769 = 307.6mA

50% Iorge = 0.5 * 769 = 384.5mA

Así que establecer un 40% de Iorge es más apropiado.

 

La configuración actual es primero bajar el pin CTRL y luego retrasar 5us antes de bajarlo

Primero use un osciloscopio para verificar si el retardo entre el pin bajo y el alto está "optimizado" porque no está escrito como volátil.

Primera medida con osciloscopio

Primero medido con Delay (20ms), resultó ser de 20ms. preciso

Intente este bucle nuevamente con el código predeterminado, hay un problema aquí, porque no es volátil, verifiqué que este bucle no funciona con la forma de onda

Cambie este tipo int a volátil tipo uint32_t, configúrelo en 100 * 1000 ciclos, use un osciloscopio 1S para capturar la forma de onda y mida

100 * 1000 ciclos corresponden a 42ms, que es 42 * 1000us, lo que significa que 1 ciclo corresponde a 0.42us.

El código predeterminado resulta ser de 16 ciclos.

Entonces 16 * 0.42us = 6.72us

Aunque se recomienda en SPEC establecer el tiempo de nivel alto y bajo en 2us (1-10us), es más apropiado, pero todavía lo modifico según el ciclo del modo

Todo configurado a 6.72us de retraso

    /*
     * 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, escriba el código teórico de acuerdo con SPEC OK.

Se puede verificar la corriente oficial.

1: Para verificar si la corriente de carga normal es 769mA.

2: Para verificar si la corriente de corte es 307mA

ps, puedes probar si la resistencia del SNS es 0.13Ω primero, jaja

Ven a verificar el lunes

Supongo que te gusta

Origin blog.csdn.net/yangkunhenry/article/details/99702795
Recomendado
Clasificación