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.

[参考译文] MSPM0L1306-Q1:MSPM0L1306 PWM init code debug-μ 初始化PWM的代码

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1341727/mspm0l1306-q1-mspm0l1306-pwm-init-code-debug--pwm

器件型号:MSPM0L1306-Q1
主题中讨论的其他器件: SysConfig

1.用MSPM0L1306 μ A-Q1 (__LW_AT__VSSOP 封装28封装)做了一个板子,现在可以开机和运行LED闪烁程序。

2.正在debug PWM out的程序,用PA14(TIMG1、C0)输出,但是始终没有在示波器上看到PWM波,查过示波器设置没有问题。

3.下面是PWM的初始化程序,麻烦查一下,看看是哪里的问题,谢谢!

#define GPIO_PWM_PORT                              (GPIOA)

#define GPIO_RGB_PWMOUTT_PIN                      (DL_GPIO_PIN_14)

#define GPIO_IOMUX_RGB_PWMOUTT                    (IOMUX_PINCM15)

#define GPIO_IOMUX_FUNC_PWMOUTT_PWM             (IOMUX_PINCM15_PF_TIMG1_CCP0)


静态 const DL_TimerG_ClockConfig gLIGHTSENSOR_pwm_outt_INSTClockConfig ={
.clockSel = DL_TIMER_CLOCK_LFCLK
divideRatio = DL_TIMER_Cock_Divid_1、
.prescale = 0、
};

静态常量 DL_TimerG_PWMConfig gLIGHTSENSOR_PWM_OUTT_INSTConfig ={
.period = RGB_LED_PERIOD、/*可见光的64Hz PWM 信号*/
.pwmMode = DL_TIMER_PWM_MODE_EDGE_ALIGN
.startTimer = false、
};

void PWMout1_init (void)
{
DL_GPIO_initDigitalOutput (GPIO_IOMUX_RGB_PWMOUTT);

DL_GPIO_clearPins (GPIO_PWM_PORT、GPIO_RGB_PWMOUTT_PIN);

DL_GPIO_enableOutput (GPIO_PWM_PORT、GPIO_RGB_PWMOUTT_PIN);

DL_GPIO_initPeripheralOutputFunction (GPIO_IOMUX_RGB_PWMOUTT、GPIO_IOMUX_FUNC_PWMOUTT_PWM);

//================================

DL_TimerG_setClockConfig (LIGHTSENSOR_PWM_OUT_INST、
(DL_TimerG_ClockConfig *)&gLIGHTSENSOR_PWM_OUTT_INSTClockConfig);

DL_TimerG_initPWMMode (LIGHTSENSOR_PWM_OUT_INST、
(DL_TimerG_PWMConfig *)&gLIGHTSENSOR_PWM_OUTT_INSTConfig);

/*配置50%占空比*/
DL_TimerG_setCaptureCompareValue (
lIGHTSENSOR_PWM_OUT_INST、PWM_OUTT_PERIOD / 2、DL_TIMER_CC_1_INDEX);

DL_TimerG_clearInterruptStatus (
lIGHTSENSOR_PWM_OUT_INST、DL_TIMER_INTERRUPT_ZERO _EVENT);
DL_TimerG_enableInterrupt (
lIGHTSENSOR_PWM_OUT_INST、DL_TIMER_INTERRUPT_ZERO _EVENT);

DL_TimerG_enableClock (LIGHTSENSOR_PWM_OUT_INST);

DL_TimerG_setCCPDirection (LIGHTSENSOR_PWM_OUT_INST、DL_TIMER_CC1_OUTPUT);

DL_TimerG_startCounter (LIGHTSENSOR_PWM_OUT_INST);

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

    LIGHTSENSOR_PWM_OUT_INST 定义是 TIMG1

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

    Shine、您好!

    如果您使用 PWM 通道0、请检查  DL_TIMER_CC_1_INDEX 和  DL_TIMER_CC1_OUTPUT 是否相对于通道0而不是通道1。 您可以从 TI.com 下载最新版本的 M0 SDK、您可以使用 SDK 中的 PWM 示例代码来测试 PWM 功能。 可从 TI.com 下载最新的 TI IDE (CCS)和 M0 SDK。

    此致、

    K·扬茨

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

    我现在用的就是前几天才从TI官网下载的M0 SDK软件包,用的是KEIL编译器。

    我把DL TIMER_CC_1_INDEX 和  DL_TIMER_CC1_OUTPUT 都改为 DL_TIMER_CC_0_INDEX 和 DL_TIMER_CC0_OUTPUT  ,但是还是没有波形出来。

    我补上下面的定义,麻烦看看是否有问题?

    #define  LIGHTSENSOR_PWM_OUT_INST      (__LW_AT__TIMG1)

    #define  LIGHTSENSOR_PWM_OUT_INST_IRQHandler      TIMG1_IRQHandler

    #define  LIGHTSENSOR_PWM_OUT_INST_INT_IRQN          (TIMG1_INT_IRQn)

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

    另外,我看了贵司的PWM例子,没看出PWM初始化代码在哪里,我看的是timx timer_mode_pwm_center_stop

    但是这个文件的初始化代码实在过于简单,只看到有   

    SYSCFG_DL_init ();

    DL_TimerG_startCounter (PWM_0_INST);  

    而且我看了TI MSP_DL_CONFIG。 C文件的SYSCFG _DL_init (函数,这个函数并没有任何关于PWM初始化的代码,或者请帮忙发个完整的PWM初始化代码,谢谢。)

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

    另外,请问MSPM0L 1306的PWM输出是可以直接连接到某个IO口的吧,也就是说初始化之后,在TIMER计数溢出的时候,不需要跳转到中断处理程序去控制GPIO口反转的吧?谢谢。

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

    我的意思是,我没有写一个中断处理程序去控制PA14口反转的。

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

    不需要,PWM计数引发的中断不会影响PWM的正常输出

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

    请问您是否使用过我们TI的Sysconfig μ V、Keil中也是可以集成Sysconfig的,使用Sysconfig就可以图形化配置TIMER μ-PWM,不用您手动去写初始化代码。SYSCFG_DL_init ()这个函数中应该是要包含一个pwm初始化函数的。  

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

    我推荐您从官网下载安装Sysconfig后,根据我们的design 流量导向装置 将Sysconfig导入进Keil,然后从我们的SDK中导入一个PWM的示例程

    序: timx_timer_mode_pwm_edge_sleep,然后去验证下PWM功能。

    Keil IDE 指南(TI.com)

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

    我的电脑是32位系统,安装不了SYSCONFIG,但是我刚刚调试好PWM了。

    我把 TIMERG_R θ RESET和 TIMERG_R θ ENABLEPOWER这2句加上去,就是打开TIMERG的电源就好了,谢谢。

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

    是的 在PWM初始化中 这两个函数是需要的。

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

    好的、 非常感谢。