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

    文章

    9588

    浏览量

    393679
  • 嵌入式
    +关注

    关注

    5209

    文章

    20662

    浏览量

    337107
  • 开发板
    +关注

    关注

    26

    文章

    6423

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    LS1028ardb 保险丝配置接头不工作如何解决?

    我正在尝试让 fuse provisioning 标头在 ls1028ardb 上自动工作,但是在我将标头添加到我的映像后,我的启动卡在 ATF(BL2) 并且无法继续。 当我浏览
    发表于 04-21 07:33

    如何在 Yocto-sdk 中为 Lasyerscaper processo (ls1028a) 启用 menuconfig 任务?

    如何在 Yocto-sdk 中为 Lasyerscaper processo (ls1028a) 启用 menuconfig 任务? I am using https://github.com
    发表于 04-20 08:48

    深入解析DM74LS83A 4位二进制快速进位加法器

    的特性、参数以及应用场景。 文件下载: DM74LS83AN.pdf 一、概述 DM74LS83A能够实现两个4位二进制数的加法运算。它为每一位提供和(∑)输出,最终的进位(C4)从第
    的头像 发表于 04-10 16:45 676次阅读

    低成本温度监控与风扇控制芯片ADM1028的深度解析

    多种基于微处理器的系统。 文件下载: ADM1028ARQ.pdf 一、ADM1028的主要特性 1. 温度测量功能 内置温度传感器 :芯片内部集成了带隙温度传感器,可对系统环境温度进行监测。其ADC能将传感器输出转换为8位二进
    的头像 发表于 04-10 15:05 114次阅读

    CONFIG_STATIC_DDR 在 LS1028ARDB 上破坏 ATF 编译的定义,怎么解决?

    in build_ls1028ardb/tmp/work/ls1028ardb-fsl-linux/qoriq-atf/2.10+/git/plat/nxp/soc-ls1028a/ls10
    发表于 04-09 06:09

    请问TJA1028DT/0 和 TJA1028x/5/20 有什么区别?

    TJA1028DT/0 和 TJA1028x/5/20 有什么区别?
    发表于 03-20 07:41

    LS1028监管域设置失败 - L6.1.15 和 WIFI IW693,怎么解决?

    1. I am using Real time edge V2.8 under LS1028ArDB(L6.1.15) and WIFI module IW693 and failed to set
    发表于 03-20 06:40

    LS1028A勘误表 找不到列出的寄存器?

    我一直在审查 LS1028A勘误表 (LS1028ACE, Rev2, 2/2023) 中的 A-008822。在 A-008822 中,解决方法要求写入 PCIe 配置空间偏移量 8
    发表于 03-18 07:49

    请教TJA1028DT和TJA1028T/5V0/20有什么区别?

    这两款芯片有什么区别,或者更确切地说,TJA1028DT比TJA1028T/5V0/20有什么优势?
    发表于 03-18 07:27

    如何在 LS1028 的 UART2 上启用 UART 流量控制 (RTS/CTS)?

    我正在使用 LS1028 板,并想将 UART2 用于 RS485,但我找不到 RTS 引脚。如何使用 RTS 进行自动方向切换?
    发表于 03-13 08:04

    解析DS26LS32AC/DS26LS32C/DS26LS32M/DS26LS33M:高性能四通道差分线路接收器

    解析DS26LS32AC/DS26LS32C/DS26LS32M/DS26LS33M:高性能四通道差分线路接收器 在电子设计的世界里,选择合适的差分线路接收器对于确保数据传输的稳定性和
    的头像 发表于 01-28 15:40 810次阅读

    解析DS26LS31C/DS26LS31M:高速差分线驱动器的卓越之选

    /DS26LS31M 四通道高速差分线驱动器,看看它有哪些独特之处。 文件下载: DS26LS31CN NOPB.pdf 一、产品特性亮点 1. 出色的电气性能 输出偏斜与延迟 :DS26LS
    的头像 发表于 01-15 17:10 861次阅读

    探索TJA1028:集成稳压器的LIN收发器的卓越性能与应用

    探索TJA1028:集成稳压器的LIN收发器的卓越性能与应用 在汽车电子和工业控制领域,Local Interconnect Network (LIN) 总线系统以其低成本、简单易用的特点,成为
    的头像 发表于 12-24 17:05 590次阅读

    SN54LS422、SN54LS423、SN74LS422、SN74LS423可重触发单稳态多谐振荡器解析

    122和LS123类似,但不能通过清除端触发。它们是直流触发的多谐振荡器,具有三种输出脉冲宽度控制方法,能产生非常长的输出脉冲,占空比可达100%,并且具有覆盖清除功
    的头像 发表于 12-16 17:40 1887次阅读

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

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