adc
Diff: ADE7912.h
- Revision:
- 1:5796bdddf29c
- Parent:
- 0:e5d06036dd60
- Child:
- 2:f480200c8600
diff -r e5d06036dd60 -r 5796bdddf29c ADE7912.h --- a/ADE7912.h Wed Oct 21 20:45:11 2020 +0000 +++ b/ADE7912.h Tue Oct 27 12:13:16 2020 +0000 @@ -50,85 +50,93 @@ #define ADE7912_DALAY_TIME 2 #define ADE7912_WAITING_TIME 5 * ADE7912_DALAY_TIME -struct ADE7912_BrushRead_Data -{ - int32_t IWV; - int32_t V1WV; - int32_t V2WV; - uint16_t ADC_CRC; - uint8_t STATUS0; - uint16_t CNT_SNAPSHOT; +#define ADE7912_TEMPGAIN_WITH_3K3_BW 8.72101e-5f +#define ADE7912_TEMPGAIN_WITH_2K_BW 8.21015e-5f +#define ADE7912_CONST_TEMPOS 306.47f + +#define ADE7912_IWV_TRANSLATE_COEF 5.87344e-9f +#define ADE7912_VWV_TRANSLATE_COEF 9.39369e-8f + +struct ADE7912_BrushRead_Data { + int32_t IWV; + int32_t V1WV; + int32_t V2WV; + uint16_t ADC_CRC; + uint8_t STATUS0; + uint16_t CNT_SNAPSHOT; }; -struct ADE7912_Inst -{ - SPI_HandleTypeDef *spi; - uint8_t phasesEnable[4]; - GPIO_TypeDef *CS_ports[4]; - uint16_t CS_pins[4]; - struct ADE7912_BrushRead_Data *phasesData[4]; - uint8_t version[4]; +struct ADE7912_Inst { + SPI_HandleTypeDef *spi; + uint8_t phasesEnable[4]; + GPIO_TypeDef *CS_ports[4]; + uint16_t CS_pins[4]; + struct ADE7912_BrushRead_Data *phasesData[4]; + uint8_t version[4]; + float tempos[4]; + float tempGain[4]; + GPIO_TypeDef *DReadyPort; + uint16_t DReadyPin; + IRQn_Type EXTIinterrupt; }; -enum ADE7912_Phases -{ - PHASE_A = 0, - PHASE_B, - PHASE_C, - COM +enum ADE7912_Phases { + PHASE_A = 0, + PHASE_B, + PHASE_C, + COM }; -enum ADE7912_DataUpdateFreq -{ - F_8KHZ, - F_4KHZ, - F_2KHZ, - F_1KHZ +enum ADE7912_DataUpdateFreq { + F_8KHZ, + F_4KHZ, + F_2KHZ, + F_1KHZ }; -enum ADE7912_Bandwidths -{ - BW_3K3HZ, - BW_2KHZ +enum ADE7912_Bandwidths { + BW_3K3HZ, + BW_2KHZ }; -enum ADE7912_CLKOUT_Functionality -{ - CLKOUT, - DREADY +enum ADE7912_CLKOUT_Functionality { + CLKOUT, + DREADY }; -struct ADE7912_Phase_Settings -{ - GPIO_TypeDef *CS_port; - uint16_t CS_pin; - enum ADE7912_DataUpdateFreq freq; - enum ADE7912_Bandwidths bandwidth; +struct ADE7912_Phase_Settings { + GPIO_TypeDef *CS_port; + uint16_t CS_pin; + enum ADE7912_DataUpdateFreq freq; + enum ADE7912_Bandwidths bandwidth; + enum ADE7912_CLKOUT_Functionality clkoutFunc; }; -void ADE7912_WriteToReg(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, uint8_t addr, uint8_t *buf, uint8_t length); -void ADE7912_ReadFromReg(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, uint8_t addr, uint8_t *buf, uint8_t length); + void ADE7912_UpdateData(struct ADE7912_Inst *ade); -int ADE7912_GetPhaseData(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, struct ADE7912_BrushRead_Data *data); struct ADE7912_Inst* New_ADE7912(SPI_HandleTypeDef *spi); + void ADE7912_PhaseInit(struct ADE7912_Inst *ade, struct ADE7912_Phase_Settings *settings, enum ADE7912_Phases phase); - void ADE7912_EnablePhase(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); void ADE7912_DisablePhase(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); void ADE7912_ResetPhase(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); -void ADE7912_SetDataUdateFreq(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, enum ADE7912_DataUpdateFreq freq); +void ADE7912_SetDataUpdateFreq(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, enum ADE7912_DataUpdateFreq freq); void ADE7912_SetPwrConverterEnabled(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, _Bool enabled); void ADE7912_SetTempEnabled(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, _Bool enabled); void ADE7912_SetBandwidth(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, enum ADE7912_Bandwidths bandwidth); void ADE7912_SetCLKOUTFunctionality(struct ADE7912_Inst *ade, enum ADE7912_Phases phase, enum ADE7912_CLKOUT_Functionality functionality); -uint8_t ADE7912_GetADCVersion(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); void ADE7912_LockConfigurationRegisters(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); void ADE7912_UnlockConfigurationRegisters(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); +uint8_t ADE7912_GetADCVersion(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); +float ADE7912_GetVoltage(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); +float ADE7912_GetCurrent(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); +float ADE7912_GetTemp(struct ADE7912_Inst *ade, enum ADE7912_Phases phase); + #endif