解决IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题

前言

本篇文章主要是记录解决百问网论坛上面设置 IMX6ULL GPIO扩展板PWM7/8中的pwm0/period后卡死问题,如下图:

一、查看原理图,找出对应引脚

在这里我们如何确定哪个扩展口中的引脚输出PWM波呢?我们可以通过查看原理图。

查看扩展板的原理图,并且与底板的原理图对照,弄清楚每个扩展引脚对应的功能,将来可以查看该引脚的其他复用功能是否可以设置为PWM输出。

底部扩展接口原理图:

由图可知gpio_io20gpio_io19分别对应的是csi_vsync以及csi_hsync

扩展版原理图:

由图可知gpio_io20gpio_io19分别对应扩展版J1 5 接口

利用官方NXP的工具i.MX pins v6,此工具能够查看芯片所支持外设对应的引脚,此工具仅支持为包含电气特性配置(与所有引脚信号相关的)的器件配置引脚路由配置,并创建可用于初始化的源代码,通过寄存器直接初始化或 SDK API 代码和/或器件树代码段(如果支持)的方式。本小节主要利用此工具查看PWM外设所路由到的引脚,也就是说PWM能通过什么引脚哪个引脚输出。

在这里参考大佬文章:使用imx6ull开发板输出PWM波(100ask)_imx6ull pwm-CSDN博客

可以得出只有gpio_io20gpio_io19这两路GPIO有专门的PWM波功能。

二、修改和编译设备树

进入设备树目录,执行以下命令进入

cd ~/100ask_imx6ull-sdk/Linux-4.9.88/arch/arm/boot/dts

修改对应设备树文件(一共两个,现在是第一个):

vi 100ask_imx6ull-14x14.dts

​​

添加上图框起来的部分:

&pwm7 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm7>;
        status = "okay";
};

&pwm8 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm8>;
        status = "okay";
};
pinctrl_pwm7: pwm7grp {
            fsl,pins = <
                MX6UL_PAD_CSI_VSYNC__PWM7_OUT   0x000010B0
            >;
 
        };
pinctrl_pwm8: pwm8grp {
            fsl,pins = <
                MX6UL_PAD_CSI_HSYNC__PWM8_OUT   0x000010B0
            >;
 
        };

修改第二个文件:

vi imx6ull.dtsi

如图,pwm默认时钟配置都一样,在这里我们将pwm7中的时钟配置改成 CLK_PWM7,pwm8中的时钟配置改成 CLK_PWM8。

然后我们就编译设备树了:

cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
make dtbs

三、通过SG90舵机进行上机测试

将上面编译好的设备树文件 100ask_imx6ull-14x14.dtb 复制到开发板,可以通过挂载 Ubuntu NFS 目录。

具体操作可看:开发板挂载 Ubuntu 的 NFS 目录_开发板nfs挂载ubuntu-CSDN博客

Ubuntu 操作

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

开发板操作:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
cp /mnt/100ask_imx6ull-14x14.dtb /boot
sync
reboot

在Linux中,sync命令用于将内存中的数据同步至硬盘

这个命令确保所有未写入硬盘的缓冲区数据被立即写入,从而防止数据丢失。操作系统通常会使用内存缓冲区来暂存要写入硬盘的数据,以提高写入效率。不过,这也带来了数据安全风险,因为如果系统突然断电或发生故障,未及时写入硬盘的数据将会丢失。

接着我们在开发板上操作:测试PWM7

[root@100ask:~]# cd /sys/class/pwm
 
//看看这个目录下有什么
root@100ask:/sys/class/pwm]# ls
pwmchip0  pwmchip1  pwmchip2  pwmchip3  pwmchip4  pwmchip5  pwmchip6  pwmchip7
 
//由于我们选择的是pwm7,然后pwm控制器pwmchip0对应pwm1,所以我们pwm7对应pwmchip6
root@100ask:/sys/class/pwm]# cd pwmchip6
 
//调出pwm0目录下设备节点
root@100ask:/sys/class/pwm/pwmchip6]# echo 0 > export
 
