Linux系统PWM驱动【转】

本文转载自:https://blog.csdn.net/BorntoX/article/details/51879786

硬件平台:IMX6

内核版本:kernel3.0.35



在linux内核中有一个规律,Linux内核开发者把通用的东西都总结出来,个性化的东西就留出接口,和GPIO驱动类似,PWM驱动在内核中也提供了对应的接口函数,内核提供的接口函数声明在include/linux/pwm.h中



//申请一个PWM资源
struct pwm_device *pwm_request(int pwm_id, const char *label);
//释放一个PWM资源
void pwm_free(struct pwm_device *pwm);
//配置PWM
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
//使能PWM
int pwm_enable(struct pwm_device *pwm);
//不使能PWM
void pwm_disable(struct pwm_device *pwm);



针对内核的框架,IMX6对这些函数的实现位于arch/arm/plat-mxc/pwm.c中,利用这些接口函数我们就可以编写自己的PWM驱动程序



步骤:

1 添加对PWM端口的初始化(本驱动基于飞思卡尔IMX6,这部分不同的板子会有些许不同)

在arch/arm/mach-mx6/board-mx6q_sabresd.h

在MX6Q_PAD_SD1_DAT3__PWM1_PWMO,后面添加

MX6Q_PAD_SD1_DAT1__PWM3_PWMO,

MX6Q_PAD_SD1_CMD__PWM4_PWMO,

MX6Q_PAD_SD1_DAT2__PWM2_PWMO,

2 使用pwm_request,pwm_free,pwm_config,pwm_enable,pwm_disable五个函数编写混杂设备驱动

驱动源码及应用程序见下载地址点击打开链接

猜你喜欢

转载自www.cnblogs.com/zzb-Dream-90Time/p/10251510.html
今日推荐