第九篇?pt2262无线遥控input子系统驱动带源码,带视频演示。
时间:10-02
整理:3721RD
点击:
本来要用蓝牙遥控的,但是我手里的2541,好像是蓝牙4.0的,我的手机连接不上,找了我同学,也没有连上,图片如下:
索性先放一边吧,拿着手里的PT2262和PT2272,做发送和接收吧。
先普及下PT2262的接收形式:
当发送和接收对应的地址匹配时,对应的引脚会输出高电平。这就类似按键的情况了。所以,采用了input子系统的架构。
源码如下:
着重分析下,输出的重要数据表达的意思,这些都可以从内核源码里面分析出来。
最后附上视频演示:
http://v.youku.com/v_show/id_XMTgyNTcxOTgwOA==.html
索性先放一边吧,拿着手里的PT2262和PT2272,做发送和接收吧。
先普及下PT2262的接收形式:
当发送和接收对应的地址匹配时,对应的引脚会输出高电平。这就类似按键的情况了。所以,采用了input子系统的架构。
源码如下:
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("iysheng ");
- #define GPIO_PT2262 4
- #define BUF_LEN 8
- #define PT_NAME "pt2262"
- struct input_dev *pt_input_dev;
- int gpio_pt2262[GPIO_PT2262]={49,60,51,50};
- int irq_gpio[GPIO_PT2262];
- irqreturn_t pt2262_isr(int irq, void *gpio_num)
- {
- int i,j;
- int *gpio_num_tmp = (int *)gpio_num;
- j = gpio_get_value(*gpio_num_tmp);
- for(i=0; i evbit);
- //set_bit(EV_SYN, pt_input_dev->evbit);
- set_bit(KEY_A, pt_input_dev->keybit);
- set_bit(KEY_B, pt_input_dev->keybit);
- set_bit(KEY_C, pt_input_dev->keybit);
- set_bit(KEY_D, pt_input_dev->keybit);
- pt_input_dev->name = PT_NAME;
- /*注册输入设备*/
- ret = input_register_device(pt_input_dev);
-
- for(i=0; i<GPIO_PT2262; i++)
- {
- sprintf(gpio_name_buf, "pt_gpio%d", i);
- ret = gpio_request(gpio_pt2262[i], gpio_name_buf);
- if(ret < 0)
- goto fail;
- gpio_direction_input(gpio_pt2262[i]);
- gpio_export(gpio_pt2262[i], false);
- irq_gpio[i] = gpio_to_irq(gpio_pt2262[i]);
- ret = request_irq(irq_gpio[i], pt2262_isr, IRQF_TRIGGER_RISING|IRQF_TRIGGER_FALLING, "pt_isr", (void*)(gpio_pt2262+i));
- if(ret < 0)
- goto fail;
- }
- fail:
- return ret;
-
- }
- module_init(pt_init);
- void __exit pt_exit(void)
- {
- int i;
- for(i=0; i<GPIO_PT2262; i++)
- {
- free_irq(irq_gpio[i], gpio_pt2262+i);
- gpio_unexport(gpio_pt2262[i]);
- gpio_free(gpio_pt2262[i]);
- }
- /*取消注册输入设备*/
- input_unregister_device(pt_input_dev);
- /*释放输入设备*/
- input_free_device(pt_input_dev);
-
- }
- module_exit(pt_exit);
着重分析下,输出的重要数据表达的意思,这些都可以从内核源码里面分析出来。
最后附上视频演示:
http://v.youku.com/v_show/id_XMTgyNTcxOTgwOA==.html