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.

[参考译文] MSPM0G1507:迁移

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1519599/mspm0g1507-migration

部件号:MSPM0G1507
Thread 中讨论的其他器件: MSPM0G3507SysConfig

工具/软件:

你(们)好  

目前、我正在使用 采用 MSP430微控制器的 PMP7647_RevC 设计解决方案。 我计划迁移到 MSPM0G1507、  

对于所面临的问题、我需要一些帮助。  

ADC 相关:

我们没有使用 DMA。 对64个样本求平均值以进行计算。

PWM:  

TIMA_TIMER_MODE_PWM_DEAD_Band_LP_MSPM0G3507_nortos_ticlang 经过修改以适合充电应用。

我 面临着电池充电电流中一些不均匀的干扰。 是否错过任何计时器设置?

我正在使用"DL_TimerA_setCaptureCompareValue (PWM_0_INST、Duty_Buck、DL_TIMER_CC_2_INDEX);"修改 PWM 占空比。 如果占空比保持恒定、则电池充电电流无噪声。

对于 MSP430、电池充电电流非常干净。

此致、

Yogesh

PWM 频率为100kHz

/* Defines for PWM_0 */
#define PWM_0_INST                                                         TIMA0
#define PWM_0_INST_IRQHandler                                   TIMA0_IRQHandler
#define PWM_0_INST_INT_IRQN                                     (TIMA0_INT_IRQn)
#define PWM_0_INST_CLK_FREQ                                             32000000
/* GPIO defines for channel 2 */
#define GPIO_PWM_0_C2_PORT                                                 GPIOA
#define GPIO_PWM_0_C2_PIN                                         DL_GPIO_PIN_10
#define GPIO_PWM_0_C2_IOMUX                                      (IOMUX_PINCM21)
#define GPIO_PWM_0_C2_IOMUX_FUNC                     IOMUX_PINCM21_PF_TIMA0_CCP2
#define GPIO_PWM_0_C2_IDX                                    DL_TIMER_CC_2_INDEX
/* GPIO defines for channel 2 */
#define GPIO_PWM_0_C2_CMPL_PORT                                            GPIOA
#define GPIO_PWM_0_C2_CMPL_PIN                                     DL_GPIO_PIN_6
#define GPIO_PWM_0_C2_CMPL_IOMUX                                 (IOMUX_PINCM11)
#define GPIO_PWM_0_C2_CMPL_IOMUX_FUNC           IOMUX_PINCM11_PF_TIMA0_CCP2_CMPL

/* ##########################################################################################################
  * Timer clock configuration to be sourced by  / 1 (32000000 Hz)
 * timerClkFreq = (timerClkSrc / (timerClkDivRatio * (timerClkPrescale + 1)))
 *   32000000 Hz = 32000000 Hz / (1 * (0 + 1))
 ########################################################################################################## */
static const DL_TimerA_ClockConfig gPWM_0ClockConfig = {
    .clockSel = DL_TIMER_CLOCK_BUSCLK,
    .divideRatio = DL_TIMER_CLOCK_DIVIDE_1,
    .prescale = 0U
};

static const DL_TimerA_PWMConfig gPWM_0Config = {
    .pwmMode = DL_TIMER_PWM_MODE_EDGE_ALIGN_UP,
    .period = PERIOD_BUCK,
    .isTimerWithFourCC = true,
    .startTimer = DL_TIMER_STOP,
};

