mini2440 LED驱动程序

发布者:JoyfulExplorer最新更新时间:2024-06-21 来源: elecfans关键字:mini2440  LED  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

myled.c

#include
#include
#include
#include
#include
#include
#include
#include
#include
/*#include 'gpio-nrs.h'*/

//add tsuibin

#include
#include
#include
#include

#include
#include
#include

#include

 

 

#define MYLED_COUNT 1
#define MYLED_NAME 'myled'
#define S3C2410_GPB5 S3C2410_GPB(5)
#define S3C2410_GPB6 S3C2410_GPB(6)
#define S3C2410_GPB7 S3C2410_GPB(7)
#define S3C2410_GPB8 S3C2410_GPB(8)

// S3C2410_GPIO_OUTPUT
static struct cdev myled_cdev;
static struct class *myled_class;
static struct device *myled_device;

static unsigned long led_table[] = {
  S3C2410_GPB (5),
  S3C2410_GPB (6),
  S3C2410_GPB (7),
  S3C2410_GPB (8),
};

ssize_t
myled_read (struct file *filp, char __user * buf, size_t count,
     loff_t * f_pos)
{
  return 0;
}

ssize_t
myled_write (struct file * filp, const char __user * buf, size_t count,
      loff_t * f_pos)
{

  unsigned int pin;
  unsigned int led_off = 0;
  unsigned long offs;
  unsigned long flags;
  unsigned long dat;
  void *base;


  pin = buf[0] - '0';
  if (buf[1] == '0')
    {
      led_off = 1;
    }
  if (pin >= 4 || pin < 0)
    return -1;

  pin = led_table[pin];

  base = S3C24XX_GPIO_BASE (pin);
  offs = S3C2410_GPIO_OFFSET (pin);
  local_irq_save (flags);

  dat = __raw_readl (base + 0x04);
  dat &= ~(1 << offs);
  dat |= led_off << offs;
  __raw_writel (dat, base + 0x04);

  local_irq_restore (flags);


  return count;
}

int
myled_ioctl (struct inode *inode, struct file *filp, unsigned int cmd,
      unsigned long arg)
{

  return 0;
}

int
myled_open (struct inode *inode, struct file *filp)
{
  return 0;
}

int
myled_release (struct inode *inode, struct file *filp)
{
  return 0;
}

struct file_operations myled_fops = {
  .owner = THIS_MODULE,
  .read = myled_read,
  .write = myled_write,
  .ioctl = myled_ioctl,
  .open = myled_open,
  .release = myled_release,
};

static int __init
myled_init (void)
{
  int ret;
  dev_t dev;

  /* config gpbcon */
  /* S3C2410_GPIO_BANKB */
  /* S3C2410_GPIO_OUTPUT */
  void *base;
  int i;
  unsigned int pin;
  unsigned int function;
  unsigned long mask;
  unsigned long con;
  unsigned long flags;


  ret = alloc_chrdev_region (&dev, 0, MYLED_COUNT, MYLED_NAME);
  if (ret < 0)
    {
      printk ('get dev error!n');
      return -1;
    }
  cdev_init (&myled_cdev, &myled_fops);
  cdev_add (&myled_cdev, dev, 1);

  myled_class = class_create (THIS_MODULE, MYLED_NAME);
  myled_device = device_create (myled_class, NULL, dev, NULL, MYLED_NAME);

  for (i = 0; i < 4; i++)
    {
      pin = led_table[i];
      function = S3C2410_GPIO_OUTPUT;
      base = S3C24XX_GPIO_BASE (pin);
      mask = 3 << S3C2410_GPIO_OFFSET (pin) * 2;
      function &= 3;
      function <<= S3C2410_GPIO_OFFSET (pin) * 2;
      local_irq_save (flags);
      con = __raw_readl (base + 0x00);
      con &= ~mask;
      con |= function;
      __raw_writel (con, base + 0x00);
      local_irq_restore (flags);

    }
  printk ('module initn');

  return ret;
}