//注意,一定要先配置好pwm的周期和占空比才能使能pwm
//配置周期
[root@100ask:/sys/class/pwm/pwmchip6]# echo 20000000 > pwm0/period
 
//配置占空比,高电平时间
root@100ask:/sys/class/pwm/pwmchip6]# echo 1000000 > pwm0/duty_cycle
 
//最后使能pwm
root@100ask:/sys/class/pwm/pwmchip6]# echo 1 > pwm0/enable

接着就可以直接连续修改占空比控制舵机反复运动了。测试,连续输入:

[root@100ask:/sys/class/pwm/pwmchip6]# echo 1200000 > pwm0/duty_cycle
[root@100ask:/sys/class/pwm/pwmchip6]# echo 800000 > pwm0/duty_cycle

同理,测试PWM8的话,PWM8对应pwmchip7,改一下对应参数即可。

测试结果我们可以通过连接舵机模块,具体可看:

STM32—PWM开发SG90舵机_stm32舵机pwm设置-CSDN博客

如图:连接两个舵机,可以分别测试PWM7和PWM8,控制两个舵机不同角度转动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/744553.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发系统基础能力:【@ohos.inputMethodEngine (输入法服务)】

输入法服务 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import inputMethodEngine from ohos.inputMethodEngine;inputMethodEngine 常量值。 系统能力&#xff1a;以下各项对应…

手慢无!限量奶茶免费领,千元大奖组队赢!

&#x1f680; AI 卡片大作战全新启动&#xff01;&#xff01;&#x1f552; 限时两周&#xff0c;组队狂欢&#xff01;&#x1f46b; 邀请好友&#xff0c;解锁免费奶茶福利&#xff01;&#x1f4b0; 学习卡片&#xff0c;赢取 1888 超级现金大奖心动不如行动&#xff0c;快…

试题与研究杂志试题与研究杂志社试题与研究编辑部2024年第16期目录

教海纵横 互动式教学模式在初中道德与法治课的应用探究 陈文海; 1-3 基于跨学科项目式学习的地理研学旅行课程设计——以“佛山梁园”为例 周红艳; 4-6 育人导向下道德与法治教学与社会实践活动的融合探索 李鹤群; 7-9 合作学习模式下的初中数学教学策略探究 张…

Mongo Express 未授权访问漏洞

【产品&&漏洞简述】 Mongo Express 是一个基于 Node.js 和 express 的开源的 MongoDB Web管理界面。Mongo Express存在未授权访问漏洞&#xff0c;攻击者可通过该漏洞获取用户信息或修改系统数据。 【资产测绘Query】 title"Home - Mongo Express" 【产品界…

OVS:网桥的状态:fail_mode模式

目录 1.创建一个普通的ovs网桥不做任何配置 2.检测fail_mode值&#xff0c;默认为空 3.创建netns并配置sto网桥的两个普通端口并配置IP信息 4.默认情况下的两个端口下挂两个虚拟机v3,v4天然通信-ping-ok 5.修改网桥的fail_mode为standalone,原来的通信没有影响 6.修改了…

win7使用vue-cli创建vue3工程

1.创建名为test的项目 vue create test 回车以后选择第三个,进行手动选择 2.选择配置 向下箭头表示下一个&#xff0c;空格表示*选中&#xff0c;按照我的选择来选即可&#xff0c;选完后回车 3.选择vue.js版本 上线箭头进行选择&#xff0c;选择后回车 4.选择不同的配置&#…

[DALL·E 2] Hierarchical Text-Conditional Image Generation with CLIP Latents

1、目的 CLIP DDPM进行text-to-image生成 2、数据 (x, y)&#xff0c;x为图像&#xff0c;y为相应的captions&#xff1b;设定和为CLIP的image和text embeddings 3、方法 1&#xff09;CLIP 学习图像和文本的embedding&#xff1b;在训练prior和decoder时固定该部分参数 2&a…

RabbitMQ的WorkQueues模型

WorkQueues模型 Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c;…

