OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5846|回复: 4

【简单分享】阿尔法板子出厂系统输出PWM方波方法

[复制链接]

6

主题

200

帖子

0

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
1063
金钱
1063
注册时间
2019-9-19
在线时间
194 小时
发表于 2020-12-22 10:09:00 | 显示全部楼层 |阅读模式
一、前言
1、本文描述在阿尔法出厂系统上让指定GPIO引脚输出PWM方波方法,阿尔法mini板子可同理修改;
2、默认出厂系统配置中,多数支持PWM的GPIO已被复用成其他功能以适配板子资源,故需通过修改出厂系统设备树,屏蔽指定引脚复用冲突,添加新PWM节点,以实现PWM输出;下面将涉及修改出厂内核源码里面的设备树文件,编译形成新的设备树内容,重新烧写系统等操作;
3、板子PWM驱动及实验在文档《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.x》中【第七十三章Linux PWM驱动实验】已详细讲述,可阅读参考;
4、如有疑问或修改失败,可论坛发帖留言。

二、PWM输出之修改过程
1、由阿尔法核心板原理图可知,引脚GPIO1_4即GPIO1_IO04可复用为PWM3_OUT功能,故可选取来输出PWM;
a、核心板原理图:
1.png
b、底板原理图
2.png
c、实物
3.png
2、选定硬件引脚后,下面修改出厂内核源码设备树,添加PWM3节点;
(1)将出厂系统内核源码解压到ubuntu自定义目录,此处以内核源码V1.3版本举例,其他出厂系统版本同理;
4.png
(2)在内核源码目录arch/arm/boot/dts/下找到imx6ull-14x14-evk.dts设备树文件,该文件是正点原子阿尔法出厂系统的主要硬件资源配置文件,非常重要,除了屏幕时序、存储介质(如emmc、nand)在其他设备树文件修改,板子绝大部分资源是在此文件内进行配置;
5.png

a、修改imx6ull-14x14-evk.dts文件,添加pwm3节点;
6.png
  1. &pwm3 {
  2.         pinctrl-names = "default";
  3.         pinctrl-0 = <&pinctrl_pwm3>;
  4.         status = "okay";
  5. };
复制代码
b、添加pwm3引脚配置,将GPIO1_IO04复用为PWM3_OUT功能;
7.png
  1. pinctrl_pwm3: pwm3grp {
  2.     fsl,pins = <
  3.         MX6UL_PAD_GPIO1_IO04__PWM3_OUT   0x110b0
  4.     >;
  5. };
复制代码
c、由于GPIO1_IO04已被出厂系统默认复用为摄像头ov5640功能引脚,故需屏蔽使用ov5640摄像头功能,将属性status由默认“okay”改为“disabled"
Dingtalk_20210425185226.jpg
3、至此设备树已修改完毕,下面编译出厂内核源码和设备树文件;
(1)为简化步骤,编译出厂内核源码及设备树过程,详见《【正点原子】I.MX6U用户快速体验V1.x》【第四章 ALIENTEK I.MX6U交叉编译】,务必按步骤操作,搭建交叉编译工具链等,此步要求用户已学习掌握编译出厂内核源码及设备树(PS:对于开发人员用户,也可只编译设备树,指令make dtbs,缩短编译时间)。
9.png
(2)上述已编译生成阿尔法出厂设备树二进制可执行文件,文件名格式为imx6ull-14x14-存储介质-显示设备.dtb,默认存放在arch/arm/boot/dts目录下,若将编译输出目录配置到其他临时目录,则只需找到这些dtb文件即可。
4、重新烧写出厂系统。
(1)将上述编译生成的设备树dtb文件传到windows,复制到mfgtool烧写工具目录【4、正点原子MFG_TOOL出厂固件烧录工具\mfgtool\Profiles\Linux\OS Firmware\files\boot】下,替换原有设备树文件即可,内核zImage和根文件系统等不用修改;
10.png
(2)重新烧写出厂系统,详见《【正点原子】I.MX6U用户快速体验V1.x》【第二章 ALIENTEK I.MX6U使用前准备->2.2固化系统】。

三、PWM输出之测试
1、将开发板JP6排针组上的 GPIO_4(GPIO1_IO04)引脚连接到示波器上,通过示波器来查看 PWM 波形图。
2、启动开发板,进入目录/sys/class/pwm/pwmchip2目录为PWM3设置属性;
11.png
  • 分别输入如下命令,进行PWM3配置:
(1)导出pwm3属性目录pwm0;
  1. echo 0 > /sys/class/pwm/pwmchip2/export
复制代码
12.png
(2)使能PWM3;
  1. echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable
复制代码
(3)设置PWM3周期,单位为ns,比如设置频率20KHz 频率,则周期为50000ns;
  1. echo 50000 > /sys/class/pwm/pwmchip2/pwm0/period
复制代码
(4)设置PWM3占空比,比如设置20%,则20KHz 频率下 20%占空比的高电平时间就是10000;
  1. echo 10000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle
复制代码
(5)设置后属性值如图;
13.png
3、上面设置完毕,此时可查看到示波器PWM输出方波波形,频率20K。其他方波频率可自行设置。此处使用正点原子自主开发的小型便携示波器测试。
14.jpg
15.jpg
(end)


=======================
出征,嗒嗒嗒——
快点上车!
=======================
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

214

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1171
金钱
1171
注册时间
2020-12-1
在线时间
149 小时
发表于 2020-12-22 13:06:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-12-26 18:07:28 | 显示全部楼层
帮顶!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-10-30
在线时间
4 小时
发表于 2020-12-29 16:56:42 | 显示全部楼层
请教个问题,利用PWM不停的变换频率输出,有问题,在频率切换时,信号要突变。是什么恶原因?频率变换速率大概间隔10ms
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2023-12-11
在线时间
4 小时
发表于 2023-12-15 20:18:12 | 显示全部楼层
本帖最后由 kk2 于 2023-12-15 20:39 编辑

请教个问题,如果我想用pwm2也是类似的操作吗?但我试过之后发现pwm参数设置命令写不进去会卡死,这是什么原因呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 01:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表