|
|
@@ -204,14 +204,18 @@ void cs1180_adc_init(void){
|
|
|
_cs1180_ready = _cali_gain_regs[16 * CS1180_NOW_GAIN] == CS1180_NOW_GAIN;
|
|
|
}
|
|
|
|
|
|
-int _cs1180_read_gain(void){
|
|
|
- uint8_t data[] = {0xff, 0xff, 0xff};
|
|
|
+int _cs1180_check_gain(int gain){
|
|
|
+ uint8_t data[13] = {0};
|
|
|
cs1180_cs(0);
|
|
|
cs_delay();
|
|
|
- spi_read_reg(0x0, data, 3);
|
|
|
+ spi_read_reg(0x0, data, 13);
|
|
|
cs1180_cs(1);
|
|
|
-
|
|
|
- return data[0];
|
|
|
+ for (int i = 0; i < 13; i++){
|
|
|
+ if (data[i] != _cali_gain_regs[16 * gain + i]){
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
int cs1180_adc_set_gain_online(int gain){
|
|
|
@@ -230,13 +234,13 @@ int cs1180_adc_set_gain_online(int gain){
|
|
|
cs1180_cs(1);
|
|
|
delay_us(10);
|
|
|
|
|
|
- if (_cs1180_read_gain() == gain){
|
|
|
+ if (_cs1180_check_gain(gain)){
|
|
|
break;
|
|
|
}
|
|
|
count ++;
|
|
|
}while(count <= 5);
|
|
|
if (count >= 5) {
|
|
|
- if (_cs1180_read_gain() != gain){
|
|
|
+ if (_cs1180_check_gain(gain) != 1){
|
|
|
sys_error("change gain error!!!\n");
|
|
|
return -1;
|
|
|
}
|
|
|
@@ -252,7 +256,7 @@ int cs1180_adc_set_gain_online(int gain){
|
|
|
int cs1180_change_gain(int current){
|
|
|
if (abs(current) < 4000){ //4.5
|
|
|
return cs1180_adc_set_gain_online(CS1180_GAIN_128X);
|
|
|
- }else if (abs(current) < 16 * 1000){ //18
|
|
|
+ }else if (abs(current) < 12 * 1000){ //18
|
|
|
return cs1180_adc_set_gain_online(CS1180_GAIN_32X);
|
|
|
}/*else if (abs(current) < 48 * 1000){ //72
|
|
|
return cs1180_adc_set_gain_online(CS1180_GAIN_8X);
|