Merge remote-tracking branch 'origin/Elite_14re_demo' into Elite_14re_demo

This commit is contained in:
alan
2019-08-16 18:07:14 +08:00
3 changed files with 31 additions and 19 deletions
@@ -81,7 +81,7 @@ static int32_t DAC_to_realV(uint16_t DACcode)
int32_t volt_32 = DACcode*10e7;
int16_t coeff = (-1896), offset = 64893275;//*10e7
RealV = ((int32_t)(volt) - offset)/coeff;
// RealV = ((int32_t)(volt) - offset)/coeff;
RealV = RealV/10e7;
return RealV;
@@ -590,6 +590,7 @@ static bool update_ins_rec_buffer();
// ADC function
static void ADC_write(uint8_t ADCin);
static void ADC_read(uint8_t *ADCdata);
static void ADC_test_read(uint8_t *ADCdata); // for auto shifting
static void ADCGainControl(uint8_t ADCLevel);
static void ADCChannelSelect(uint8_t ADCChannel);
@@ -181,30 +181,41 @@ static void VT_Plot() {
DecodeADCValue(ADCGain, ADC_CH_VOLT, spi_ADC_rxbuf);
}
static uint8_t ADC_overflow(uint8_t gain, uint16_t rawdata){
if(gain == 0){
if( (0x5f75 <= rawdata) && (rawdata <= 0x5fb2) ){
return 1;
}
}
else if(gain == 1){
if( ((0x5fb2 < rawdata) && (rawdata < 0x60d6)) || ((0x5e56 < rawdata) && (rawdata < 0x5f75) )){
return 1;
};
}
return 0;
}
static void IT_Plot() {
// ADC gain is don't care when measuring voltage
uint8_t ADCGain = 1;
uint8_t ADCGain = 0;
ADC_read(spi_ADC_rxbuf);
for(int i=0 ; i<3 ; i++){
ADCGain = i;
uint16_t rawdata = ((spi_ADC_rxbuf[0] & 0xff00 ) | (spi_ADC_rxbuf[1] & 0x00ff));
// read ADC volt
ADCGainControl(ADCGain);
ADCChannelSelect(ADC_CH_CURRENT);
CPUdelay(16000);
ADC_read(spi_ADC_rxbuf);
// shift ADC gain level
if( (0x5f75 <= rawdata) && (rawdata <= 0x5fb2) ){
ADCGain = 0;
uint16_t rawdata = ((uint16_t) (spi_ADC_rxbuf[0] << 8 )) | (spi_ADC_rxbuf[1]);
if(ADC_overflow(ADCGain, rawdata)){
break;
}
}
else if(((0x5fb2 < rawdata) && (rawdata < 0x60d6)) || ((0x5e56 < rawdata) && (rawdata < 0x5f75))) {
ADCGain = 1;
}
else {
ADCGain = 2;
}
// read ADC volt
ADCGainControl(ADCGain);
ADCChannelSelect(ADC_CH_CURRENT);
CPUdelay(16000);
ADC_read(spi_ADC_rxbuf);
// decode ADC value and put it into notify buffer
DecodeADCValue(ADCGain, ADC_CH_CURRENT, spi_ADC_rxbuf);