怎样写基于GPIO子系统的外接传感器的驱动

将tiny4412的开发板外接人体感应传感器

1.先读懂传感器的电器特性,以及引脚的功能。

      一般会有三个引脚,  接地  5V电压   以及输出信号(OUT)

2.链接好引脚到开发板上,一般OUT链接开发板的引脚时注意查看芯片手册。

      比如说链接到GPA0(3)引脚上    就得设置GPA0(3)的引脚功能,用GPIO的宏实现,不用对具体的寄存器引脚进行操作。

3.因为传感器的输出信号是3.3V,所以得外接电平转换信号进行转换,转换成1.8V的输出信号链接到开发板。

      电平转换芯片的使用。

4.电路链接好后开始写驱动程序,先写GPIO框架(想伸手的留言,或请看驱动之GPIO子系统),在设置引脚为输如功能,在函数集中定义open一个操作函数就行。

这是我写的程序:

static ssize_t demo_read(struct file *filp, char __user *buf, size_t cnt, loff_t *fops)
 40 {
 41     int ctu;
 42     char buf_n[8] = {"copy cg"};//没用我用来测试用的
 43     int gv = 0;
 44     gv = gpio_get_value(leds[0]);//得到人体感应器的值
 45     //itoa(gv, buf_n);(char)(gc)
 46     buf_n[0] = gv + '0';   //将得到的引脚信号的int值转换成char型
 47
 48     if((ctu = copy_to_user(buf,buf_n,cnt)) < 0){    //将得到的信号值拷贝到用户空间
 49         printk("copy_to_user ctu = %d\n",ctu);       //打印调试信息
 50         return ctu;
 51     }
 52
 53     /*if(gv == 0)//没用,本人调试用的。
 54     {
 55         
 56     }*/
 57     return gv;
 58 }



5.然后就自己写APP.C

    先open,  再read      读的值就是传感器的输出信号。

你可能感兴趣的:(怎样写基于GPIO子系统的外接传感器的驱动)