查看: 1090|回复: 0

[经验] 【STM32MP157A-DK1开发板试用连载】CM4产生PWM信号输出

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-4-20 09:32:38 | 显示全部楼层 |阅读模式
    分享到:
    CM4上使用定时器产生PWM信号输出
        为了灵活的控制外设,CM4需要产生一个占空比可以调整的PWM信号。产生PWM信号需要定时器,因此,需要为CM4核分配定时器和相应的引脚输出。

        根据系统GPIO扩展接口的分配,我们选择tiM5定时器和它的通道2,PH11,作为PWM信号的测试端口。
    1.  资源分配
    通过修改设备树文件,我们将选中的TIM5和PH11分配给CM4内核。
    &timers5 {
        /delete-property/dmas;
        /delete-property/dma-names;
        pwm {
            pinctrl-0 = <&pwm5_pins_a>;
            pinctrl-1 = <&pwm5_sleep_pins_a>;
            pinctrl-names = "default", "sleep";
            status = "disabLED";
        };
        timer@4 {
            status = "disabled";
        };
    };

    &m4_timers5{
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&pwm5_pins_a>;
        pinctrl-1 = <&pwm5_sleep_pins_a>;
        status = "okay";
    };
    禁用Linux内核的timer5和pwm输出功能,使能CM4内核的timer5资源占用,并将pwm引脚分配给timer5 。
        其中pmw5_pins_a的引脚定义为:
                    pwm5_pins_a:pwm5-0 {
                    pins {
                        pinmux= <STM32_PINMUX('H', 11, AF2)>; /* TIM5_CH2 */
                        bias-pull-down;
                        drive-push-pull;
                        slew-rate= <0>;
                    };
                };

                pwm5_sleep_pins_a:pwm5-sleep-0 {
                    pins {
                        pinmux= <STM32_PINMUX('H', 11, analog)>; /* TIM5_CH2 */
                    };
                };
    重新编译设备树文件,并将生成的dtb文件更新到开发板中。
    重新启动装置,让设备树生效。
    2.  创建CM4的应用程序2.1.  资源设定
    我们可以使用以前创建的应用程序,增加相关的资源使用就可以了。双击ioc文件,并且打开资源配置工具。
    选择PH11引脚,并选择引脚功能为TIM5_CH2.

    选择Timers->TIM5,如下图所示设定,时钟源选择“internal clock”,Channel2选择为“PWM Generation CH2”。


        选择“ParameterSettings”,选择合适的预分频和计数周期;
        设置PWMGenertion Channel 2:
           Mode   : PWM mode 1
           Pulse  : 根据占空比需求,添加一个你需要的值
           CHPolarity:Low(这个状态取决于你的最终输出PWM波形状态)



    保存修改,并生成驱动程序文件。
    2.2.  启动PWM输出
    我们需要在应用程序的合适位置调用系统函数启动PWM输出:
        HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
    3.  结果展示
    按照之前的使用经验,下载CM4的固件,启动运行。通过示波器监视输出引脚PH11,我们可以看到输出了一个PWM的波形信号。








    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-10-19 06:23 , Processed in 0.117498 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.