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五个函数编写混杂设备驱动
驱动源码及应用程序见下载地址点击打开链接
最新文章
- logstash 配置 logstash-forwarder (前名称:lumberjack)
- poi解析excel 03、07
- Jni中C++和Java的参数传递 参数对照
- Keepalive
- Servlet之过滤器
- OCI_ERROE - errcode[1591],errmsg[ORA-01591:
- 该项目中不存在目标 precomputecompiletypescript The target ";PreComputeCompileTypeScript"; does not exist in the project
- 理解WEB API网关
- 自定义组件-BreadcrumbTreeView 的使用
- 2015 多校联赛 ——HDU5389(dp)
- 深入源码分析SpringMVC底层原理(二)
- LODOP中page-break-before:always给div分页
- Codeforces543 B. Destroying Roads
- [Linux]Linux下signal function传参方式
- Vue引入elementUI组件全过程
- Docker 部署 portainer
- Request实例
- tomcat 配置域名访问应用
- [转]深入理解mysqldump原理
- 跟着刚哥学习Spring框架--事务配置(七)