This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

各位大师,有人了解过电机控制FCL例程里面ADC初始化的程序吗,帮忙解释一下,谢谢

void FCL_initADC_3In(MOTOR_Vars_t *gsMC, const uint32_t adcBaseW,
const uint32_t adcResultBaseU, ADC_PPBNumber adcU_PPBNum,
const uint32_t adcResultBaseV, ADC_PPBNumber adcV_PPBNum,
const uint32_t adcResultBaseW, ADC_PPBNumber adcW_PPBNum )
{
uint16_t adcPPBCurU, adcPPBCurV, adcPPBCurW;

adcPPBCurU = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcU_PPBNum * 2);
adcPPBCurV = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcV_PPBNum * 2);
adcPPBCurW = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcW_PPBNum * 2);

gsMC->curA_PPBRESULT = adcResultBaseU + adcPPBCurU;
gsMC->curB_PPBRESULT = adcResultBaseV + adcPPBCurV;
gsMC->curC_PPBRESULT = adcResultBaseW + adcPPBCurW;

gsMC->curA_resultBase = adcResultBaseU;
gsMC->curB_resultBase = adcResultBaseV;
gsMC->curC_resultBase = adcResultBaseW;

gsMC->curA_PPBNumber = adcU_PPBNum;
gsMC->curB_PPBNumber = adcV_PPBNum;
gsMC->curC_PPBNumber = adcW_PPBNum;

gsMC->AdcIntFlag = (union ADCINTFLG_REG *)(adcBaseW + ADC_O_INTFLG);

return;
}

  • 这些都是指针变量。 指针被广泛用于使程序模块化。 由于它们都具有相同的结构,因此可以在一处进行基本的寄存器地址定义,然后使用这些指针变量将其传递给各种函数。

    adcPPBCurU ===> ADC 连接相电流 U 的 PPB 地址读取

    gsMC->curA_PPBRESULT ===> 保存当前 A PPBRESULT 寄存器地址的指针

    gsMC->curA_resultBase ===> 持有与相电流 A 相关的结果寄存器基地址的指针

    gsMC->curA_PPBNumber ===> 存储与相电流 A 相关的 ADC 的 PPB 编号

  • 您说的指针这些我都明白,我需要知道的是:

    (1)这里的表达式乘以2,是什么意思呢

    adcPPBCurU = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcU_PPBNum * 2);
    adcPPBCurV = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcV_PPBNum * 2);
    adcPPBCurW = (uint16_t)(ADC_PPBxRESULT_OFFSET_BASE +(uint16_t)adcW_PPBNum * 2);

     (2)因为FOC控制,所需要的输入为三相电流,是由上面的那些量转换得到的呢?

     (3)上面的程序是FCL(快速电流环路)里面的,我自己用寄存器配置好的那些底层函数,是否能够利用FCL库函数呢,怎么更好的对接这一部分呢?

  • 1) 这个寄存器大小是两个内存位置,所以下一个寄存器地址将在这两个之后。

    2) &3) 是的,可以。 源代码都是开放的,您需要编辑函数来解决这个问题。我们没有任何注释可供参考。 由于源代码都是开放的,您能够根据自己的喜好对其进行调整。

  • 您好!请问TI公司有关于电机库函数的指导文档吗,个人感觉库函数较为晦涩难懂,要是有库文件的指导文档,能否发我一份,谢谢!

  • 抱歉,没有这样的文档。