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.

[参考译文] TMS320F280039C:ADC SOC 更改

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1406779/tms320f280039c-adc-soc-change

器件型号:TMS320F280039C
主题中讨论的其他器件:TMS320F280039

工具与软件:

你好,我是 SOLUM 的 Sangmo Kim。

我使用 TMS320F280039 MCU 和 ADC 10通道。

所有 ADC SOC 都使用 EPWM1_SOCA。

我只想更改一个 ADC 通道的 SOC。

我是否可以 在以下情况中仅更改一个 ADC 通道的 SOC?

-。 ADC_TRIGGER_EPWM1_SOCA:55khZ

-。  ADC_TRIGGER_EPWM8_SOCA :550kHz

   ->   

谢谢。

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

    您好!

    关于这一主题的专家目前不在办公室,直到星期二9/3,所以请期待一个延迟的答复。 对此造成的不便、我深表歉意。

    此致、
    Delaney

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

    尊敬的 Sangmo:

    根据您与标头共享的有限代码段、我假设只有 ADCA 进行转换、并且所有 SOC (0..3或更多)都是使用55khz 采样时间进行映射。  现在、第一次转换的 SOC0更改为550kHz 的更高转换率。  不过、如果所有其他 SOC 也映射到 ADC 通道10、这是可以的、那么我看不到这个点。  我缺少其他信息、无法理解您为什么要尝试仅修改 SOC0的采样率。  您可以分享更多有关 SOC 到通道映射的详细信息以及采样率发生变化的原因。

    此致、

    Joseph

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

    您好、Joseph。

    感谢您的答复。

    我想快速感应输出电压、使其具有超过55kHz 的采样时间。

    我使 CLA 仅用于输出电压检测。

    所有 ADC SOC 均设置为 EPWM1。 ADC 每55kHz 运行一次。

    我将 EPWM8设置为550kHz、不使用 ePWM 输出。

    CLA 触发源使用 EPWM8。

    我只想将输出电压检测 SOC 更改为 EPWM8形式 EPWM1。

    如果我可以更改输出电压检测 SOC、我认为用于输出电压检测的 ADC 每550kHz 在 CLA 中运行一次。

    有可能吗? 您可以查看以下设置吗?

    -。 CLA 设置

    void PSFB_HAL_setupCLA (void)

    //
    //设置 CLA 以注册中断
    //
    #if ADC_CLA // 240828 CLA
    memcpy ((uint32_t *)&Cla1ProgRunStart、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize );
    memcpy ((uint32_t *)&Cla1ConstRunStart、(uint32_t *)&Cla1ConstLoadStart、
    (uint32_t)&Cla1ConstLoadSize );

    //首先将存储器分配给 CLA
    //
    MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS0、MEMCFG_LSRAMMASTER_CPU_CLA1);
    MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS1、MEMCFG_LSRAMMASTER_CPU_CLA1);
    MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS2、MEMCFG_LSRAMMASTER_CPU_CLA1);
    MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS3、MEMCFG_LSRAMMASTER_CPU_CLA1);
    MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS4、MEMCFG_LSRAMMASTER_CPU_CLA1);
    //MemCfg_setLSRAMMasterSel (MEMCFG_SECT_LS5、MEMCFG_LSRAMMASTER_CPU_CLA1);

    MemCfg_setCLAMemType (MEMCFG_SECT_LS0、MEMCFG_CLA_MEM_DATA);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS1、MEMCFG_CLA_MEM_DATA);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS2、MEMCFG_CLA_MEM_PROGRAM);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS3、MEMCFG_CLA_MEM_PROGRAM);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS4、MEMCFG_CLA_MEM_PROGRAM);
    //MemCfg_setCLAMemType (MEMCFG_SECT_LS5、MEMCFG_CLA_MEM_PROGRAM);

    //
    //抑制#770-D 从指针到较小整数的转换
    // CLA 地址范围是16位、因此地址传递给 MVECT
    //寄存器将位于低64KW 地址空间中。 转动警告
    //在向 MVECT 分配地址之后返回
    //
    #pragma diag_suppress = 770

    cla_mapTaskVector (cla1_base、cla_MVECT_1、(uint16_t)&Cla1Task1);
    //cla_mapTaskVector (cla1_base、cla_MVECT_2、(uint16_t)&Cla1Task2);
    //cla_mapTaskVector (cla1_base、cla_MVECT_3、(uint16_t)&Cla1Task3);
    //cla_mapTaskVector (cla1_base、cla_MVECT_4、(uint16_t)&Cla1Task4);
    //cla_mapTaskVector (cla1_base、cla_MVECT_5、(uint16_t)&Cla1Task5);
    //cla_mapTaskVector (cla1_base、cla_MVECT_6、(uint16_t)&Cla1Task6);
    //cla_mapTaskVector (cla1_base、cla_MVECT_7、(uint16_t)&Cla1Task7);

    #pragma diag_warning = 770

    cla_enableIACK (CLA1_base);
    cla_enableTasks (CLA1_base、CLA_TASKFLAG_1);

    CLA_setTriggerSource (CLA_task_1、PSFB_PWM8_CLA_INT);
    PSFB_HAL_enablePWMInterruptGeneration_CLA (PSFB_PWM8_CLA_base);

    -。 CLA 函数

    __attribute__(( interrupt )) void Cla1Task1 ( void )

    GPIO_writePin (AC_FAIL、1);

    filter1Result[n_CLA++]=(int32_t) PSFB_LVBUS_FB;

    如果(n_CLA >= MAX_SAMPLE_CLA)

    N_CLA=0;
    }

    GPIO_writePin (AC_FAIL、0);
    PSFB_HAL_clearPWMInterruptFlag (PSFB_PWM8_CLA_BASE);
    }

    - ADC SOC 触发设置

    PSFB_HAL_setupADCSOCTrigger_CLA (PSFB_PWM8_CLA_BASE);// 240828 CLA

    - EPWM8设置

    void PSFB_HAL_setupCLAPWM (uint32_t base1、uint16_t PWM_PERIOD_TICKs)

    EALLOW;

    ePWM_setPeriodLoadMode (base1、ePWM_PERIOD_DIRECT_LOAD);
    EPWM_setTimeBasePeriod (base1、PWM_PERIOD_TICKs - 1);
    EPWM_setTimeBaseCounter (base1、2);
    EPWM_setPhaseShift (base1、2);
    EPWM_setTimeBaseCounterMode (base1、EPWM_COUNTER_MODE_UP);
    ePWM_setClockPrescaler (base1、ePWM_clock_divider_1、ePWM_HSCLOCK_divider_1);

    EPWM_enablePhaseShiftLoad (base1);

    HRPWM_setSyncPulseSource (base1、HRPWM_PWMSYNC_SOURCE_COMPC_UP);
    EPWM_setCounterCompareValue (base1、EPWM_COUNTER_COMPARE_C、
    PWM_PERIOD_TICKs - 5);

    EDIS;
    }

    金相模

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

    尊敬的 Sangmo:

    将 CLA 任务映射到 EPWM8中断。  还会将 SOC0映射到使用 EPWM8SOC 触发。  如果 ADCIN10的转换时间+ CLA 任务持续时间(还包括读取 ADCIN10的结果)小于1/550kHz、则应该可以这样做。

    此致、

    Joseph