TMS320F28379D: CLA中无法访问外设

Part Number: TMS320F28379D
Other Parts Discussed in Thread: MOTORWARE, LAUNCHXL-F28379D, DRV8305-Q1EVM, BOOSTXL-DRV8305EVM, C2000WARE

Hi,Ti工程师 

   在使用TMS320F28379D这颗DSP的CLA时,发现无法在Cla1Task1 中访问GPIO / EMIF /ADC /EPWM  需要您的帮助。

   Cla1Task1 代码如下:

__interrupt void Cla1Task1 ( void )
{
    GPIO_writePin(27U,1);  //设置GPIO高电平
    adc0           =  ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0);// 读取A0
    adc1           =  ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1);//读取A1
    g_MCtrl_M1.cel_fbk +=1;//测试
    fCoeffs+=0.01;//测试

    if(fCoeffs>5000){
        fCoeffs=0;
    }

//PWM测试
    EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, (uint16_t)fCoeffs);
    EPWM_setCounterCompareValue(EPWM2_BASE, EPWM_COUNTER_COMPARE_A, (uint16_t)fCoeffs);
    EPWM_setCounterCompareValue(EPWM3_BASE, EPWM_COUNTER_COMPARE_A, (uint16_t)fCoeffs);

    GPIO_writePin(27U,0);//设置GPIO低电平
}  

GPIO在初始化时已经将归属设置成CLA,代码如下:

    GPIO_setPinConfig(GPIO_27_GPIO27);                 //设置引脚配置
    GPIO_setMasterCore(27U, GPIO_CORE_CPU1_CLA1);//用于CLA
    GPIO_setPadConfig(27U, GPIO_PIN_TYPE_STD);//推挽
    GPIO_setDirectionMode(27U, GPIO_DIR_MODE_OUT);//输出模式         

对于EMIF的归属,我依旧选择的EMIF_MASTER_CPU1_G,代码如下:

   EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU1_G);

因为EMIF和EPWM我准备完全放到CLA中执行,请问是否将这些引脚的归属也设定成GPIO_CORE_CPU1_CLA1 ?? 

另外,在本次实例中,无法读取ADC的值。代码: adc0           =  ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0);  adc0应该实时进行刷新,但实际情况adc0=0。截图如下:image.png

寄存器截图如下:

image.png

可以看到,A0 A1寄存器时读取到值的。所以问题点在adc0和adc1上,对这两个值的定义如下:    #pragma DATA_SECTION(adc0,"CLADataLS0");
    int16_t adc0 = 0;
    #pragma DATA_SECTION(adc1,"CLADataLS0");
    int16_t adc1 = 0;  

                                                                                 谢谢。

  • 将GPIO / EPWM / ADC 操作代码改成寄存器,能读取和操作数据。但是EMIF 还没有解决,未找到相关设置

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 你好,我在国外论坛看到之前有讨论这个问题,内容:EMIF1  可以在CPU1 和 CPU2 访问,但是无法在CLA中访问。EMIF2可以在CPU1 和 CPU1_CLA访问,无法 在CPU2中访问。如果是这个案例正确,那么我在CPU1_CLA中无法访问EMIF1就是正确的。另外,我需要一份CLA的cmd内存规划资料。目前在CLA中,我只能通过宏定义函数运行。普通函数无法运行,我需要通过cmd重新划分区域,将函数在运行前搬运到RAM中。我尝试过将函数放到CLADataLS0 区域,但是这样做似乎不对,该区域我定义的是数据区,所以我需要重新划分一个区域作为函数放置位置。谢谢

  • 您好

    那么我在CPU1_CLA中无法访问EMIF1

    正确。请参阅数据手册中的“外设寄存器内存映射”。

    CLA可以访问LSx RAMS,如下表所示:

  • 谢谢。请问 LAUNCHXL-F28379D + BOOSTXL-DRV8305EVM  的代码在哪个目录下呢?C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\drv8305-q1evm_revA\f28x  和C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\boostxldrv8305_revA    这两个目录下没有LAUNCHXL-F28379D 的支持包。但是,C:\ti\C2000Ware_MotorControl_SDK_5_04_00_00\solutions 该目录没有相关的支持。