资源简介
在友善之臂mini2440上基于linux下的字符设备的ds18b20的驱动,是用gpio模拟的。还有相关测试的应用程序。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “ds18b20.h“
static int sensor_major=SENSOR_MAJOR;
static int sensor_minor=SENSOR_MINOR;
dev_t dev;
struct cdev sensor;
static unsigned char Sensor_Init(void)
{
unsigned char presence=1;
s3c2410_gpio_cfgpin(DQDQ_OUTPUT);
s3c2410_gpio_setpin(DQ1);
udelay(1);
s3c2410_gpio_setpin(DQ0);
udelay(480);
s3c2410_gpio_cfgpin(DQDQ_INPUT);
udelay(55);
s3c2410_gpio_cfgpin(DQDQ_INPUT);
presence = s3c2410_gpio_getpin(DQ);
udelay(200);
return (presence);
}
static void Write_One_Bit(unsigned char Bit)
{
s3c2410_gpio_cfgpin(DQDQ_OUTPUT);
s3c2410_gpio_setpin(DQ0);
udelay(2);
if(Bit==1)s3c2410_gpio_setpin(DQ1);
udelay(65);
s3c2410_gpio_setpin(DQ1);
udelay(2);
}
static unsigned char Read_One_Bit(void)
{
unsigned char Bit;
s3c2410_gpio_cfgpin(DQDQ_OUTPUT);
s3c2410_gpio_setpin(DQ0);
udelay(1);
s3c2410_gpio_setpin(DQ1);
s3c2410_gpio_cfgpin(DQDQ_INPUT);
udelay(13);
Bit = s3c2410_gpio_getpin(DQ);
udelay(65);
s3c2410_gpio_cfgpin(DQDQ_OUTPUT);
s3c2410_gpio_setpin(DQ1);
return (Bit);
}
static void Write_One_Byte(unsigned char Byte)
{
unsigned char loop;
unsigned char temp;
for(loop=0;loop<8;loop++){
temp = Byte>>loop;
temp&= 0x01;
Write_One_Bit(temp);
}
udelay(104);
}
static unsigned char Read_One_Byte(void)
{
int loop;
unsigned char Byte=0;
for(loop=0;loop<8;loop++){
if(Read_One_Bit())Byte|=(0x01< }
return (Byte);
}
static ssize_t sensor_open(struct inode *inodestruct file *filp)
{
if(!Sensor_Init())
{
Write_One_Byte(SKIP_ROM);
Write_One_Byte(WRITE_SCRATCHPAD);
Write_One_Byte(TH);
Write_One_Byte(TL);
Write_One_Byte(BIT_12);
Sensor_Init();
Write_One_Byte(WRITE_SCRATCHPAD);
Write_One_Byte(COPY_SCRATCHPAD);
}
else
{
printk(“init failed!\n“);
}
return 0;
}
static ssize_t sensor_read(struct file *filpchar __user *bufsize_t sizeloff_t *ppos)
{
int tempLtempMret;
Sensor_Init();
Write_One_Byte(SKIP_ROM);
Write_One_Byte(CONVERT_T);
mdelay(750);
Sensor_Init();
Write_One_Byte(SKIP_ROM);
Write_One_Byte(READ_SCRATCHPAD);
tempL=Read_One_Byte();
tempM=Read_One_Byte();
tempM<<=8;
tempM|=tempL;
ret=copy_to_user(buf&tempMsize);
if(ret>0){
return -EFAULT;
}
return 0;
}
int sensor_release(struct inode *inodestruct file *filp)
{
return 0;
}
static const struct file_operations sensor_fops=
{
.owner = THIS_MODULE
.read =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 233 2011-12-23 19:21 DS18B20\.ds18b20.ko.cmd
文件 15102 2011-12-23 15:38 DS18B20\.ds18b20.mod.o.cmd
文件 25585 2011-12-23 19:21 DS18B20\.ds18b20.o.cmd
文件 67 2011-12-23 19:21 DS18B20\.tmp_versions\ds18b20.mod
文件 3860 2011-12-23 19:20 DS18B20\ds18b20.c
文件 900 2011-12-23 15:34 DS18B20\ds18b20.h
文件 4906 2011-12-23 19:21 DS18B20\ds18b20.ko
文件 444 2011-12-23 15:38 DS18B20\ds18b20.mod.c
文件 1492 2011-12-23 15:38 DS18B20\ds18b20.mod.o
文件 4156 2011-12-23 19:21 DS18B20\ds18b20.o
文件 195 2011-12-22 22:34 DS18B20\Makefile
文件 0 2011-12-23 15:38 DS18B20\Module.symvers
文件 41 2011-12-23 19:21 DS18B20\modules.order
文件 14493 2011-12-23 19:24 DS18B20\tem
文件 490 2011-12-23 19:24 DS18B20\tem.c
..AD... 0 2011-12-23 19:21 DS18B20\.tmp_versions
..AD... 0 2011-12-23 20:44 DS18B20
----------- --------- ---------- ----- ----
71964 17
- 上一篇:Vf控制保证输出电压频率恒定
- 下一篇:全国省市地区json格式数据文件
相关资源
- VMware下安装Mac os系统的显卡驱动
- linux下插入U盘,自动读取文件
- 东北大学软件学院linux大作业
- 示范了Unix和Linux下如何利用Raw Socket构
- arduino可调速度电机程序TB6612FNG驱动
- redhat官方镜像大全
- rfid rc522 linux驱动
- FT245RL verilog驱动
- linux下最好用的upx加壳工具
- JTAG 驱动安装程序及方法
- AD7708驱动程序
- linux下RTL8821蓝牙驱动
- 嵌入式Linux视频教程完整视频
- mini2440按键驱动实验--4个按键分别控制
- Red_Hat_Enterprise_Linux-7-Performance_Tuning_
- LCD12864 驱动程序1
- ATI可用的芯片驱动64bit_IOATAFamily.kext
- Linux C大文件的创建和读写速率
- linux基础及应用课后习题答案 .pdf
- 用51单片机驱动DS1302时间模块+DS18B20温
- linux fb-test-帧缓冲 两个完整源代码
- 430的读取DS18B20并在1602液晶上显示
- usbisp ii WIN7/8线驱动-双龙JUNGO-Atmel-
- WEBDRIVER 黑苹果英伟达显卡驱动 可去系
- GTK+glade3设计的计算器适用于linux、w
- minigui clock时钟
- Linux命令速查手册.CHM
- 自己实现linux下ls命令 的两个选项
- linux题
- Linux环境下的网络抓包工具pcap,界面
评论
共有 条评论