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

cs1180 sys calibarate 重试5次

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 лет назад
Родитель
Сommit
c58fdbd47f
3 измененных файлов с 18 добавлено и 2 удалено
  1. 0 1
      Application/app/sox/measure.c
  2. 1 0
      Application/bsp/bsp.c
  3. 17 1
      Application/bsp/cs1180.c

+ 0 - 1
Application/app/sox/measure.c

@@ -126,7 +126,6 @@ void measure_adc_init(void){
 	gd32_adc_init();
 	current_calibrate();
 	cs1180_adc_init();
-	set_log_level(MOD_SYSTEM, L_debug);
 }
 
 static float get_current_by_ml5238(void){

+ 1 - 0
Application/bsp/bsp.c

@@ -60,6 +60,7 @@ void bsp_init(void){
 	system_clock_config(); //after dcdc open, MCU can run on full speed
 	SystemCoreClockUpdate();
 	gpio_init();
+	set_log_level(MOD_SYSTEM, L_debug);
 	shark_uart_init(SHARK_UART0);
 #if (CONFIG_BOARD_TYPE==SHARK_BOARD_SP700)	
 	shark_uart_init(SHARK_UART1);

+ 17 - 1
Application/bsp/cs1180.c

@@ -147,6 +147,14 @@ static void _cs1180_adc_set_gain(int gain){
 	cs1180_cs(1);
 }
 
+static int cs1180_check_cali_offset(void){
+	uint32_t offset = 0;
+	cs1180_cs(0);
+	spi_read_reg(0x07, (uint8_t *)&offset, 3);
+	cs1180_cs(1);
+	return offset != 0;
+}
+
 int cs1180_adc_set_gain_cali(int gain){
 	int count = 0;
 	do {
@@ -168,8 +176,16 @@ int cs1180_adc_set_gain_cali(int gain){
 	}
 	_cs1180_gain = 1 << gain;
 	cs1180_self_gain_calibrate();
+
 	delay_us(10*1000);
-	cs1180_sys_offset_calibrate();
+	count = 0;
+	do {
+		cs1180_sys_offset_calibrate();
+		if (cs1180_check_cali_offset()){
+			break;
+		}
+	}while(count++ <= 5);
+	sys_debug("cs1180 cali sys offset try count %d\n", count);
 	cs1180_dumy_read(gain);
 	return 0;
 }