你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2022-1-11 20:00
CM4上使用定时器产生PWM信号输出
    为了灵活的控制外设,CM4需要产生一个占空比可以调整的PWM信号。产生PWM信号需要定时器,因此,需要为CM4核分配定时器和相应的引脚输出。
8 d7 `4 f, t6 }0 O6 d
   根据系统GPIO扩展接口的分配,我们选择tiM5定时器和它的通道2,PH11,作为PWM信号的测试端口。
1.  资源分配
通过修改设备树文件,我们将选中的TIM5和PH11分配给CM4内核。
  1. <div align="left">&timers5 {</div><div align="left">    /delete-property/dmas;</div><div align="left">    /delete-property/dma-names;</div><div align="left">    pwm {</div><div align="left">        pinctrl-0 = <&pwm5_pins_a>;</div><div align="left">        pinctrl-1 = <&pwm5_sleep_pins_a>;</div><div align="left">        pinctrl-names = "default", "sleep";</div><div align="left">        status = "disab<font color="#4298ba"><font style="font-size: 15px">LED</font></font>";</div><div align="left">    };</div><div align="left">    timer@4 {</div><div align="left">        status = "disabled";</div><div align="left">    };</div><div align="left">};</div>
    2 g9 c. b. x7 F4 U2 }
  2. <div align="left">&m4_timers5{</div><div align="left">    pinctrl-names = "default", "sleep";</div><div align="left">    pinctrl-0 = <&pwm5_pins_a>;</div><div align="left">    pinctrl-1 = <&pwm5_sleep_pins_a>;</div><div align="left">    status = "okay";</div><div align="left">};</div>
复制代码

& V6 r4 z0 j9 l; E% s
禁用Linux内核的timer5和pwm输出功能,使能CM4内核的timer5资源占用,并将pwm引脚分配给timer5 。
    其中pmw5_pins_a的引脚定义为:
  1. <div align="left">                pwm5_pins_a:pwm5-0 {</div><div align="left">                pins {</div><div align="left">                    pinmux= <<font color="#4298ba"><font style="font-size: 15px">STM32</font></font>_PINMUX('H', 11, AF2)>; /* TIM5_CH2 */</div><div align="left">                    bias-pull-down;</div><div align="left">                    drive-push-pull;</div><div align="left">                    slew-rate= <0>;</div><div align="left">                };</div><div align="left">            };</div>
    * [. E& R5 v4 x9 E& a
  2. <div align="left">            pwm5_sleep_pins_a:pwm5-sleep-0 {</div><div align="left">                pins {</div><div align="left">                    pinmux= <STM32_PINMUX('H', 11, <font color="#4298ba"><font style="font-size: 15px">analog</font></font>)>; /* TIM5_CH2 */</div><div align="left">                };</div><div align="left">            };</div>
复制代码
8 l! n% M( a4 W2 O. e
重新编译设备树文件,并将生成的dtb文件更新到开发板中。
重新启动装置,让设备树生效。
2.  创建CM4的应用程序2.1.  资源设定
我们可以使用以前创建的应用程序,增加相关的资源使用就可以了。双击ioc文件,并且打开资源配置工具。
选择PH11引脚,并选择引脚功能为TIM5_CH2.
$ b$ k+ V1 F1 N+ Y% }: Q
选择Timers->TIM5,如下图所示设定,时钟源选择“internal clock”,Channel2选择为“PWM Generation CH2”。
( ?+ U9 U6 f, o- z

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

) h* D; z7 V3 x% B; @5 u8 J% m
: l# }& I) I; y+ `

. N, n8 E  X9 o% p+ ~9 K
保存修改,并生成驱动程序文件。
2.2.  启动PWM输出
我们需要在应用程序的合适位置调用系统函数启动PWM输出:
    HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
3.  结果展示
按照之前的使用经验,下载CM4的固件,启动运行。通过示波器监视输出引脚PH11,我们可以看到输出了一个PWM的波形信号。
; j7 s! D, M& _3 D0 c
3 @2 Y* N2 d0 I
# ^8 Z& n3 H. _* O
- T0 v' h" g0 d. t9 m. @0 [
收藏 评论0 发布时间:2022-1-11 20:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版