資源簡介
在友善之臂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格式數據文件
評論
共有 條評論