干货 | LS1028A 如何输出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 = ;
                        #pwm-cells = ;
                        clock-names = ftm_sys;
                        clocks = ;
                };
如下图所示:
▐  启动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输出方波的方法,有什么需要帮助和了解的访问飞凌嵌入式官网关注。

英特尔Atom处理器面临挑战
用555定时器构成的一击三呼电子门铃电路
电磁辐射会对生物体产生什么影响
分析雷电接口:普及程度不高的原因
人工智能正在学习量子力学以此来设计新分子
干货 | LS1028A 如何输出PWM方波?
89C51编程器,89C51 programmer
调速电机和伺服电机的区别
三星GalaxyS22系列邂逅春日美景,轻松拍摄质感大片
克服端口顺序影响,使用PCAN实现固定设备ID/通道分配
了解ADC信号链中放大器噪声对总噪声的贡献
24V转5V降压芯片FS2455,PCB布局图册
华为nova5 Pro首销火爆 人像超级夜景自拍功能引爆市场创纪录
led护眼灯真的护眼吗
低压配电系统的构成和接地形式
NP2016 20v n沟道增强型MOSFET概述
Diodes公司为汽车应用推出了多种封包切换器
创维彩电29TF9000图象中有黑故障维修
如何用FPGA并行高速运算实现实时的引导滤波算法
黄曲霉检测仪的产品性能如何,它有哪些特点