使用imx6ull开发板输出PWM波(100ask)

本文介绍了如何在i.MX6ULL开发板上确定和配置PWM输出,通过查看原理图和使用i.MXpinsv6工具来找到支持PWM的引脚。详细步骤包括修改设备树以启用PWM7和PWM8,以及如何操控设备节点通过sysfs接口设置PWM参数。实验中还提到了可能的引脚冲突问题和解决方法。
摘要由CSDN通过智能技术生成

使用imx6ull开发板输出PWM

用韦老师的开发板进行实验,imx6ull这款开发板有8路PWM,但是所有的引出脚(扩展)中只有两个引脚可以输出PWM波,分别是PWM7,PWM8,对应的GPIO引脚为gpio_io20,gpio_io19。如何确定扩展口中有没有引脚能输出pwm波呢?如何修改设备树呢?如何操控设备节点呢?

如何确定扩展口中有没有引脚能输出pwm波呢?

查看扩展板的原理图,并且与底板的原理图对照,弄清楚每个扩展引脚对应的功能,将来可以查看该引脚的其他复用功能是否可以设置为PWM输出。如下图所示,扩展板中所引出脚为imx6ull开发板中CAMERA模块中所用到的引脚,由图可知gpio_io20,gpio_io19分别对应的是csi_vsync以及csi_hsync。


利用官方NXP的工具i.MX pins v6,此工具能够查看芯片所支持外设对应的引脚,此工具仅支持为包含电气特性配置(与所有引脚信号相关的)的器件配置引脚路由配置,并创建可用于初始化的源代码,通过寄存器直接初始化或 SDK API 代码和/或器件树代码段(如果支持)的方式。本小节主要利用此工具查看PWM外设所路由到的引脚,也就是说PWM能通过什么引脚哪个引脚输出。
打开i.MX pins v6工具,点击外设信号选择PWM,依次查看8路PWM波所支持的引脚。具体操作如下图所示。在这里插入图片描述
引脚F3(GPIO4_io20)所支持的复用功能上述图片中的几种,其中就包括了本实验所需要的pwm8_OUT。

如何修改设备树?

勾选pwm8_OUT后可以查看右边代码栏中的设备树代码。如下图所示。将黑框内的代码复制到
在这里插入图片描述
将黑框内的代码复制到设备树100ask_imx6ull-14x14.dts下的iomuxc中。

pinctrl_pwm7: pwm7grp{                /*!< Function assigned for the core: Cortex-A7[ca7] */
     fsl,pins = <
           MX6UL_PAD_CSI_VSYNC__PWM7_OUT   0x000010B0
       >;
   };
pinctrl_pwm8: pwm8grp{                
    fsl,pins = <
        MX6UL_PAD_CSI_HSYNC__PWM8_OUT   0x000010B0
    >;
};

将设备树拷贝至 dts目录下。

cp 100ask_imx6ull-14x14.dts ~/100ask_imx6ull-sdk/Linux-4.9.88/arch/arm/boot/dts/
cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
make dtbs

将生成的dtb文件拷贝至nfs_rootfs

 cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb ~/nfs_rootfs/

在开发板上输入挂载命令,将dtb文件拷贝至boot中并重启内核。

如何操控PWM设备节点?

PWM 是通过 sysfs 方式进行操控,进入到/sys/class/pwm/pwmchip7 目录下,注意pwm8在此对应的是pwmchip7

/*到处PWM7,会生成一个pwm0的文件夹*/
echo 0 > export
/*设置周期,单位为ns*/
echo 5000 > pwm0/period
/*设置占空比,单位为ns*/
echo 3000 > pwm0/duty_cycle
/*使能PWM*/
echo 1 > pwm0/enable

将输出的PWM接入到示波器观察,具体接线图如下图所示。
在这里插入图片描述
在这里插入图片描述

小结

本实验中不采用PWM7的原因是考虑到可能会存在引脚冲突的问题,所以在原来的基础上添加了新的pinctl子节点。另外操控设备节点的方法有三种,本实验是其中之一。即:

  1. 通过sysfs的方式进行操控。
  2. 在设备驱动程序中通过辅助函数device_create()创建设备节点。
  3. 新手初期常用的mknod命令。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值