• 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五个函数编写混杂设备驱动

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

  • 相关阅读:
    图的深度遍历
    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

    满汉全席
    2-sat(模板)
    2-sat
    花匠
    维护序列NOI2005
    序列终结者
    杨辉三角
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/10251510.html
Copyright © 2020-2023  润新知