完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在查阅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输出方波的方法,有什么需要帮助和了解的可以在左侧在线客服留言。 原文链接:https://www.forlinx.com/article_view_700.html |
|
相关推荐
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
790 浏览 0 评论
4407 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2548 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2936 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31545 浏览 11 评论
72941 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 05:17 , Processed in 0.531792 second(s), Total 47, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号