| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #ifndef _ADC_H__
- #define _ADC_H__
- #include "bsp/bsp.h"
- #include "os/os_types.h"
- float adc_vref_compesion(void);
- float adc_5vref_compesion(void);
- /*
- inserted ADC 由timer0 ch3触发,
- 注意:adc所有外部触发都是下降沿触发
- */
- #define ISQ0_OFFSET 0
- #define ISQ1_OFFSET 5
- #define ISQ2_OFFSET 10
- #define ISQ3_OFFSET 15
- #define IL_OFFSET 20
- #define ADC_REGCHAN_SAMPLE_TIME ADC_SAMPLETIME_71_5
- #define ADC_INSERT_SAMPLE_TIME ADC_SAMPLETIME_1_5
- #define ADC_TRIGGER_PHASE ADC12_PREEMPT_TRIG_TMR1CH4
- static void __inline adc_phase_current_read(u8 phases, s32 *v1, s32 *v2) {
- *v1 = (s32)((float)(ADC1->pdt1_bit.pdt1) * adc_5vref_compesion());
- *v2 = (s32)((float)(ADC2->pdt1_bit.pdt1) * adc_5vref_compesion());
- }
- static void __inline adc_current_sample_config(u8 phases) {
- if (phases == PHASE_AB) {
- ADC1->psq_bit.psn4 = U_PHASE_I_CHAN;
- ADC2->psq_bit.psn4 = V_PHASE_I_CHAN;
- }else if (phases == PHASE_AC) {
- ADC1->psq_bit.psn4 = U_PHASE_I_CHAN;
- ADC2->psq_bit.psn4 = W_PHASE_I_CHAN;
- }else {
- ADC1->psq_bit.psn4 = V_PHASE_I_CHAN;
- ADC2->psq_bit.psn4 = W_PHASE_I_CHAN;
- }
- }
- static void __inline adc_disable_ext_trigger(void) {
- ADC1->ctrl2_bit.pcten = FALSE;
- ADC2->ctrl2_bit.pcten = FALSE;
- }
- static void __inline adc_enable_ext_trigger(void) {
- ADC1->ctrl2_bit.pcten = TRUE;
- ADC2->ctrl2_bit.pcten = TRUE;
- }
- static __inline__ void adc_clear_irq_flags(void) {
- /* clear the ADC flag */
- adc_flag_clear(ADC1, ADC_PCCE_FLAG);
- adc_flag_clear(ADC2, ADC_PCCE_FLAG);
- }
- #define adc_update_ext_trigger(trigger) \
- adc_preempt_conversion_trigger_set(ADC1, trigger, TRUE)
- void adc_init(bool mot_ind);
- void adc_start_convert(void);
- void adc_stop_convert(void);
- u16 adc_get_vbus(void);
- u16 adc_get_acc(void);
- u16 adc_get_throttle(void);
- void adc_get_uvw_phaseV(u16 *uvw);
- u16 adc_get_mos_temp(void);
- u16 adc_get_motor_temp(void);
- u16 adc_get_ibus(void);
- u16 adc_get_vref(void);
- void adc_set_vref_calc(float v);
- void adc_vref_filter(void);
- u16 adc_get_5v_ref(void);
- void adc_set_5vref_calc(float v);
- u16 adc_get_throttle2(void);
- u16 adc_get_thro_5v(void);
- u16 adc_get_thro2_5v(void);
- #endif /* _ADC_H__ */
|