0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货 | LS1028A-C如何输出PWM方波?

飞凌嵌入式 2021-08-31 19:34 次阅读

干货 | 飞凌OK1028A-C如何输出PWM方波?

最近,我收到了一个使用OK1028A-C输出pwm方波的需求.但是发现OK1028平台没有相关的说明,于是我着手写下了这篇文章。

在查阅OK1028A-C原理图和《QorIQ LS1028A Reference Manual》后得知,LS1028默认有8个FlexTimer (FTM) ,每个FTM有8路pwm。

默认背光采用的是FTM1产生的pwm,我们使用FTM7做pwm测试。

如下图所示:

LS1028 RCWSR12寄存器的12-14为I2C4的管脚复用。

如下图所示:

I2C4管脚可以复用为六种管脚功能。OK1028A-C将管脚设置为can2 的rx 和tx ,在原理图《OK1028A-C_V1.1》中可以看到T6_CAN2_RX、U7_CAN2_TX。

我们可以通过修改rcw文件,将I2C4设置为pwm管脚。

OK1028A-C默认是支持pwm功能的,所以我们无需移植驱动,所做的工作只是修改pinmux和在设备树中增加pwm的相应设备节点即可。修改packages/firmware

/rcw/ls1028ardb/RSQPP0x85bb/rcw1500gpu600.rcw中IIC4_PMUX的设置,将pin设置为pwm输出。

将IIC4_PMUX=2修改为 IIC4_PMUX=4

如下图所示:

完成上述设置后我们需要修改设备树代码,增加PWM配置。我们的修改的文件路径如下:

packages/linux/linux/arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi。

然后添加pwm7设备

Pwm7: pwm@2860000 {

compatible = "fsl,ls1028a-ftm-pwm";

reg = <0x0 0x2860000 0x0 0x10000>;

#pwm-cells = <3>;

clock-names = "ftm_sys";

clocks = <&ftm_sysclk>;

};

如下图所示:

▐ 启动OK1028A-C系统

root@forlinx:~#cat /sys/kernel/debug/pwm 查看我们当前的pwm设备

如下图所示:

我们现在打开了一个pwm控制器,可以看到FTM1支持8个通道,而背光使用的是pwm-1通道。将我们修改后的设备树文件和firmware编译,烧写到飞凌LS1028A-C开发板,启动系统。

root@forlinx:~#cat /sys/kernel/debug/pwm 查看我们当前的pwm设备。

如下图所示:

此时,虽然我们添加的pwm设备打开了,但和pwm0设备还是有差别的,新添加的pwm设备的每一路通道都没有设置周期和占空比。

所以下一步我们不需要再增加驱动代码,而是利用sys即可直接设置pwm参数。Pwmchip8是我们添加的pwm设备。

▐ 使能使用的pwm通道

root@forlinx:~#echo 1> /sys/class/pwm/pwmchip8/export 初始化 pwm通道1

root@forlinx:~#echo 2> /sys/class/pwm/pwmchip8/export 初始化 pwm通道2

root@forlinx:~#cat /sys/kernel/debug/pwm 命令查看我们当前的pwm设备:

如果想取消相应pwm通道的话,可以使用“echo 1> /sys/class/pwm/pwmchip8/unexport”

“echo 2 > /sys/class/pwm/pwmchip8/unexport”命令。

因为我们每次只能使能一路pwm,所以先配置和打开pwm1。
root@forlinx:~#echo 1000000 > /sys/class/pwm/pwmchip8/pwm1/period 配置pwm1 period为1000000,单位为ns,即1kHZ。

root@forlinx:~#echo 500000 > /sys/class/pwm/pwmchip8/pwm1/duty_cycle 配置 duty_cycle 为500000,一个周期中on的时间即占空比,单位为ns,占空比50%

root@forlinx:~#echo 1 > /sys/class/pwm/pwmchip8/pwm1/enable 使能

root@forlinx:~#cat/sys/class/pwm/pwmchip8/pwm1/{enable,period,duty_cycle} 命令可以查看我们的pwm使能状态,周期,和占空比。

如下图所示:

▐用示波器测试T6_CAN2_RX产生1khz的方波

由于每次只能使能一路pwm,所以我们要使能pwm2,就需要先关闭pwm1。

root@forlinx:~#echo 0> /sys/class/pwm/pwmchip8/pwm1/enable

root@forlinx:~#echo 1000000 > /sys/class/pwm/pwmchip8/pwm2/period 配置period为1000000

root@forlinx:~#echo 500000 > /sys/class/pwm/pwmchip8/pwm2/duty_cycle配置duty_cycle为500000。root@forlinx:~#echo 1 > /sys/class/pwm/pwmchip8/pwm2/enable 使能

root@forlinx:~#cat/sys/class/pwm/pwmchip8/pwm2/{enable,period,duty_cycle}

▐用示波器测试U7_CAN2_TX产生1khz的方波

在我们使用OK1028A-C时,由于管脚复用,很多功能模块的管脚没有引出,但是模块的驱动是支持的。这种情况下,我们只需要修改rcw相应的pinmux配置和设备树文件就可以使用相应的功能了。


