专栏中心

EEPW首页 > 专栏 > 嵌入式Linux下PWM功能调试

嵌入式Linux下PWM功能调试

发布人:toradex 时间:2017-05-27 来源:工程师 发布文章

By Toradex秦海

1). 简介

PWM(Pulse-width modulation)接口是嵌入式设备最为常用的接口之一,常用于电机驱动,蜂鸣器,脉冲计数等嵌入式领域,因此本文就基于嵌入式Linux演示使用PWM接口。

 

本文所演示的平台来自于Toradex Colibri iMX6DL嵌入式平台,这个平台是基于NXP iMX6系列ARM处理器,支持双核心Cortex-A9。

 

2. 准备

a). Colibri iMX6DL ARM核心版配合Colibri Eva Board V3.2B载板,连接调试串口到开发主机,同时配置好Ubuntu开发主机开发环境,具体操作方法可以参考这里

b). Colibri iMX6DL操作系统使用Toradex Linux Release V2.7b2,下载和更新方法请参考这里

c). Colibri iMX6DL 提供了4路PWM接口支持,其中三路为标准的PWM输出接口,另外一路特定为Backlight背光驱动控制功能,Toradex Linux发布V2.7以上版本具体的定义请见如下,其他更低的LInux版本以及其他系列产品的定义情况请见这里。另外,如果需要将PWM_A作为常规PWM使用,需要修改Device Tree文件并重新编译,这里就不详细介绍了。

 

d). 这里为了简化测试,采用PWM输出驱动Colibri Eva Board上面提供的LED灯,连接方式如下,分别测试PWM_B,PWM_C,PWM_D连接到LED的驱动情况,PWM_A是backlight背光驱动功能这里就不直接测试了。

./ PWM_B (X12 PWM_B 管脚) –> X21 LED1

./ PWM_C (X12 PWM_B 管脚) –> X21 LED1

./ PWM_D (X12 PWM_B 管脚) –> X21 LED1

 

 

3). user space下对PWM接口进行测试

a). 这里以PWM_B为例测试,其他PWM通道都是类似配置。

 

b). Export PWM_B接口

--------------------------------

root@colibri-imx6:~# cd /sys/class/pwm/pwmchip0/

root@colibri-imx6:~# echo 0 > export

--------------------------------

 

c). 设置PWM 周期和占空比,这里均为时间,单位为ns

--------------------------------

// 这里为了让驱动LED效果肉眼可见,分别设置周期为1s,占空比为50%

root@colibri-imx6:~# echo 1000000000 > pwm0/period

root@colibri-imx6:~# echo 500000000 > pwm0/duty_cycle

--------------------------------

d). 使能PWM,这时候变可以看到连接的LED以0.5s的周期交替亮和灭了。

--------------------------------

root@colibri-imx6:~# echo 1 > pwm0/enable

--------------------------------

 

 

4). 通过C程序操作PWM接口示例

a). 程序和上述user space实现的原理一致,只是使用linux 文件管理相关函数进行操作,具体代码请见如下:

./ pwmconfig.h - PWM基本操作函数定义头文件

https://github.com/simonqin09/PWMtest/blob/master/pwmconfig.h

./ pwmconfig.c - PWM基本操作函数定义源文件

https://github.com/simonqin09/PWMtest/blob/master/pwmconfig.c

./ pwmtest.c – PWM具体接口使能配置主文件源代码

https://github.com/simonqin09/PWMtest/blob/master/pwmtest.c

 

b). 测试上述c程序代码运行请见如下:

--------------------------------

root@colibri-imx6:~# ./pwmtest B

PWM_B successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest C

PWM_C successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest D

PWM_D successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest

Usage:  ./pwmtest

root@colibri-imx6:~# ./pwmtest S

wrong PWM Channel input

--------------------------------

 

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

东芝推出高速导通小型光继电器,可缩短半导体测试设备的测试时间

清华大学自动化系ARM培训教材

e络盟扩展产品组合 强化工业产品类别

工控自动化 2025-02-21

Embedded World 2025:德承发表Edge AI运算解决方案

业界最高功率的 D 类放大器 - TAS5630/1

视频 2010-03-18

业界领先的低钳位电压TPSMB-L系列汽车TVS二极管

Microsemi:新战略,新希望

泰克自动化接收器测试方案,提升PCIe测试验证精度与效率

GRAS发布全新EQset™系列测量传声器40PO-L/40PO-H

为中国市场度身定制的RF 收发器 – CC1100E

视频 2010-03-18

英飞凌推出采用Q-DPAK和TOLL封装的全新工业CoolSiC™ MOSFET 650 V G2

本土电动车淘汰赛阶段,降本已经刻不容缓

arm的一点资料

资源下载 2007-12-23

ARM指令集

资源下载 2007-12-23

低噪声 μModule DC/DC 转换器简化了 EMI 设计

视频 2010-03-23

时钟解决方案 CDCM6100x

视频 2010-03-18

利用与硬件无关的方法简化嵌入式系统设计:基本知识

arm培训教材中文版

资源下载 2007-12-23

mp3程序

资源下载 2007-12-23

50V耐压GaN HEMT新增小型、高散热TOLL封装

电源与新能源 2025-02-21
更多 培训课堂
更多 焦点
更多 视频

技术专区