Explorar el Código

debug cs1180 的错误

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui hace 5 años
padre
commit
18056f3ba4
Se han modificado 2 ficheros con 17 adiciones y 9 borrados
  1. 1 1
      Application/app/pc_message.c
  2. 16 8
      Application/bsp/cs1180.c

+ 1 - 1
Application/app/pc_message.c

@@ -13,7 +13,7 @@ int process_pc_message(can_frame_t *frame, int len){
 		uint8_t result = 0;
 		if (len != sizeof(cali_cmd_t)) {
 			current_calibrate();//just for debug
-			cs1180_read_all_regs();
+			cs1180_adc_init();
 			result = 1;
 		}else {
 			cali_cmd_t * cmd = (cali_cmd_t *)frame->data;

+ 16 - 8
Application/bsp/cs1180.c

@@ -184,7 +184,7 @@ void cs1180_read_all_regs(void){
 	}	
 }
 
-
+static int save_reg_errors = 0;
 int cs1180_adc_set_gain_cali(int gain){
 	int count = 0;
 	do {
@@ -198,8 +198,8 @@ int cs1180_adc_set_gain_cali(int gain){
 		}
 		delay_us(20);
 	}while(!_cs1180_check_gain(gain));
-	
-	cs1180_self_gain_calibrate();
+	delay_us(50);
+	cs1180_self_calibrate();
 	count = 0;
 	do {
 		cs1180_sys_offset_calibrate();
@@ -208,13 +208,21 @@ int cs1180_adc_set_gain_cali(int gain){
 		}
 		delay_us(20);
 	}while(count++ <= 5);
-	sys_debug("cs1180 cali sys offset try count %d\n", count);
 	if (count > 5){
 		return 0;
 	}
 	_cs1180_gain = 1 << gain;
-	delay_us(50);
-	cs1180_save_regs(gain);
+	count = 0;
+	do {
+		delay_us(50);
+		cs1180_save_regs(gain);
+		uint8_t *data = _cali_gain_regs + 16 * gain;
+		uint32_t offset = data[9]<<16 | data[8] << 8 | data[7];
+		if ((offset != 0) && (offset != 0xffffff)){
+			break;
+		}
+		save_reg_errors ++;
+	}while(count ++ >= 5);
 	return 1;
 }
 
@@ -232,9 +240,9 @@ void cs1180_adc_init(void){
 	do  {
 		_cs1180_ready = 0;
 		CS1180_PWR_ENABLE(0);
-		delay_us(10 * 1000);
+		delay_us(50 * 1000);
 		CS1180_PWR_ENABLE(1);
-		delay_us(20 * 1000);
+		delay_us(50 * 1000);
 		spi1_init();
 		delay_us(10);
 		_cs1180_ready = cs1180_adc_set_gain_cali(CS1180_GAIN_128X);