资源简介
基于s3c2440的智能家居控制系统,包含手势控制和语音控制(外接语音芯片),温湿度,光照烟雾,OLED显示等.
代码片段和文件信息
/*****************************************************
*文件描述 : 烟雾传感器.温度传感器 AD转换
*引脚连接 : 烟雾传感器(channel0) AIN0
* 光照传感器(channel1) AIN1
*模块说明 : 只是采集了电压值 实际上的警报阈值还需要测量
******************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “adc_h.h“
#define ADCCON 0x58000000 //ADC control
#define ADCTSC 0x58000004 //ADC touch screen contro
#define ADCDAT0 0x5800000C
unsigned int *adc_con;
unsigned int *adc_data;
unsigned int *adc_tsc;
unsigned int *gpb_con;
unsigned int *gpb_data;
#define CDEV_NAME “adc“
dev_t dev = 0;
struct cdev dev_c;
struct class *adc_class;
/*open*/
static int adc_open(struct inode *inode struct file *fd)
{
unsigned int value=0;
/*映射地址初始化ADCCON和ADCTSC*/
adc_con = ioremap(ADCCON 4);
if(!adc_con)
{
printk(KERN_WARNING“adc_con ioremap fail\n“);
goto err;
}
/*设置adc时钟频率*/
value = readl(adc_con);
value |= (1<<14) | (49<<6); //预分频使能.并设定时钟频率
value &= ~(0x7<<3); //通道选择为AIN 0
writel(value adc_con);
value = 0;
/*设置adc为普通ad转换模式*/
adc_tsc = ioremap(ADCTSC 4);
if(!adc_tsc)
{
printk(KERN_WARNING“adc_tsc ioremap fail\n“);
goto err;
}
writel(0x0 adc_tsc);
adc_data = ioremap(ADCDAT0 4);
if(!adc_data)
{
printk(KERN_WARNING“adc_data ioremap fail\n“);
goto err;
}
fd->private_data = adc_con; //尝试性保存一个adc_con
printk(KERN_DEBUG“ADC is initial!\n“);
return 0;
err:
return -1;
}
/*write*/
static ssize_t adc_write(struct file *fd const char __user *buffer size_t count loff_t *f_pos)
{
unsigned int channel=0;
unsigned int value=0;
int *register_addr = fd->private_data;
if(copy_from_user(&channel buffer count)) //获取通道
{
printk(KERN_WARNING“write from user fail!\n“);
}
/*先把通道清0*/
value = readl(register_addr);
value &= ~(0x7<<3); //清0
value |= (channel<<3); //通道选择通道由应用程序决定
writel(value register_addr);
return count;
}
/*read*/
static ssize_t adc_read(struct file *fd char __user *buf size_t count loff_t *f_pos)
{
unsigned int value=0;
unsigned short ad_data=0;
value = readl(adc_con);
value |= 0x1; //开启转换
writel(value adc_con);
while(readl(adc_con) & 0x1);//等待传输开始
while(!(readl(adc_con) & (1<<15))); //等待传输结束
ad_data = (readl(adc_data) & 0x3ff);
copy_to_user(buf &ad_data count);
return count;
}
/*close*/
static int adc_close(struct inode *inode struct file *fd)
{
s3c2410_gpio_setpin(S3C2410_GPB(0)0);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-20 17:51 smart_house\
目录 0 2018-04-20 17:51 smart_house\AD\
文件 251 2018-04-10 16:29 smart_house\AD\.adc.ko.cmd
文件 15235 2018-04-09 21:12 smart_house\AD\.adc.mod.o.cmd
文件 18744 2018-04-10 16:29 smart_house\AD\.adc.o.cmd
目录 0 2018-04-20 17:51 smart_house\AD\.tmp_versions\
文件 73 2018-04-10 16:29 smart_house\AD\.tmp_versions\adc.mod
文件 5704 2018-04-10 16:22 smart_house\AD\adc.c
文件 5399 2018-04-10 16:29 smart_house\AD\adc.ko
文件 444 2018-04-09 21:12 smart_house\AD\adc.mod.c
文件 1484 2018-04-09 21:12 smart_house\AD\adc.mod.o
文件 4652 2018-04-10 16:29 smart_house\AD\adc.o
文件 646728 2018-04-09 21:13 smart_house\AD\adc_app
文件 3150 2018-04-01 21:25 smart_house\AD\adc_app.c
文件 425 2016-11-29 08:53 smart_house\AD\adc_h.h
文件 182 2018-04-01 21:12 smart_house\AD\Makefile
文件 0 2018-04-09 21:12 smart_house\AD\Module.symvers
文件 44 2018-04-10 16:29 smart_house\AD\modules.order
文件 480 2016-11-29 10:56 smart_house\AD\my_project_app.h
文件 427 2016-11-29 10:39 smart_house\AD\my_test.h
目录 0 2018-04-20 17:51 smart_house\APDS_9960\
文件 287 2018-04-07 21:48 smart_house\APDS_9960\.apds9960_func.ko.cmd
文件 15336 2018-04-07 21:48 smart_house\APDS_9960\.apds9960_func.mod.o.cmd
文件 21567 2018-04-07 21:48 smart_house\APDS_9960\.apds9960_func.o.cmd
文件 303 2018-04-10 16:29 smart_house\APDS_9960\.apds_9960.ko.cmd
文件 15364 2018-04-10 11:15 smart_house\APDS_9960\.apds_9960.mod.o.cmd
文件 22905 2018-04-10 16:29 smart_house\APDS_9960\.apds_9960.o.cmd
目录 0 2018-04-20 17:51 smart_house\APDS_9960\.tmp_versions\
文件 99 2018-04-10 16:29 smart_house\APDS_9960\.tmp_versions\apds_9960.mod
文件 30564 2018-04-07 16:58 smart_house\APDS_9960\apds9960_func.c
文件 35178 2018-04-10 16:25 smart_house\APDS_9960\apds_9960.c
............此处省略89个文件信息
- 上一篇:VRML虚拟现实
- 下一篇:HprSnap6 6.13.2.0 汉化破解绿色版本
相关资源
- GEC210 Linux驱动源码
- 君正Linux_开发指南.pdf
- Linux-Arm(嵌入式开发参考).pdf
- GB28181 代码Linux
- Tomcat WEB服务器实战
- linux文件完整性监控的实现
- 实现一个简单的shell命令行解释器,类
- 向Linux内核增加一个系统调用
- Linux操作系统管理课程设计
- Linux系统编程中文版.pdf
- Linux环境下OPC服务端&客户端
- Linux服务器性能调整
- Interprocess.Communications.in.Linux.The.Nooks
- petalinux编译uboot、kernel、rootfs方法
- openssl-1.0.1e-57.el6.x86_64.rpm
- zeromq-2.1.7.tar.gz
- 《Linux+C编程从初学到精通》源码和实
- Linux运维入门到高级全套
- Tiny6410流水灯——在已经启动的ARM L
- 老男孩linux讲义
- yum-3.2.29-40.el6.centos.noarch.rpm和yum-3.2.
- ARM9 Mini2440核心板原理图和PCB已经封装
- linux操作系统 基于内核模块的进程信
- CRF++-0.58 Linux版本,CRF++安装包
- openswan的Pluto源码分析以及linux的IPse
- LinuxIC v21
- linux下的聊天室
- crf++0.58.tar.gz
- linux系统函数说明手册
- 博通无线网卡驱动linux版
评论
共有 条评论