static void __exit
myled_exit (void)
{

  dev_t dev;
  printk ('module exitn');

  dev = myled_cdev.dev;

  device_destroy (myled_class, dev);
  cdev_del (&myled_cdev);
  unregister_chrdev_region (dev, 1);
  class_destroy (myled_class);

  return;
}

module_init (myled_init);
module_exit (myled_exit);
MODULE_LICENSE ('Dual BSD/GPL');
MODULE_AUTHOR('Tsuibin');


关键字:mini2440  LED  驱动程序 引用地址:mini2440 LED驱动程序

上一篇:Linux LCD驱动分析
下一篇:mini2440 madplay移植出现问题解决

推荐阅读最新更新时间:2024-11-05 13:31

工业设备中LED显示和键盘扫描设计
工业设备、汽车电子及仪器仪表中普遍使用LED显示器,原因是LED显示器成本低廉、使用灵活、封装体积小。 开发这类设备时,常常会由于CPU资源不足而不得不采用扩展接口芯片来满足应用系统的需要,而出现这种情况的原因之一是键盘显示占用了太多的系统资源,键盘显示通常采用以下两种方式:(1)采用并行接口的键盘显示专用芯片8279。但8279所需外围元件多(显示驱动、译码等)、占用电路板面积大、综合成本较高;(2)采用通用并行I/O芯片扩展(如8155等),但此方案同样需要驱动显示,同时键盘显示扫描还需占用大量CPU时间;针对这一应用,MAXIM公司推出了带有键盘扫描的LED显示驱动电路MAX6955,该器件具有400kbps、I2C
[电源管理]
纳米级压电LED阵列推动机器人触感皮肤技术发展
电子签名、指纹扫描、以及机器人触感皮肤之间有什么共同点?   得益于一套能将氧化锌纳米线阵列转化成微型 LED 的新系统,这三种技术或将很快被推进。每根"线"会用发亮的方式来响应外部施加的机械压力,通过分析微小的"光点马赛克",计算机就能够产生一个表面压力的高分辨率图像。自2009年以来,压电 LED技术 就一直在发展。   该团队是由美国乔治亚理工学院的王教授带领的。   纳米线来自一层氮化镓薄膜,而光线则产自其与底部基片的接触。   当这些"线"遇到任何的应力变化时,就会产生电荷——应力越大、电荷越多、亮度也会越高。电致发光信号会经过处理,然后就能确定形状和压力两种梯度了。   据介绍,这种压电式LED阵列可
[电源管理]
纳米级压电<font color='red'>LED</font>阵列推动机器人触感皮肤技术发展
车载显示研究:OLED、Mini LED等创新显示技术渗透率快速提升
随着新能源与智能驾驶汽车的渗透,车载显示大屏化与多屏化的趋势越来越明显。舱内除了传统中控、仪表需要显示屏外,还新增了HUD、副驾显示屏、后排娱乐显示屏、电子后视镜以及透明A柱等新产品,车载显示屏装配量迎来高速增长。 OLED、Mini LED、Micro-LED成为车载显示技术演进方向 当前车载显示市场主流技术a-Si LCD的市场渗透率持续走低,主机厂一方面在高端车型部署LTPS-LCD,另一方面加紧部署OLED、Mini-LED、Micro-LED等创新技术量产装车。 全球车载显示器(分技术)渗透率预测 来源:佐思汽研《2022年汽车仪表和中控显示行业研究报告》 OLED与LCD相比,虽有着延展性强、色域广
[汽车电子]
车载显示研究:OLED、Mini <font color='red'>LED</font>等创新显示技术渗透率快速提升
LED灯具在异常使用状态时存在的风险
随着国力的增强,农村获得的优惠政策也越来越多,对农村发展的支持力度越来越大。因此农村 照明 市场有着巨大的潜力可挖。在目前 LED 技术飞速发展的前提下,最近一年来 LED灯具 各个零部件的成本出现大幅降低。然而近日有检测结果显示,市售的部分LED 灯具 在异常使用状态时的确有一定风险。被称为第四代光源的 LED灯 真的不安全吗?LED蓝光溢出可能对视网膜造成损害?LED蓝光溢出究竟是什么?是伤人的“潜在杀手”吗?对此记者进行了调查。   LED蓝光伤人眼吗?   专家称将“蓝光”等同于“视网膜伤害”不合常理   被称为第四代光源的LED,在产业资本和政府补贴的双重推动下,近年来实现了爆发式增长。然而,L
[电源管理]
LED产业迎来转型商机 资本逐鹿LED产业
      在“低碳”趋势下,内地led照明产业正迎来转型商机。LED照明产业正成为各路资本追逐的目标,争相抢入分食这块“蛋糕”.数据显示,即便在金融危机中的2009年,LED照明产业仍逆市上扬,销售总额达1000亿元,同比增长30%以上。     2010广州国际照明展主办方相关负责人介绍,报名参展的企业与往届相比发生了质的变化,参展的1800多家照明企业中,近一半企业已涉足LED产品,传统的白炽灯几乎淡出市场。业界人士表示,这个现象反映行业的新动向,照明企业已从争议LED照明的可行性,到大规模进入到这个领域。广东省节能中心副主任凌志超甚至估计,从目前的趋势看,LED灯具将成为照明产品中的主流。     奥运、世博推动L
