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.

[参考译文] TMDSCNCD28P55X:CLA 任务无法由 ADC 执行

Guru**** 2513185 points
Other Parts Discussed in Thread: TMDSCNCD28P55X, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1551375/tmdscncd28p55x-cla-task-not-able-to-trriggerd-by-adc

器件型号:TMDSCNCD28P55X
主题: C2000WARE 中讨论的其他器件

工具/软件:

工具/软件:

TI 团队大家好、

我目前正在使用 TMDSCNCD28P55X 控制卡进行开发。

我要在 CLA 中读取 ADC 结果寄存器。

ADCINT 不会启动 CLA 中的任务 2。 即使如此、任务 8 的初始化也没有发生(感觉如此)。

看到 ADCINTFLG 固定为 1。 显示值的 ADCCresult 寄存器。  下表给出了 CLA 初始化的代码。

谢谢。此致

Ram Singh

    // CLA trigger source 
    AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0; // End of SOC0 will set INT1 flag
    AdccRegs.ADCINTSEL1N2.bit.INT1E = 1;   // Enable INT1 flag
    AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; // Make sure INT1 flag is cleared
    AdccRegs.ADCINTSEL1N2.bit.INT1CONT= 1;
    //
    // Configure memory and initialize the CLA registers
    //
    init_CLA();
    CLA_configClaMemory();
  
    
    void EscController::init_CLA()
{
    #ifdef _FLASH
    #ifndef CMDTOOL // Linker command tool is not used
    
        extern uint16_t Cla1ProgRunStart, Cla1ProgLoadStart, Cla1ProgLoadSize;
        extern uint16_t Cla1ConstRunStart, Cla1ConstLoadStart, Cla1ConstLoadSize;
    
        //
        // Copy the program and constants from FLASH to RAM before configuring
        // the CLA
        //
        memcpy((uint32_t *)&Cla1ProgRunStart, (uint32_t *)&Cla1ProgLoadStart,
            (uint32_t)&Cla1ProgLoadSize);
        memcpy((uint32_t *)&Cla1ConstRunStart, (uint32_t *)&Cla1ConstLoadStart,
            (uint32_t)&Cla1ConstLoadSize );
    
    
    #endif //CMDTOOL
    #endif //_FLASH

    CLATask_init();
}


void EscController::CLA_configClaMemory()
{
    EALLOW;
    //
    // Initialize and wait for CLA1ToCPUMsgRAM
    //
    MemCfgRegs.MSGxINIT.bit.INIT_CLA1TOCPU = 1;
    while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU != 1){};

    //
    // Initialize and wait for CPUToCLA1MsgRAM
    //
    MemCfgRegs.MSGxINIT.bit.INIT_CPUTOCLA1 = 1;
    while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1 != 1){};

    //
    // CLA Program will reside in RAMLS0 and data in RAMLS1, RAMLS2
    //
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 1U;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0U;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0U;

    //
    // Select CLA as the master of RAMLS0, RAMSL1, RAMLS2
    //
    MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1U;
    MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1U;
    MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1U;

    EDIS;   
}

void CLATask_init(){
    //
    // Configure all CLA task vectors
    // On Type-1 and Type-2 CLAs the MVECT registers accept full 16-bit task addresses as
    // opposed to offsets used on older Type-0 CLAs
    //
#pragma diag_suppress=770
    //
    // CLA Task 1
    //
    EALLOW;
    Cla1Regs.MVECT2 = (uint16_t) (&runEscInCla1Task2);
    DmaClaSrcSelRegs.CLA1TASKSRCSEL1.bit.TASK2 = 11;  //Cla runEscInCla1Task2 trrigered by ADCCINT1

    //
    // CLA Task 8
    //
    Cla1Regs.MVECT8 = (uint16_t) (&Cla1Task8);
    DmaClaSrcSelRegs.CLA1TASKSRCSEL1.bit.TASK2 = 0;  //CLA_TRIGGER_SOFTWARE

    //
    // Disable background task
    //
    Cla1Regs._MCTLBGRND.bit.BGEN = 0;
#pragma diag_warning=770
    //
    // Enable the IACK instruction to start a task on CLA in software
    // for all  8 CLA tasks. Also, globally enable all 8 tasks (or a
    // subset of tasks) by writing to their respective bits in the
    // MIER register
    //
    // Enable IACK to start tasks via software
    Cla1Regs.MCTL.bit.IACKE = 1; 
    Cla1Regs.MIER.all = (M_INT8 | M_INT2); 
    EDIS;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    在本用例的 C2000ware 中有一个 driverlib 示例:[C2000ware install]/driverlib/f28p55x/examples/cla/cla_ex5_adc_just_in_time. 您能否将配置与此示例进行比较、或者尝试使用此示例作为起点?

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们已经研究了示例、并将其与此代码相匹配。 我们找不到这方面的任何区别。 此外、很遗憾地发现 TI 在按位修改样式方面没有提供太多的示例。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sayandev:

    我明天会再回复您。 很抱歉耽误你的时间。

    此致、

    Delaney

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此问题已解决。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    HI RAM、

    很高兴听到这个消息。 如果您有任何其他问题、请发布另一个主题。

    此致、

    Delaney