zoukankan      html  css  js  c++  java
  • 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五个函数编写混杂设备驱动

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

  • 相关阅读:
    LeetCode:33. Search in Rotated Sorted Array
    重拾 ACM-HDU 2000-2009
    hdu 1022 数据结构 stack模拟
    画椭圆
    声控灯
    VC++调用R语言
    Setup Factory打包时注册com dll
    折腾树莓派的一些总结
    老调重弹
    制作cpprefernce.chm
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/10251510.html
Copyright © 2011-2022 走看看