[电源管理]
基于FPGA的LED显示屏控制方案
LED(Light Emitting Diode)大屏幕作为现代信息发布的重要媒体,正受到社会各界尤其是商业界和广告界的极大重视,被广泛应用于工业、交通、商业、广告、金融、体育比赛、模拟军事演习、电子景观等领域。随着科技的进步,全彩LED显示屏(RGB三基色)逐渐得到普及应用。   本方案采用Actel的FPGA实现对彩色LED屏的控制,对于系统的可靠性大大增强,而且低成本的单芯片大大减轻了系统的成本。    1.概述   (1)功能概述   选择FPGA实现LED全彩屏的控制,主要考虑系统的性能需求,系统的升级需要以及系统的设计成本等因素。现代社会对信息显示效果的高要求,以及视频数据量的加大,对显示控制器提
[电源管理]
基于FPGA的<font color='red'>LED</font>显示屏控制方案
分享LED照明系统设计技巧
LED照明将会取代主流的白炽照明和其他照明技术,占据市场主导位置。但从旧技术到新技术的转换还需要多年时间。在此期间,LED灯设计师所面临的挑战是如何确保新设计与原本为白炽照明开发的现有控制器和布线架构实现兼容和可靠工作。本文所介绍的是可同时适用于低功率和高功率LED照明系统的解决方案,它久经考验,非常成熟。 LED灯泡的构造 一个LED灯包含一个到十几个甚至更多的LED芯片,它们通常串联在一起。每个芯片的发光亮度由通过其中的电流大小决定。由于采用串联连接方式,灯泡内每个LED芯片会自动通过相同的电流,但每个芯片上的电压各不相同。LED的正向电压降通常为3.4V,但会在2.8V到4.2V之间变化。可以对LED进行分类以限制电压
[电源管理]
分享<font color='red'>LED</font>照明系统设计技巧
LED城市照明渐热 客户认知有待加强
目前,LED(发光二极管)照明技术日趋成熟,大功率LED光源功效已经达到80lm/W,城市路灯照明节能改造成为可能,LED光源在道路照明中的应用已成为近年来半导体照明行业的热点。目前国内外已有超过百家企业投入到半导体路灯的开发中,但都还没有投入大批量生产。原因除了技术有待突破外,过高的安装费用以及产品标准的缺位成为制约LED路灯大规模应用主要因素。   市场已经启动 全球著名LED制造商科锐(Cree)公司倡导的LEDCity(LED城市照明)项目2007年2月启动,2007年7月,加拿大多伦多商业发展促进协会宣布多伦多加入LEDCity计划,并将在多处照明应用中评估、部署和推广使用LED。2007年
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved