Procházet zdrojové kódy

1. cs1180 统计和打印错误
2. cs1180 去掉0xFFFFFF的判断

Signed-off-by: huhui <huhui@sharkgulf.com>

huhui před 5 roky
rodič
revize
7eb18dac3b
2 změnil soubory, kde provedl 28 přidání a 3 odebrání
  1. 27 3
      Application/bsp/cs1180.c
  2. 1 0
      Application/bsp/cs1180.h

+ 27 - 3
Application/bsp/cs1180.c

@@ -273,18 +273,23 @@ void cs1180_adc_shutdown(void){
 	spi1_deinit();
 	_cs1180_ready = 0;
 }
-
+static int cs1180_may_error = 0;
+void cs1180_log(void){
+	sys_error("cs1180 error %d\n", cs1180_may_error);
+}
 float cs1180_adc_sample(int *valide)
 {
+	static int cs1180_low_ff_count = 0;
 	uint8_t data[3] = {0,0,0};
 	int a = 0;
-	int retry = 5;
 	while (IS_CS1180_NOT_READY()); //µ±drdy Ϊ¸ßʱ£¬²»¶ÁÈ¡Êý¾Ý
 
+#if 0
+	int retry = 5;
 	while(retry-- >= 0) {
 		cs1180_cs(0);
 		cs1180_send_cmd(CS1180_RDATA);
-		delay_us(100);
+		delay_us(60);
 		data[0] = cs1180_read_data(0xFF);
 		data[1] = cs1180_read_data(0xFF);
 		data[2] = cs1180_read_data(0xFF);
@@ -304,6 +309,25 @@ float cs1180_adc_sample(int *valide)
 		sys_error("cs1180 adc is not valide\n");
 		*valide = 0;
 	}
+#endif
+
+	cs1180_cs(0);
+	cs1180_send_cmd(CS1180_RDATA);
+	delay_us(60);
+	data[0] = cs1180_read_data(0xFF);
+	data[1] = cs1180_read_data(0xFF);
+	data[2] = cs1180_read_data(0xFF);
+	cs1180_cs(1);
+	a = (data[0] << 16) | (data[1] << 8) | data[2];
+	a >>= 4;
+	if (data[2] == 0xFF) {
+		if (cs1180_low_ff_count ++ >= 10) {
+			cs1180_may_error ++;
+		}
+	}else {
+		cs1180_low_ff_count = 0;
+	}
+	
 	if (a & 0x80000) {
 		a = ~a;
 		a = - (a&0x7FFFF);

+ 1 - 0
Application/bsp/cs1180.h

@@ -17,6 +17,7 @@ int cs1180_adc_set_gain(int gain);
 void cs1180_sys_offset_calibrate(void);
 float cs1180_adc_sample(int *valide);
 int cs1180_change_gain(int current);
+void cs1180_log(void);
 
 #endif /* _CS1180_H__ */