android 用gpio作为pwm输出控制led背光

转载时请注明出处和作者文章出处:http://blog.csdn.net/lbmygf 

1、在板级初始化文件mx53_smd_c中将gpio1-1配置为pwm模式:
 
        /* GPIO1 FOR pwm */
      MX53_PAD_GPIO_1__PWM2_PWMO,
 
2、kernel_imx/arch/arm/plat-mxc/pwm.c 在pwm驱动中看到
 
    EXPORT_SYMBOL(pwm_request);
    EXPORT_SYMBOL(pwm_enable);
    EXPORT_SYMBOL(pwm_config);
 
    它把那些函数都导出,是全局的了,所以呢,在背光的驱动中是可以直接用的。
 
3、下面看看背光的驱动:kernel_imx/drivers/video/backlight/da9052_bl.c
    
    在这 da9052_bl.c 中他原来的背光调节,也可以留着,自己处理,关键看你硬件怎么搭。其中的brightness这个参数你是要用到
 
的,根据这个值来调节你pwm的占空比。
 
    在da9052_bl.c的靠前部分定义一个全局pwm_device指针:
 
      struct pwm_device *pwm;    
 
    在 da9052_backlight_probe probe函数中添加如下信息:    
 
     int ret;
      pwm = pwm_request(1, "backlight"); 
     if (IS_ERR(pwm)) {
      dev_err(&pdev->dev, "unable to request PWM for backlight\n");
      ret = PTR_ERR(pwm);
      goto err_bl;
     } else
      dev_dbg(&pdev->dev, "got pwm for backlight\n");
 
    pwm_request 第一个参数是 pwm 设备 的ID号,这个你的去确认你所用的pwm是那个
 
了,我这系统有2个,我用的是pwm2,pwm_request()调用时,会遍历pwm设备,去查找id为
 
1的那个。
 
    在kernel/arch/arm/mach-mx5/devices.c 中有mxc_pwm2_device 定义,id = 1 
 
        struct platform_device mxc_pwm2_device = {
         .name = "mxc_pwm",
          .id = 1,
         .num_resources = ARRAY_SIZE(pwm2_resources),
         .resource = pwm2_resources,
        };
 
4、最后你就找个带 brightness 参数的函数,去在里面做你自己的控制了,我的控制如下:
 
     unsigned int period = 50000;//78770;
     unsigned int max = 255;
 
      if (brightness == 0)
    {
      pwm_config(pwm, 0, period);
      pwm_disable(pwm);
     } else
    {
      pwm_config(pwm, brightness * period / max, period);
      pwm_enable(pwm);
     }

基本上到这就差不多了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值