linux adc是什么设备,Linux 驱动--ADC驱动
#include
#include
#include
#include/*创建设备节点*/
#include
#include/*延时函数*/
#include
#include
#includeadc.h>
#include
#defineADC_MAJOR102
#defineADC_NAME"my_adc"
#defineSUCCESS0
staticintadc_open(structinode*,structfile*);
staticintadc_release(structinode*,structfile*);
staticint__initadc_init(void);
staticint__exitadc_exit(void);
staticssize_tadc_read(structfile*,char*,size_t,loff_t*);
volatileunsignedlongadc_con;
unsignedlongadc_dat0;
//#defineadc_con(unsignedlong)ioremap(0x58000000,4)
//#defineadc_dat0(volatileunsignedlong)ioremap(0x5800000c,4)
structclk*adc_clk;
structfile_operationsadc_ops=
{
.owner=THIS_MODULE,
.read=adc_read,
.open=adc_open,
.release=adc_release,
};
staticint__initadc_init(void)
{
intret;
adc_clk=clk_get(NULL,"adc");//获取时钟
clk_enable(adc_clk);//使能时钟
ret=register_chrdev(ADC_MAJOR,ADC_NAME,&adc_ops);//注册设备
if(ret<0)
{
printk("registerdevicefail/n");
returnret;
}
adc_con=(unsignedlong)ioremap(0x58000000,4);
adc_dat0=(volatileunsignedlong)ioremap(0x58000000+S3C2410_ADCDAT0,4);
if(adc_con&adc_dat0==0)
{
printk("Failedtoioremap/n");
gotohandle;
}
printk("Initialized.../n");
returnSUCCESS;
handle:
unregister_chrdev(ADC_MAJOR,ADC_NAME);
return-1;
}
staticintadc_open(structinode*inode,structfile*file)//打开设备函数
{
returnSUCCESS;
}
staticintadc_release(structinode*inode,structfile*file)//关闭设备函数
{
returnSUCCESS;
}
staticssize_tadc_read(structfile*file,
char*buffer,
size_tlength,
loff_t*offset)//设备读取函数
{
unsignedintbuf;
inttmp;
inti;
writew((1<<14)|(0x31<<6),adc_con);//设置ADCCON
writew((readw(adc_con)|0x1),adc_con);//启动AD转换
while(readw(adc_con)&0x1);//启动转换后,等待启动位清零
while(!(readw(adc_con)&0x8000));//等待转换是否完毕
//for(i=0;i<200000;i++);
mdelay(100);
buf=(readw(adc_dat0)&0x3ff);//取出转换后得到的有效数据
copy_to_user(buffer,(char*)&buf,sizeof(buf));
//printk("Thevalueis%x/n",buf);
return2;
}
staticint__exitadc_exit(void)//驱动卸载函数
{
iounmap(adc_con);
iounmap(adc_dat0);
unregister_chrdev(ADC_MAJOR,ADC_NAME);
clk_disable(adc_clk);
clk_put(adc_clk);
printk("Theadcisunintialized/n");
returnSUCCESS;
}
module_init(adc_init);
module_exit(adc_exit);
MODULE_LICENSE("GPL");
linux adc是什么设备,Linux 驱动--ADC驱动相关推荐
- Linux利用platform_driver和设备树实现PWM驱动
Linux利用platform_driver和设备树实现PWM驱动 字符设备PWM驱动 一.PWM驱动的硬件资源 1.PWM工作原理 2.PWM电路原理 3.PWM内部结构 二.具体代码 1.设备树 ...
- linux如何禁止pci设备,Linux 内核PCI去除一个设备
一个 PCI 可用多个不同的方法被从系统中去除. 所有的 card-bus 设备在一个不同的物 理因素上是真正的 PCI 设备, 并且内核 PCI 核心不区分它们. 允许在机器运行时加减 PCI 设备 ...
- linux中怎么查看设备,linux怎么查看硬件设备信息
你们知道怎么直接查看Linux中的硬件信息吗?下面是学习啦小编带来的关于linux怎么查看硬件设备信息的内容,欢迎阅读! linux怎么查看硬件设备信息? 建议直接进主板的bios查看硬件信息, li ...
- linux内核定义注册设备,linux字符型设备驱动 一.注册设备并创建设备文件
1.字符设备 字符设备.字符设备驱动与用户空间访问该设备的程序三者之间的关系 Linux内核中: a -- 使用cdev结构体来描述字符设备; b -- 通过其成员dev_t来定义设备号(分为主.次设 ...
- linux下spi添加设备,Linux Kernl添加spidev的设备节点
一.spidev介绍 如果在内核中配置spidev,会在/dev目录下产生设备节点,通过此节点可以操作挂载在该SPI总线上的设备.用户空间通过该节点可以访问内核空间. 二.配置spidev设备步骤 在 ...
- linux怎么查看i2c设备,Linux 下I2c设备分析
I2c协议介绍 Key to symbols ============== S(1 bit) : Start bit开始位 P(1 bit) : Stop bit结束位 Rd/Wr (1 bit) : ...
- linux 增加回环设备,linux命令练习:mount fdisk swap dd创建本地回环设备
练习一 1.创建一个1G的分区,文件系统为ext4,卷标为MYDATA,块大小为1024,预留管理空间为磁盘 分区的3%,要求开机后制动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用. f ...
- 查看linux服务器下接设备,linux下如何查看设备信息_网站服务器运行维护
linux下如何查看php是否启动_网站服务器运行维护 linux下查看php是否启动的方法是:可以通过执行[ps -ef | grep php]命令来查看,或者是通过执行[ps -A | grep ...
- linux查看硬件PCI设备,Linux系统查看硬件信息神器,比pci设备好用100倍!
大家都知道,当我们的 Linux 系统计算机出现问题时,需要对其排除故障,首先需要做的是找出计算机的硬件信息.下面介绍一个简单易用的应用程序--HardInfo,你可以利用它来显示你电脑的每个硬件方面 ...
最新文章
- asp.net中长内容自动分页的实现
- python pptp链接_渗透技巧——PPTP口令的获取与爆破
- MySQL数据库修改字段的长度
- 从5随机到7随机及其扩展
- Fluid 给数据弹性一双隐形的翅膀 -- 自定义弹性伸缩
- 一休和尚 小布偶 晴天娃娃
- php制图汉字,PHP用imageTtfText函数在图片上写入汉字
- Android的三种网络联接方式(URL / HttpURLConnection | HttpClient | InetAddress )
- 【C++】判断两个vector是否相等~直接用“==”呀~
- liferay 6.2 主题开发
- linux里命令pkg-config工具的使用
- 简析三种近场通信及其未来发展趋势
- 数字相控阵雷达的优势(Benefits of Digital Phased Array Radars)1
- unity2d物体3d效果
- 免费stm32视频教程分享:心率检测仪的设计与实现
- 蚂蚁森林自动收能量之AutoJs实现
- java后端必会【基础知识点】
- python PTA合集
- 通俗易懂区块链系列——双重支付/双花支付
- 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...
热门文章
- JavaScript操作BOM对象 - document对象; history 和 location对象 ,对话框,Date时间对象...
- 利用Python构建时间序列模型解决实际问题的正确姿势
- JavaScript 的 defer 与 async
- 高精度练习(hdoj1042)
- set, unordered_set模板类
- python运算学习之Numpy ------ 数组操作:连接数组、拆分数组 、广播机制、结构化数组、文件贮存与读写、np.where、数组去重...
- pandas数据导出Execl
- dbForge mysql数据库比对
- 2017.05.01
- 用一道面试题考察对闭包的理解