*update hardware status content.

This commit is contained in:
Gatsby Van
2024-01-31 16:05:59 +08:00
parent 56d0fd80d0
commit aba91e02b0
@@ -1119,32 +1119,66 @@ void Phy_UpdateHwSate(PHY_INST *instPtr)
ASSERT(instPtr != NULL);
uint32_t rawData;
#ifndef EMULATION
// -- Update Chip voltage, unit mV
float evalData;
// -- Update Ps voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VCCPINT);
instPtr->hwSate.spVolt = (uint16_t)(XAdcPs_RawToVoltage(rawData) * 1000);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spPsVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update Ps aux voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VCCPAUX);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spPsAuxVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update DDR voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VCCPDRO);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spDdrVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update PL voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VCCINT);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spPlVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update PL aux voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VCCAUX);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spPlAuxVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update Bram voltage, unit mV
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_VBRAM);
evalData = XAdcPs_RawToVoltage(rawData);
instPtr->hwSate.spBramVolt = (evalData > VOLTAGE_MAX) ? UINT8_MAX : (uint8_t) evalData/VOLTAGE_LSB;
// -- Update Chip temperature, unit 0.01 deg
rawData = XAdcPs_GetAdcData(&(instPtr->hwXadc), XADCPS_CH_TEMP);
instPtr->hwSate.spTemp = (uint16_t)(XAdcPs_RawToTemperature(rawData) * 100);
// FIXME: Chip status determine.
instPtr->hwSate.chipSt = 0;
evalData = XAdcPs_RawToTemperature(rawData);
instPtr->hwSate.spTemp = (evalData > TEMPERATURE_MAX)
? INT8_MAX
: ((evalData < TEMPERATURE_MIN) ? INT8_MIN : (int8_t) evalData/TEMPERATURE_LSB);
// TODO: is OK?
instPtr->hwSate.isSpOk = true;
#else
instPtr->hwSate.spVolt = 0;
instPtr->hwSate.spTemp = 0;
instPtr->hwSate.chipSt = 0;
instPtr->spPsVolt = 0;
instPtr->spPsAuxVolt = 0;
instPtr->spDdrVolt = 0;
instPtr->spPlVolt = 0;
instPtr->spPlAuxVolt = 0;
instPtr->spBramVolt = 0;
instPtr->spTemp = 0;
instPtr->isSpOk = true;
#endif
/*** Voltage and Status ***/
rawData = PhyRead(instPtr, ANT_STATUS);
// -- Update Antenna Status Code: 0xAA - normal, 0x55 - error
instPtr->hwSate.antSt = ((rawData & ANT_STATUS_CODE_MASK) == 0) ? 0xAA : 0x55;
// -- Update Antenna Voltage Status: 1 - normal, 0 - error
// [0] - ANT voltage status
// [2] - RF voltage status
// [4] - NIL voltage status
instPtr->hwSate.antVolt = (rawData & ANT_STATUS_ANT_VOLT_MASK) ? 0x01 : 0x00;
instPtr->hwSate.antVolt |= (rawData & ANT_STATUS_RF_VOLT_MASK) ? 0x04 : 0x00;
instPtr->hwSate.antVolt |= (rawData & ANT_STATUS_NIL_VOLT_MASK) ? 0x10 : 0x00;
// [6] - Antenna status
instPtr->hwSate.antVolt = (rawData & ANT_STATUS_ANT_VOLT_MASK != 0) ? 0x01 : 0x00;
instPtr->hwSate.antVolt |= (rawData & ANT_STATUS_RF_VOLT_MASK!= 0) ? 0x04 : 0x00;
instPtr->hwSate.antVolt |= (rawData & ANT_STATUS_NIL_VOLT_MASK!= 0) ? 0x10 : 0x00;
instPtr->hwSate.antVolt |= (rawData & ANT_STATUS_CODE_MASK!= 0) ? 0x40 : 0x00;
/*** Temperature and Lock Status ***/
rawData = PhyRead(instPtr, RF_STATUS);
@@ -1165,9 +1199,19 @@ void Phy_UpdateHwSate(PHY_INST *instPtr)
// [7:4] - Channel 2 MGC
// [11:8] - Channel 3 MGC
// [15:12] - Channel 4 MGC
instPtr->hwSate.antMgc = (rawData & RF_MGC_CH1_MASK);
instPtr->hwSate.antMgc |= (rawData & RF_MGC_CH2_MASK) >> 4;
instPtr->hwSate.antMgc |= (rawData & RF_MGC_CH3_MASK) >> 8;
instPtr->hwSate.antMgc |= (rawData & RF_MGC_CH4_MASK) >> 12;
SysMonitor_UpdateHardwareStatus(&(instPtr->hwSate));
instPtr->hwSate.antMgc0 = (rawData & RF_MGC_CH1_MASK);
instPtr->hwSate.antMgc0 |= (rawData & RF_MGC_CH2_MASK) >> 4;
instPtr->hwSate.antMgc1 = (rawData & RF_MGC_CH3_MASK) >> 16;
instPtr->hwSate.antMgc1 |= (rawData & RF_MGC_CH4_MASK) >> 24;
// Determin if antenna is ok.
if(instPtr->hwSate.antVolt != 0x55 //01010101
||instPtr->hwSate.antPll != 0x15) // 00010101
{
instPtr->hwSate.isSpOk = false;
}
else
{
instPtr->hwSate.isSpOk = true;
}
}