|
|
@@ -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;
|
|
|
}
|