当前位置: 首页 > news >正文

正点原子imx6ull+ov2640+lcd显示问题汇总

正点原子官方给的ov2640设备树配置无法成功Probe显示出ID号,改成下面的设备树配置即可(注意引脚GPIO1_04和GPIO1_02不能被其他设备树节点占用)

&i2c2 {clock_frequency = <100000>;pinctrl-names = "default";pinctrl-0 = <&pinctrl_i2c2>;status = "okay";ov2640: ov2640@0x30 {compatible = "ovti,ov2640";reg = <0x30>;pinctrl-names = "default";pinctrl-0 = <&pinctrl_csi1>;clocks = <&clks IMX6UL_CLK_CSI>;   clock-names = "xvclk";    pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;resetb-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;csi_id = <0>;mclk = <24000000>;mclk_source = <0>;status = "okay";port {ov2640_ep: endpoint {remote-endpoint = <&csi1_ep>;bus-width = <8>;};};};......

更改csi

&csi {status = "okay";port {csi1_ep: endpoint {remote-endpoint = <&ov2640_ep>;};};
};

同时要注意OV2640拍摄出来LCD出现频闪,花纹等,大概率是LCD设备树配置问题,LCD这里使用的是(4.3寸 800*480分辨率)RGB888,而摄像头ov2640(支持640*480分辨率)是以RGB565方式采集,这两个问题会导致屏幕的频闪和花纹。具体修改的方式如下:

将LCD的bits-per-pixel改为16也就是(RBG565),其他设备树配置和自己的屏幕保持一致即可。

至此设备树相关配置完成

ov2640.c和mx6s_capture.c都是内核里的驱动文件,复制即可,注意mx6s_capture.c里面有一部分要修改:

static int mx6s_configure_csi(struct mx6s_csi_dev *csi_dev)
{struct v4l2_pix_format *pix = &csi_dev->pix;u32 cr1, cr18;u32 width;if (pix->field == V4L2_FIELD_INTERLACED) {csi_deinterlace_enable(csi_dev, true);csi_buf_stride_set(csi_dev, csi_dev->pix.width);csi_deinterlace_mode(csi_dev, csi_dev->std);} else {csi_deinterlace_enable(csi_dev, false);csi_buf_stride_set(csi_dev, 0);}switch (csi_dev->fmt->pixelformat) {case V4L2_PIX_FMT_YUV32:case V4L2_PIX_FMT_SBGGR8:width = pix->width;break;case V4L2_PIX_FMT_UYVY:case V4L2_PIX_FMT_YUYV:if (csi_dev->csi_mux_mipi == true)width = pix->width;else/* For parallel 8-bit sensor input */width = pix->width * 2;break;default:pr_debug("   case not supported\n");return -EINVAL;}csi_set_imagpara(csi_dev, width, pix->height);if (csi_dev->csi_mux_mipi == true) {cr1 = csi_read(csi_dev, CSI_CSICR1);cr1 &= ~BIT_GCLK_MODE;csi_write(csi_dev, cr1, CSI_CSICR1);cr18 = csi_read(csi_dev, CSI_CSICR18);cr18 &= BIT_MIPI_DATA_FORMAT_MASK;cr18 |= BIT_DATA_FROM_MIPI;switch (csi_dev->fmt->pixelformat) {case V4L2_PIX_FMT_UYVY:case V4L2_PIX_FMT_YUYV:cr18 |= BIT_MIPI_DATA_FORMAT_YUV422_8B;break;case V4L2_PIX_FMT_SBGGR8:cr18 |= BIT_MIPI_DATA_FORMAT_RAW8;break;default:pr_debug("   fmt not supported\n");return -EINVAL;}csi_write(csi_dev, cr18, CSI_CSICR18);}return 0;
}

到此驱动也编写完成。

在/lib/module/4.1.15里面加载mx6s_capture.ko模块即可完成注册(ov2640默认加载),显示效果如下:

应用层的话,官方给的v4l2代码视频流解码有点问题,所有博主只是实现拍照功能。要注意要将画面裁剪成和ov2640分辨率一样的情况,否则画面就会被拉伸显示不全。但是不拉伸的话,右边又有一块区域是黑边,这个问题后面再在解决。

http://www.dtcms.com/a/391969.html

相关文章:

  • 【Spring AI】简单入门(一)
  • Java中接口入参验证
  • 【高并发内存池——项目】central cache 讲解
  • vue3 <el-image 的:src=“event.fileName[0]“ 长度为 “0“ 的元组类型 “[]“ 在索引 “0“ 处没有元素。
  • 问题记录: 跨服务接口调用日期类型字段格式转换问题
  • 亚马逊关键词按什么角度筛选?从人工摸索到智能化系统的全面升级
  • C语言基础【19】:指针6
  • 正则表达式【阿里版】
  • 使用云端GPU训练Lerobot
  • RNA-seq分析之基因ID转换
  • [视图功能9] 图表联动与多维度分析:打造协同动态的数据洞察仪表盘
  • Python基础 6》数据类型_列表(List)
  • 40、大模型工程平台全景对比 - 技术选型指南
  • BEVformer训练nusenes-mini数据集
  • 《Unity3D NavMeshAgent与Rigidbody移动同步问题的技术拆解》
  • Psy Protocol 技术核心解读
  • PS练习3:使用变形将图片放到实际场景中
  • 在排序数组中查找元素的第一个和最后一个位置
  • 一条命令在ubuntu安装vscode
  • 【开题答辩全过程】以 ASP.NET抗疫物资管理系统为例,包含答辩的问题和答案
  • 探饭 - 字节跳动推出的AI美食推荐助手
  • ZCC5515_耐压9.5V ,超低静态功耗5uA,完全替代CS5515
  • 端脑云AI生图体验:从提示词到精美肖像
  • 临界处有一条看不见的河
  • JavaWeb--day8-- Mybatis(正式)
  • 基于WSL BES2710编译环境搭建方法
  • 模块化设计逻辑:太阳镜气流单元 / 耳机可拆卸结构的装配精度与兼容性分析
  • 半监督学习实战:如何用少量标注数据获得媲美全监督学习的性能?
  • 作业3(初学CSS)
  • CSS基础(总结)