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
    +关注

    关注

    135

    文章

    9499

    浏览量

    388746
  • 嵌入式
    +关注

    关注

    5186

    文章

    20151

    浏览量

    328885
  • 开发板
    +关注

    关注

    25

    文章

    6125

    浏览量

    113374
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RA-Eco-RA6M4开发板评测】PWM输出

    通道详情 PWM 输出就是对外输出脉宽(即占空比)可调的方波信号, 信号频率由周期设定寄存器 GTPR 的值决定,占空比由比较寄存器 GTCCR 的值决定。 2 RT-Thread 的
    发表于 11-09 21:30

    使用rt_thread无法输出PWM怎么解决?

    背景: 实际无法输出PWM波 但是打印报文PWM脉冲 脉宽的变化和线程程序都是正常执行的 使用的RTT 4.03版本; 单片机为STM32F103VET6; 输出引脚:PC9;
    发表于 10-14 07:05

    2223W单键触摸双路PWM输出应用方案

    电子发烧友网站提供《2223W单键触摸双路PWM输出应用方案.pdf》资料免费下载
    发表于 04-30 16:41 1次下载

    LTC3886输出PWM波异常的原因?

    我在尝试用一片LTC3886输出两路8V10A的电源,硬件设计参考了DC2155A,调试中发现OUT0控制外部MOS管的PWM波有异常,它的占空比一直大幅变动,而OUT1的
    发表于 04-17 06:59

    LS1028 FSPI设备驱动程序不工作怎么解决?

    我想使用 ls1028 处理器的 qspi 功能。 我按如下方式更改 dts: dts: spi@20c0000 { 兼容 = “NXP,LX2160A-FPPI”; #address-cells
    发表于 04-10 07:20

    flex-builder为什么无法构建xserver?

    我能够使用 flex-builder 工具很好地构建 OpenCV 组件。我正在尝试使用以下命令构建 xserver 组件: bld -c xserver -m ls1028ardb 我得到以下
    发表于 04-09 08:21

    请问IAR是否支持LS1043A

    我在 IAR 支持设备列表中只能找到一个设备LS1046A, 这是否意味着 IAR 是否不支持其他器件(LS1043ALS1023...)? 我只想针对 LS1043A 的不同接口编
    发表于 04-08 06:16

    如何为LSDK构建libgtk-x11-2.0.so.0?

    我正在尝试为我的 LS1028A RDB板(运行 LSDK)构建 libgtk-x11-2.0.so.0。这是 libopencv_highgui.so 所需要的。有没有办法为 LS1028A 交叉编译这个库?
    发表于 04-04 08:00

    LS1046A硬编码RCW无法更改怎么解决?

    我们有一个基于 LS1046ALS1046ARDB 的定制设计板作为参考设计。定制板是 “裸机” 的,上面没有编程。因此,我们将引导源字设置为 0x9F 并尝试用新设置覆盖硬编码 RCW,以便
    发表于 03-21 07:25

    开关电源原理及选型介绍

    通过开关的打开和闭合产生周期性的方波,如12V的输入电压,5V的输出电压,则方波的高低电平的比例是5:7;也就是PWM波,通过改变方波的占空
    的头像 发表于 03-19 10:02 1744次阅读
    开关电源原理及选型介绍

    STM32F103C8T6 PA2无PWM输出怎么解决?

    STM32F103C8T6最小系统PA0/PA1/PA2/PA3为PWM输出控制舵机,配置相同,PA2始终无输出,PA0/PA1/PA3输出
    发表于 02-27 08:13

    DLPC7540EVM RGB的恒流源输出电流是60HZ的方波吗?

    我们想做一套RGB的外部驱动电源,RGB的恒流源输出电流是60HZ的方波么?是不是通过三路RGB_EN来控制的。另外三路RGB_PWM是不是来控制三路RGB灯的亮度的。对应的控制信号是否是J97对应的
    发表于 02-21 15:02

    请问AMC1204的数字输出端口与TMS570LS3137什么外设连接最适用?

    AMC1204, AMC1200现准备用TMS570LS3137做电机控制芯片,用AMC1204隔离采样直流母线电压,请问AMC1204的数字输出端口与TMS570LS3137什么外设连接最适用?程序中软件如何实现数字脉宽表征
    发表于 02-05 10:12

    思瑞浦推出车规级LIN SBC新品TPT1028Q

    LIN2.2-A物理层标准,更在性能与集成度上实现了显著提升。 TPT1028Q内置了高性能的LIN收发器和低dropout LDO,其高度集成的设计有效减小了板级面积,从而降低了系统成本。这一特点使得
    的头像 发表于 01-21 11:33 1367次阅读

    MSP430G2553怎么才能成功输出兆赫兹的方波啊?

    XT2频率的语句,然后就按书上的例子编了一下,发现分频系数为1也就是直通的时候,将CCR0=2,CCR1设为1进而产生占空比是1/2的方波输出方波频率只有200KHZ左右,也就意味着XT2的频率
    发表于 12-09 08:09