资源简介
jz2440上实验成功
内核是4.3.2版本
交叉编译工具是arm-linux 3.4.5
我的接线方式:VCC接J3的17口,GND接J3的18口,DATA接的是J1的1口
测试成功。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define DEVICE_NAME “dht11“
#define DHT11_IO S3C2410_GPE(15)
/* dht11读一个字节 */
static char DHT11_read_byte ( void )
{
char DHT11_byte ;
unsigned char i ;
unsigned char temp ;
DHT11_byte = 0 ;
for ( i = 0 ; i < 8 ; i ++ )
{
temp = 0 ;
while ( ! (s3c2410_gpio_getpin ( DHT11_IO ) ) )
{
temp ++ ;
if ( temp > 12 )
return 1 ;
udelay ( 5 ) ;
}
temp = 0 ;
while ( s3c2410_gpio_getpin ( DHT11_IO ) )
{
temp ++ ;
if ( temp > 20 )
return 1 ;
udelay ( 5 ) ;
}
if ( temp > 6 )
{
DHT11_byte <<= 1 ;
DHT11_byte |= 1 ;
}
else
{
DHT11_byte <<= 1 ;
DHT11_byte |= 0 ;
}
}
return DHT11_byte ;
}
static ssize_t DHT11_read ( struct file* filp char __user* buf size_t count loff_t* f_pos )
{
unsigned char DataTemp;
unsigned char i;
unsigned char err;
char tempBuf[5];
// loff_t pos = *f_pos ;
err = 0 ;
s3c2410_gpio_cfgpin ( DHT11_IO S3C2410_GPIO_OUTPUT );
s3c2410_gpio_setpin ( DHT11_IO 0 );
msleep ( 20 );
// mdelay ( 18 );
s3c2410_gpio_setpin ( DHT11_IO 1 );
udelay ( 30 );
s3c2410_gpio_cfgpin ( DHT11_IO S3C2410_GPIO_INPUT );
if ( !err )
{
DataTemp = 10 ;
while ( !( s3c2410_gpio_getpin ( DHT11_IO ) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
DataTemp = 10 ;
while ( ( s3c2410_gpio_getpin ( DHT11_IO ) ) && DataTemp )
{
DataTemp --;
udelay ( 10 );
}
if ( !DataTemp )
{
err = 1;
count = -EFAULT;
}
}
if ( !err )
{
for ( i = 0; i < 5; i ++ )
{
tempBuf[i] = DHT11_read_byte () ;
}
DataTemp = 0 ;
for ( i = 0; i < 4; i ++ )
{
DataTemp += tempBuf[i] ;
}
if ( DataTemp != tempBuf[4] )
{
count = -EFAULT;
}
// if ( count > ( 5 - pos ) )
// {
// count = 5 - pos ;
// }
if ( count > 5 )
{
count = 5 ;
}
// pos += count;
// if ( copy_to_user ( buf tempBuf + *f_pos count ) )
if ( copy_to_user ( buf tempBuf count ) )
{
count = -EFAULT ;
}
// *f_pos = pos;
}
s3c2410_gpio_cfgpin ( DHT11_IO S3C2410_GPIO_OUTPUT );
s3c2410_gpio_setpin ( DHT11_IO 1 );
return count;
}
static struct file_operations dev_fops = {
.owner = THIS_MODULE
.read = DHT11_read
};
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR
.name = DEVICE_NAME
.fops = &dev_fops
};
static int __init DHT11_init_module ( void )
{
int
相关资源
- 全套linux运维教程
- linux-tpcc测试
- Centos7.1(1503)国内镜像地址.txt
- linux制作启动u盘工具
- HID 免驱 描述符
- 基于Zigbee协议栈的DHT11串口实验
- linuxredis实战教程视频.txt
- Linux内存管理详解.ppt
- jdk11_linux_64.txt
- linux系统net-tools工具包
- 文件系统源代码
- IBM ILOG CPLEX Optimization Studio Free Editio
- Linux 运维入门到高级 全套系列
- gd-devel-2.0.35-11.el6.x86_64.rpm
- intelfortran2019forWINMACLINUX网盘.txt
- 哈工大 操作系统实验二 linux0.01添加系
- u-boot.bin_tekkaman_2009.11.bz2
- wdlinux官方的wdcp虚拟机管理面版最新全
- redhat 7.5 HA for sap
- VMware下RedHat Linux网络设置
- 支持并发的多人聊天程序
- 三级Linux应用与开发技术考试大纲20
- DHT11 温湿度传感器1602显示 可用程序
- vimrc的配置文件
- 4412开发板linux-QT下使用wfi设置
- linux下的ddos工具
- 简单的shell解释器
- iMX6 EIM总线驱动程序
- 东北大学linux操作系统期末作业
- Linux运维视频零基础入门到精通.txt
评论
共有 条评论