运维.Linux下执行定时任务(中:Cron的常用替代方案)

运维系列 Linux下执行定时任务&#xff08;中&#xff1a;Cron的常用替代方案&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAd…

Android集成mapbox教程

目录 简介准备工作创建Token系统开发简介 Mapbox是来自美国的一家为开发者提供地图服务和开发工具的开放平台。Mapbox以开源的形式构建了矢量瓦片技术生态,开发了矢量切片工具、瓦片服务传输框架。Mapbox的底图平台非常受欢迎,特别是开发者和学生群体,可以使用免费的开源软…

FileNotFoundError: Cannot find DGL C++ graphbolt library at ...

FileNotFoundError: Cannot find DGL C graphbolt library at ...-CSDN博客https://blog.csdn.net/weixin_44017989/article/details/137658749

2024最新算法:鳗鱼和石斑鱼优化(Eel and grouper optimizer,EGO)算法求解23个函数,MATLAB代码

一、算法介绍 鳗鱼和石斑鱼优化器&#xff08;Eel and grouper optimizer&#xff0c;EGO&#xff09;是2024年提出的一种智能优化算法&#xff0c;EGO算法的灵感来自海洋生态系统中鳗鱼和石斑鱼的共生相互作用和觅食策略。 参考文献&#xff1a; [1]A. Mohammadzadeh, S. Mi…

学会python——统计文件中文字出现次数(python实例九)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、统计文本文件中单词频率 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计…

浅谈逻辑控制器之ForEach控制器

浅谈逻辑控制器之ForEach控制器 ForEach控制器是一个非常实用的功能&#xff0c;它允许用户遍历某个变量的所有值&#xff0c;并为每个值执行控制器内的子采样器或逻辑。这对于处理从先前请求&#xff08;如CSV Data Set Config、JSON Extractor、Regular Expression Extracto…

设计工程师在FMEA团队中的职责是什么?

在复杂多变的工程环境中&#xff0c;FMEA&#xff08;失效模式与影响分析&#xff09;已成为确保产品质量、提高系统可靠性和降低潜在风险的关键工具。FMEA团队由多个专业领域的专家组成&#xff0c;其中设计工程师作为团队的重要成员&#xff0c;扮演着至关重要的角色。本文&a…

boost asio异步服务器(4)处理粘包问题tlv

粘包的产生 当客户端发送多个数据包给服务器时&#xff0c;服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如&#xff1a;客户端1s内连续发送了两个hello world&#xff01;,服务器过了2s才接…

BP神经网络

BP神经网络 BP神经网络是一种多层前馈神经网络&#xff0c;它通过反向传播算法进行训练&#xff0c;旨在最小化损失函数&#xff0c;从而对输入数据进行精确的分类或回归预测。 背景 BP (Back Propagation) 神经网络是1986年由 Rumelhart 和 McClelland 为首的科学家提出的概…

SAP ABAP 之容器

文章目录 前言一、案例介绍/笔者需求二、自定义容器 a.实例化对象 b.自定义容器效果演示 c.Copy Code 三、自适应容器 a.常用 必须 参数理解 b.METRIC 度量单位 c.RATIO 百分比尺寸 d.STYLE 容器…

商业银行流动性创造指标数据集(2005-2022)

数据简介&#xff1a;中文数据库商业银行流动性创造指标参考邓伟等老师&#xff08;2022&#xff09;的做法&#xff0c;常备借贷便利与中期借贷便利数据来源于中国人民银行发布的《中国货币政策执行报告》。银行层面的微观指标主要来源于BankScope数据库和CSMAR数据库&#xf…

Spring Cloud Netflix:构建强大微服务生态系统的利器

Spring Cloud Netflix是一组集成框架&#xff0c;它将Netflix的多个开源组件整合到Spring Boot应用程序中&#xff0c;使得构建云原生应用程序变得更加简单。这些组件包括用于服务发现和注册的Eureka&#xff0c;断路器模式的实现Hystrix&#xff0c;用于API网关的Zuul&#xf…