好了,以上便是我对OK1028A-C开发板如何实现PWM输出方波的方法,有什么需要帮助和了解的可以在左侧在线客服留言。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9027

    浏览量

    366446
  • 嵌入式
    +关注

    关注

    5058

    文章

    18972

    浏览量

    301905
  • 开发板
    +关注

    关注

    25

    文章

    4895

    浏览量

    97032
收藏 人收藏

    评论

    相关推荐

    PWM输出配置方法

    从上节课的定时器分类图中我们了解到,互补输出是高级定时器(TIM1、TIM8)所独有的,它可以输出两路互补信号。而在本节课中我们将通过一个简单的例程去介绍如何配置互补PWM输出,同时为
    的头像 发表于 11-04 09:44 175次阅读
    <b class='flag-5'>PWM</b><b class='flag-5'>输出</b>配置方法

    如何使用C2000 CLB实现Traction Inverter应用中的PWM输出保护功能

    电子发烧友网站提供《如何使用C2000 CLB实现Traction Inverter应用中的PWM输出保护功能.pdf》资料免费下载
    发表于 10-31 10:38 1次下载

    请问PCM5102A是否能够输出一个384Khz的方波

    PCM5102A的I2S输入是支持384khz的信号输入,如果一个音频I2S信号是384khz的方波,请问PCM5102A输出频率是否可以正常
    发表于 10-15 07:21

    DRV8332芯片在调试的过程中,输出始终达不到24V,为什么?

    时序的DSP芯片在另一块电路板上,还在加工中,目前我们只是根据datasheet上的时序,PWM_A 接低,PWM_B,PWM_C 用信号发生器给方波,RESET_
    发表于 09-10 07:04

    求助,关于PWM方波衰减电路设计问题求帮忙

    OPA835/836/837使用tina-ti进行仿真。如下图所示。 问题:设计思路是否正确,TI是否有针对PWM/方波/脉冲放大运放,有没有更好的解决方案?输出阻抗50欧姆直接在运放信号
    发表于 08-16 07:41

    pwm与spwm波,载波、参考波与输出波形的关系

    存在着密切的关系。 一、PWM波的基本原理与关系 1. PWM波的基本原理 PWM是一种利用微处理器的数字信号输出来对模拟电路进行控制的技术。它通过改变脉冲信号的占空比(即脉冲信号高电
    的头像 发表于 08-14 16:58 1114次阅读

    请问LM211是否支持1MZH方波输出

    请问LM211是否支持1MZH方波输出?现在现象是,当输入为1MHZ的PWM方波时,但是没有输出?如果LM211不支持,请推荐一款IC,支
    发表于 08-08 06:03

    在示波器上测量到GPIO12--15上输出方波遇到的疑问求解

    如下测试代码,在示波器上测量到 GPIO12--15 上输出方波,但频率在跳动,1K 持续几秒会跳到10K以上,然后又回到1K,是否代码有误?谢谢 light_param.pwm_duty[0
    发表于 07-22 06:55

    信号发生器输出方波需要设置什么参数

    。本文将详细介绍如何设置信号发生器以输出方波信号。 频率(Frequency) 频率是信号发生器输出信号的基本参数之一,表示信号在单位时间内的周期数。对于方波信号,频率决定了信号的上升和下降速率。频率越高,
    的头像 发表于 06-03 11:08 1484次阅读

    函数信号发生器怎么输出方波

    如何输出方波,包括方波的产生原理、函数信号发生器的操作步骤、输出方波的关键参数设置以及注意事项等方面,旨在为读者提供全面而深入的指导。
    的头像 发表于 05-30 16:00 1891次阅读

    STM32电机控制Nucleo开发套件,如果运行到FOC模式,C10,C11,C12怎么输出互补PWM呢?

    请问下用过这个板子有大侠:STM32电机控制Nucleo开发套件中 :TIME1 的PWM上下桥输出分别的A8,A9,A10,和
    发表于 04-24 08:11

    PWM+DMA,然后用DAC输出,可以是触发输出吗?

    如果用PWM+DMA,然后用DAC输出,可以是触发输出吗?输出的是否是占空比可调的方波,可以是三角波吗?求大神解答。
    发表于 04-22 06:59

    STSPIN32F0A高级定时器控制的HS和LS输出PWM,为什么?

    STSPIN32F0A高级定时器控制的HS和LS输出PWM,用TIM2的IO口是能输出PWM
    发表于 03-19 07:34

    STM32G030C8T6 TIM16无法产生PWM方波的原因?怎么解决?

    硬件使用STM32G030C8T6的PA6的AF5功能,即TIM16_CH1驱动一个无源蜂鸣器,输出一个2.7K-2.9K的方波,占空比为50%,始终没有成功,查阅datasheet发现PA6也可以
    发表于 03-12 08:27

    单片机的输出比较是小思考

    需要在方波开始输出后就不能再通过软件进行干预,完全交给单片机的硬件自己去完成。通过观察要输出方波的特点,除了LED_PWM波具备PWM波形的
    的头像 发表于 12-27 08:00 471次阅读
    单片机的<b class='flag-5'>输出</b>比较是小思考