我遇到的问题是关于电机控制应用中的总线电压感测。电压变量的模数转换后我无法获得正确的电压值。我发布了以下代码。
#define ADC_CMD_VDC CFPR_EOQ|CFPR_CAL|CFPR_RFIFO(0)|CFPR_CHANNEL(28)
EQADC_A.CFPR[0].R = CFPR_EOQ|CFPR_RFIFO(0)|CPFR_ADC_REG_VALUE(((T_U32)1<<15)|1)|CFPR_ADC_REG_CTRL;
eqADC_Set_Mode(&EQADC_A, 0, CFIFO_CON
tiNUOUS_SCAN_MODE | CFIFO_RISING_MODE,CFIFO_ETPUB28_TRIGGER);
EQADC_A.IDCR0.B.CFFE0 = 1;//Enable CFIFO Fill DMA or Interrupt request
EQADC_A.IDCR0.B.CFFS0 = 1;//生成DMA请求将数据从系统内存移动到CFIFOx
EQADC_A.IDCR0.B.CFFE1 = 1;//启用 CFIFO 填充 DMA 或中断请求。
EQADC_A.IDCR0.B.CFFS1 = 1;
adc->CFCR0.B.SSE0 = 1;
{ (T_U32) &ADC_CMD_T0[0], (T_U32) &EQADC_A.CFPR[0].R, DMA_SIZE_32BIT, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, /* 第 0 组*/
{ (T_U32) &EQADC_A.RFPR[0].R, (T_U32)0xC3FC9000, DMA_SIZE_32BIT, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 },
T_U32 *Vdcdebug = 0xC3FC9000;
*Vdc = ((*Vdcdebug)*0.07202f)*1.0f-19.8f ;
当我将输入电压从 10v~60v 调整时,数字值总是浮动变化大约 8200 然后跟随。请看图 1 显示。我检查了进入 MCU 的输入电压是否正确,它会跟随输入高电压.也检查了寄存器,变化趋势和数值与下图一致。
更重要的是,当我用手慢慢转动电机时,Vdc 似乎发生了很大的变化。我从 freemaster GUI 获得的图片如附图 2 所示。
总的来说,Vdcdebug 数字值似乎没有跟随输入电压的变化。谁能告诉我下一步需要关注的重点在哪里?谢谢!