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