SYSCONFIG_WEAK void SYSCFG_DL_PWM_0_init(void) {

    DL_TimerA_setClockConfig(PWM_0_INST, (DL_TimerA_ClockConfig *) &gPWM_0ClockConfig);

    DL_TimerA_initPWMMode(PWM_0_INST, (DL_TimerA_PWMConfig *) &gPWM_0Config);

    // Set Counter control to the smallest CC index being used
    DL_TimerA_setCounterControl(PWM_0_INST,DL_TIMER_CZC_CCCTL2_ZCOND,DL_TIMER_CAC_CCCTL2_ACOND,DL_TIMER_CLC_CCCTL2_LCOND);

    DL_TimerA_setCaptureCompareOutCtl(PWM_0_INST, DL_TIMER_CC_OCTL_INIT_VAL_LOW,DL_TIMER_CC_OCTL_INV_OUT_DISABLED,
                                      DL_TIMER_CC_OCTL_SRC_DEAD_BAND,DL_TIMERA_CAPTURE_COMPARE_2_INDEX);

    DL_TimerA_setCaptCompUpdateMethod(PWM_0_INST, DL_TIMER_CC_UPDATE_METHOD_IMMEDIATE, DL_TIMERA_CAPTURE_COMPARE_2_INDEX);

    DL_TimerA_setCaptureCompareValue(PWM_0_INST, 20, DL_TIMER_CC_2_INDEX);

    DL_TimerA_setDeadBand(PWM_0_INST, DEAD_TIME_BUCK, DEAD_TIME_BUCK, DL_TIMER_DEAD_BAND_MODE_0);
    DL_TimerA_enableClock(PWM_0_INST);
    DL_TimerA_setCCPDirection(PWM_0_INST , DL_TIMER_CC2_OUTPUT );
}

PWM update:
DL_TimerA_setCaptureCompareValue(PWM_0_INST, Duty_Buck, DL_TIMER_CC_2_INDEX);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    我 面临着电池充电电流中一些不均匀的毛刺问题。 任何计时器设置丢失?

    我在占空比变化期间看到一些占空比非常大、请尝试在 syscfg 中启用 TimerA 的影子 CC 函数。

    您可以在 TRM 中获得此影子 CC 函数的相关说明:

    https://www.ti.com/lit/ug/slau846b/slau846b.pdf

    27.2.4.2影子比较(仅限 TIMG4-7、TIMG12-13和 TIMA)

    [引述 userid="566743" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1519599/mspm0g1507-migration

    ADC 相关:

    我们没有使用 DMA。 对64个样本求平均值以进行计算。

    [/报价]

    这里有什么问题吗? MSPM0支持 ADC 硬件平均值功能、可在 syscfg 中对其进行配置。

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

    尊敬的 Helic Chi:

    感谢您的更新。

    我在 SysConfig 中启用了影子寄存器。  

    DL_TimerA_enableShadowFeatures (PWM_0_INST);  --当前波形仍然相同。 是否缺少任何设置、或者 我是否未正确配置阴影。

    ADC 模块。 请说明如何在 SysConfig 中配置硬件均值计算功能?

    此致、

    Yogesh

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

    如果影子 CC 有效、您在此处不会看到这种大负荷:

    请尝试在此处的 syscfg 中测试更多选项:

    请说明如何在 SysConfig 中配置硬件均值计算功能?

    在这里:

    ADC 转换存储器配置- ADC 转换存储器0配置- 可选配置

    高级配置- 硬件平均配置

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

    尊敬的 Helic Chi:

    感谢您提供的信息。

    阴影功能有所帮助。 但是、电流波形会影响迟滞控制的性质。

    您有任何建议来改进电流波形吗?

    您是否有任何使用 IQ 数学的 PI 控制代码片段?

    此致、

    Yogesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您有什么建议来改进电流波形吗?

    我认为电流受 PWM 占空比的影响。

    您需要做的是启用影子 CC。

    通过输出更高的 PWM 频率可以优化迟滞控制。

    现在、PWM 为100kHz、当影子 CC 设置为在负载或零时更新时、最大延迟为10us。

    您是否有任何使用 IQ 数学进行 PI 控制的代码片段?

    对于 PI、IQ 数学中的唯一 API 是_iq18mpy、其他 API 都是添加运算。

    您可以根据 mathACL 和 IOMath 演示设置 PI 计算功能。

    C:\ti\mspm0_sdk_2_04_00_06\examples\nortos\LP_MSPM0G3507\IQmathacl_ops_test

    此外、您还需要一些数字转换 API:

    将 IQ 转换为浮点型或浮点型为 IQ

    _IQ18toF
    _iq18 test =_iq18  (0.0f);