RK3288 控制usb摄像头补光GPIO
正常可以通过添加dts配置,再从设备树中读取gpio号,在这里为了简单,直接使用GPIO号,先通过终端测试gpio,
系统自带GPIO控制驱动:
内核已经自带了通用GPIO驱动,可以直接在用户空间操作.
路径: /sys/class/gpio
root@rk3288:/sys/class/gpio # ls
export
gpiochip0
gpiochip120
gpiochip152
gpiochip184
gpiochip216
gpiochip24
gpiochip248
gpiochip280
gpiochip56
gpiochip88
unexport
比如我要操作GPIO8_A6作为高电平输出有效, 那么有以下问题:
1. 对应的gpio number是多少呢?
2. 如何设置成输出
3. 如何输出高电平
问题1:
可以通过/sys/kernel/debug/gpio查询信息:
root@rk3288:/sys/kernel/debug # cat gpio
//snip
GPIOs 184-215, platform/ff770000.pinctrl, gpio6:
gpio-193 (? ) in hi
gpio-194 (? ) in hi
GPIOs 216-247, platform/ff770000.pinctrl, gpio7:
gpio-218 (enable ) out hi
gpio-219 (lcd_en ) in hi
gpio-220 (lcd_cs ) in hi
gpio-221 (gslX680 wake pin ) out hi
gpio-222 (gslX680 irq pin ) out lo
gpio-223 (headset_gpio ) in hi
gpio-233 (? ) in hi
gpio-234 (? ) in hi
GPIOs 248-279, platform/ff770000.pinctrl, gpio8:
GPIOs 280-311, platform/ff770000.pinctrl, gpio15:
可以看到gpio8是以nubmer为248开始, 那么GPIO8_A6就是 248 + 6 = 254
接下来就可以导出gpio了
root@rk3288:/sys/class/gpio # echo 254 > export
root@rk3288:/sys/class/gpio # ls
export
gpio254
......
问题2
root@rk3288:/sys/class/gpio/gpio254 # echo out > direction
root@rk3288:/sys/class/gpio/gpio254 # cat direction
out
问题3:
root@rk3288:/sys/class/gpio/gpio254 # echo 1 > value
root@rk3288:/sys/class/gpio/gpio254 # cat value
1
打开后置摄像头时打开led补光
初始化led补光GPIO口,在注册后置usb摄像头时申请gpio
/work/rk3288/firefly-rk3288_android5.1_git_20180126/kernel/drivers/media/usb/uvc/uvc_driver.c
/* carroll add led gpio start */
#define FILL_LIGHT_GPIO 233
/* carroll add led gpio end */ static int uvc_register_video(struct uvc_device *dev,
struct uvc_streaming *stream)
{
/* carroll add led gpio start */
static bool led_init_flag = true;
/* carroll add led gpio end */ ................ stream->vdev = vdev;
video_set_drvdata(vdev, stream); /* carroll add usb deice num start */
vdev->portnum = dev->udev->portnum;
/* carroll add usb deice num end */ ................ /* carroll add led gpio start */
if(vdev->portnum == && led_init_flag == true)
{
printk("carroll led-camera-2 gpio init\n");
ret = gpio_request(FILL_LIGHT_GPIO, "led-camera-2");
if (ret != ) {
printk("%s request led-camera_2_gpio error", __func__);
return ret;
}
gpio_direction_output(FILL_LIGHT_GPIO, );
led_init_flag = false;
}
/* carroll add led gpio end */
打开后置usb摄像头和关闭摄像头时修改gpio值
/work/rk3288/firefly-rk3288_android5.1_git_20180126/kernel/drivers/media/usb/uvc/uvc_v4l2.c
/* carroll add led gpio start */
#define FILL_LIGHT_GPIO 233
/* carroll add led gpio end */
static int uvc_v4l2_open(struct file *file)
{
...........
/* carroll add led gpio start */
if(stream->dev->udev->portnum == )
{
gpio_set_value(FILL_LIGHT_GPIO, );
printk("carroll led on \n");
}
/* carroll add led gpio end */ return ;
} static int uvc_v4l2_release(struct file *file)
{
...........
/* carroll add led gpio start */
if(stream->dev->udev->portnum == )
{
gpio_set_value(FILL_LIGHT_GPIO, );
printk("carroll led off \n");
}
/* carroll add led gpio end */ return ;
}
参考:
https://blog.csdn.net/kris_fei/article/details/69553422
RK3288 控制usb摄像头补光GPIO的更多相关文章
- VFP调用API来控制USB摄像头,实现拍照或录像
*--前提:VFP7.0以上;Windows 2K及以上*--控件:AVICAP32.DLL *--定义:一般放到主程序或表单(集)的Load事件中Public WM_CAP_DRIVER_DISCO ...
- RK3288 USB触摸屏与USB摄像头同时使用时触摸卡顿
CPU:RK3288 系统:Android 5.1 当USB触摸屏与USB摄像头同时使用时,有时会出现触摸卡顿,看似按键按下没有弹起. getevent 查看触摸屏上报,只有 DOWN,没有 UP,正 ...
- Jetson TX2(3)opencv3 打开usb摄像头
ubuntu2604 opencv3.4.0 https://blog.csdn.net/ultimate1212/article/details/80936175?utm_source=blogxg ...
- 利用opencv从USB摄像头获取图片
由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...
- 安卓 USB摄像头 开源库 UVCCamera 教程
https://github.com/saki4510t/UVCCamera UVCCamera 听名字就知道使用UVC( USB VEDIO CLASS) 协议的通用类库.linux原生支持,基本支 ...
- 2.6 USB摄像头驱动之USB描述符
学习目标:分析USB摄像头驱动的描述符: 一.USB设备描述符 在usb设备驱动分析那一节,也用到了usb描述符. usb描述符可分为: USB设备描述符(usb_device_descriptor) ...
- 2.5 USB摄像头驱动程序框架
学习目标:根据vivi驱动架构和linux-2.6.31/linux-2.6.31.14/drivers/media/video/uvc/Uvc_driver.c驱动源码,分析usb摄像头驱动程序框架 ...
- 【智能无线小车系列十】通过USB摄像头实现网络监控功能
如果仅有静态图像可能还不足以满足我们的需求,我们可能会需要用到实时的监控功能.这里介绍一款小应用:motion.motion的功能可强大了,不仅可以将监控的画面通过视频传输,实时展现,更为强大的是,m ...
- USB摄像头驱动框架分析(五)
一.USB摄像头驱动框架如下所示:1.构造一个usb_driver2.设置 probe: 2.1. 分配video_device:video_device_alloc ...
随机推荐
- Apache2.2学习笔记全集
一.基本介绍 待补充... 二.Apache默认配置文件解释 # 定义apache运行的目录,即程序所在的位置 ServerRoot "/usr/local/apache2" # ...
- Centos 7安装的一些事项
一.Wifi无法连接 ip addr 显示:unmanaged, plugin missing 先连有线网yum install -y NetworkManager-wifi systemctl re ...
- Session的load和get方法区别是什么?
①如果没有找到符合条件的记录,get方法返回null值,而load方法会抛出异常: ②get方法直接返回实体类对象,load方法返回实体类对象的代理: ③在Hibernate3之前,get方法只在一级 ...
- 【Flutter学习】之DateTime日期转换
概述: 表示一个时间点 通过构造函数或解析格式化的字符串创建DateTime对象,并且符合ISO 8601标准的子集,小时是24小时制,范围在0-23之间 DateTime对象创建之后,将是固定不变的 ...
- 【JavaWeb项目】一个众筹网站的开发(三)第一个网页
一.bootstrap 本项目采用bootstrap3 bootstrap中文网 https://www.bootcss.com/ 使用bootstrap三步: 1.导入jQuery 2.导入boot ...
- UVa 699 The Falling Leaves (树水题)
Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on ...
- springcloud的config
CONFIG服务端 加入依赖: <dependency> <groupId>org.springframework.cloud</groupId> <arti ...
- OC学习篇之---内存管理介绍和使用
在之前的一片文章我们说了OC中谓词操作:http://blog.csdn.net/jiangwei0910410003/article/details/41923507,从今天开始我们就来看一下OC中 ...
- Dart 和 Flutter 使用json_annotation和json_serializable来处理json数据教程
在学习fultter的时候突然想到如何去处理从服务器获取的json或者将app中的对象数据转换成json上传给服务器 于是研究一下dart对json数据的处理 首先需要依赖下面的第三方库(这里要强调下 ...
- StringUtils 方法全集
最近做项目需要,经常需要最字符串进行拆分等操作,经搜索和研究,发现了一篇StringUtils方法全集的文章,不错,特贴出来,以后用: 参考:http://blog.sina.com.cn/s/blo ...