Просмотр исходного кода

sleep for cs1100&ml5238

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 лет назад
Родитель
Сommit
54696381bb

+ 2 - 0
Application/bsp/cs1180.c

@@ -269,6 +269,7 @@ int cs1180_change_gain(int current){
 }
 
 void cs1180_adc_shutdown(void){
+	cs1180_cs(0);
 	CS1180_PWR_ENABLE(0);
 	spi1_deinit();
 	_cs1180_ready = 0;
@@ -322,6 +323,7 @@ float cs1180_adc_sample(int *valide)
 	a >>= 4;
 	if (data[2] == 0xFF) {
 		if (cs1180_low_ff_count ++ >= 10) {
+			cs1180_low_ff_count = 0;
 			cs1180_may_error ++;
 		}
 	}else {

+ 1 - 6
Application/bsp/mcu_power_sleep.c

@@ -57,14 +57,11 @@ static void wait_for_enter_dsleep(void){
 
 static int pre_deepsleep(void){
 	systick_close();
-	cs1180_cs(0);
-	CS1180_PWR_ENABLE(0);
 	shark_uart_deinit(SHARK_UART0);
 	shark_uart_deinit(SHARK_UART1);
 	wdog_reload();
 	ml5238_power_save(1); //call, before spi0_deinit
-	spi0_deinit();
-	spi1_deinit();
+	cs1180_adc_shutdown();
 	AT24CXX_DeInit();
 	gd32_adc_deinit();
 	if (AUX_VOL_IS_OPEN()) {
@@ -93,10 +90,8 @@ static void post_deepsleep(void){
 	SystemInit();
 	system_clock_config();
 	SystemCoreClockUpdate();
-	spi0_init();
 	ml5238_power_save(0);
 	gd32_adc_init();
-	CS1180_PWR_ENABLE(1);
 	cs1180_adc_init();
 	shark_uart_init(SHARK_UART0);
 	shark_uart_init(SHARK_UART1);

+ 2 - 0
Application/bsp/ml5238.c

@@ -249,7 +249,9 @@ void ml5238_power_save(int save){
 		ML5238_IMON_DISABLE();
 		ml5238_write(ML5238_POWER, POWER_PSV);
 		ml5238_irq_enable(1);  //enable charger detect irq, to wakeup bms when charger insert
+		spi0_deinit();
 	}else {
+		spi0_init();
 		ml5238_write(ML5238_POWER, 0);
 	}
 }

+ 2 - 2
Application/bsp/spi.c

@@ -46,7 +46,7 @@ void spi1_init(void){
 	gpio_mode_af(GPIOB, GPIO_PUPD_NONE, GPIO_PIN_13|GPIO_PIN_15);
 	gpio_mode_af(GPIOB, GPIO_PUPD_PULLUP, GPIO_PIN_14);
 	gpio_af_set(GPIOB, GPIO_AF_0, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
-	gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
+	gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13|GPIO_PIN_15);
 
 	spi_i2s_deinit(SPI1);
 	spi_parameter_struct spi_init_struct;
@@ -57,7 +57,7 @@ void spi1_init(void){
     spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;
     spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;
     spi_init_struct.nss                  = SPI_NSS_SOFT;
-    spi_init_struct.prescale             = SPI_PSC_256 ;
+    spi_init_struct.prescale             = SPI_PSC_128 ;
     spi_init_struct.endian               = SPI_ENDIAN_MSB;
     spi_init(SPI1, &spi_init_struct);