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.
工具与软件:
你好,我是 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