should modify DAC usercode

This commit is contained in:
YiChin
2019-10-21 16:53:49 +08:00
parent 26a35a1446
commit fc302d4c75
3 changed files with 52 additions and 18 deletions
@@ -57,4 +57,11 @@ static uint16_t DAC_outputV(uint16_t voltLV) {
#endif
static int32_t User2Real(uint16_t UserCode){
/* transfer usercode to real voltage value (mV) */
return (UserCode - 25000)*2/10;
}
#endif
@@ -542,21 +542,24 @@ static int32_t DecodeResister(uint8_t ADCGainLevel, uint16_t CurrentMeasure, uin
ADCRealVolt = (Correction.ADC_volt.coeff * VoltMeasure + Correction.ADC_volt.offset);
ADCRealVolt = ADCRealVolt / 1e4;
if (INSTRUCTION.ADCGainLevel == GAIN_200R){
resister_32 = (int32_t) ((ADCRealVolt) / (ADCRealCurrent/1e3)); // nV / uA = mV
}
else{
resister_32 = (int32_t) ((ADCRealVolt) / (ADCRealCurrent/1e6)); // nV / uA = mV
}
// NotifyVolt[0] = (uint8_t) (volt_32 >> 24);
// NotifyVolt[1] = (uint8_t) ((volt_32 & 0x00FF0000) >> 16);
// NotifyVolt[2] = (uint8_t) ((volt_32 & 0x0000FF00) >> 8);
// NotifyVolt[3] = (uint8_t) (volt_32 & 0x000000FF);
//
// NotifyCurrent[0] = (uint8_t) (current_32 >> 24);
// NotifyCurrent[1] = (uint8_t) ((current_32 & 0x00FF0000) >> 16);
// NotifyCurrent[2] = (uint8_t) ((current_32 & 0x0000FF00) >> 8);
// NotifyCurrent[3] = (uint8_t) (current_32 & 0x000000FF);
// if (INSTRUCTION.ADCGainLevel == GAIN_200R){
resister_32 = (int32_t) ((ADCRealVolt) / (ADCRealCurrent/1e3)); // nV / uA = mV
// }
// else{
// resister_32 = (int32_t) ((ADCRealVolt) / (ADCRealCurrent/1e6)); // nV / uA = mV
// }
int32_t volt_32 = (int32_t) (ADCRealVolt);
int32_t current_32 = (int32_t) (ADCRealCurrent);
NotifyVolt[0] = (uint8_t) (volt_32 >> 24);
NotifyVolt[1] = (uint8_t) ((volt_32 & 0x00FF0000) >> 16);
NotifyVolt[2] = (uint8_t) ((volt_32 & 0x0000FF00) >> 8);
NotifyVolt[3] = (uint8_t) (volt_32 & 0x000000FF);
NotifyCurrent[0] = (uint8_t) (current_32 >> 24);
NotifyCurrent[1] = (uint8_t) ((current_32 & 0x00FF0000) >> 16);
NotifyCurrent[2] = (uint8_t) ((current_32 & 0x0000FF00) >> 8);
NotifyCurrent[3] = (uint8_t) (current_32 & 0x000000FF);
NotifyImpedance[0] = (uint8_t) (resister_32 >> 24);
NotifyImpedance[1] = (uint8_t) ((resister_32 & 0x00FF0000) >> 16);
@@ -15,8 +15,32 @@ static void ZT_Plot() {
uint8_t SPICurrent[SPI_ADC_SIZE]={0}, SPIVolt[SPI_ADC_SIZE]={0};
static uint8_t VoltCurrentSwitch = 0;
AutoGainReadCurrent(SPICurrent);
ReadVolt(SPIVolt);
int32_t volt_32 = 0;
int32_t current_32 = 0;
int32_t resister_32 = 0;
current_32 = AutoGainReadCurrent(SPICurrent);
// volt_32 = ReadVolt(SPIVolt);
resister_32 = volt_32 / current_32;
// CurrentMeasure = (uint16_t) (SPICurrent[0] << 8) | (uint16_t) (SPICurrent[1]);
// VoltMeasure = (uint16_t) (SPIVolt[0] << 8) | (uint16_t) (SPIVolt[1]);
volt_32 = User2Real(INSTRUCTION.VoltConstant);
NotifyVolt[0] = (uint8_t) (volt_32 >> 24);
NotifyVolt[1] = (uint8_t) ((volt_32 & 0x00FF0000) >> 16);
NotifyVolt[2] = (uint8_t) ((volt_32 & 0x0000FF00) >> 8);
NotifyVolt[3] = (uint8_t) (volt_32 & 0x000000FF);
NotifyCurrent[0] = (uint8_t) (current_32 >> 24);
NotifyCurrent[1] = (uint8_t) ((current_32 & 0x00FF0000) >> 16);
NotifyCurrent[2] = (uint8_t) ((current_32 & 0x0000FF00) >> 8);
NotifyCurrent[3] = (uint8_t) (current_32 & 0x000000FF);
NotifyImpedance[0] = (uint8_t) (current_32 >> 24);
NotifyImpedance[1] = (uint8_t) ((current_32 & 0x00FF0000) >> 16);
NotifyImpedance[2] = (uint8_t) ((current_32 & 0x0000FF00) >> 8);
NotifyImpedance[3] = (uint8_t) (current_32 & 0x000000FF);
// set ADC GAIN
// if(INSTRUCTION.ResisterMeter == RESISTER_METER_LARGE){
@@ -69,7 +93,7 @@ static void ZT_Plot() {
// }
// decode ADC value and put it into notify buffer
DecodeResister(INSTRUCTION.ADCGainLevel, CurrentMeasure, VoltMeasure);
// DecodeResister(INSTRUCTION.ADCGainLevel, CurrentMeasure, VoltMeasure);
// Real_Resister = DecodeADCValue(INSTRUCTION.ADCGainLevel, ADC_CH_CURRENT, spi_ADC_rxbuf);
}