v3s 荔枝派zero开发板 添加 ov2640 摄像头(一)

2023-11-13

1、准备

储备知识

1)DVP是并口传输,速度较慢,传输的带宽低,使用需要PCLK\sensor输出时钟、MCLK(XCLK)\外部时钟输入、VSYNC\场同步、HSYNC\行同步、D[0:11]\并口数据——可以是8/10/12bit数据位数大小。DVP摄像头电源和MIPI一样。

2)熟悉linux 摄像头架构,了解数据流向以及原理,需要用到的模块等。

硬件:

荔枝派 zero 带底座 版本 主控v3s

官方淘宝店买的 ov2640 dvp接口摄像头

一般CMOS摄像头模块的接口分为两类:
(1).控制类(I2C总线)
– 初始化:对摄像头模块进行相应的初始化操作
,让摄像头模块能够正常的输出摄像头数据
– 控制: 设置亮度、旋转、缩放等等的操作

(2).数据传输类
与LCD的接口完全一样。

这里是控制类

软件

buildroot 2023.05-30

kernel 版本 5.10.2

v3s的csi驱动(soc自身的)

ov2640驱动(设备驱动)

步骤

  • 配置环境 
  • 修改设备树
  • 修改内核配置
  • 重新构建一个buildroot文件系统,增加需要使用的工具等内容
  • 测试

2、硬件分析

因为购买的是dvp接口的摄像头,所以查看原理图可知,j5 部分就是dock板子上的dvp接口,另外一个是j8 部分 的mipi接口(这里不展开),dvp接口真多!

 24个排线

分别是D6、5、7、4、8、9、10、11,pclk,gnd ,mclk,DOVDD,DVDD,hsync,pwdn,vsync,reset,sck,avdd,sda,agnd,nc gnd,gnd

其中分三大类 1、数据管脚功能,2、时钟同步类管脚功能  3、电源地类

各信号脚定义:
PCLK:像素点同步时钟信号,每个PCLK对应一个像素点,可以为48MHz;对于时钟信号,一般做包地处理,减少对其他信号的干扰,还需要在源端加电阻和电容,减少过冲和振铃,从而减少对其他信号的干扰。
MCLK(XCLK):外部时钟输入,可由主控或晶振提供,由sensor规格书确定,可以为24MHZ;
VSYNC:帧同步信号,一帧一个信号,频率为几十Hz(30Hz)
HSYNC:行同步信号(频率为几十KHz)
例如:分别率 320×240的屏,每一行需要输入320个脉冲来依次移位、锁存这一行的数据,然后来个HSYNC 脉冲换一行;这样依次输入240行之后换行同时来个VSYNC脉冲把行计数器清零,又重新从第一行开始刷新显示。

由原理图可知,csi_sda和csi_sck对应i2c1 的管脚配置,分别是 pe22,pe21管脚

 找到这些后,下面就要通过设备数使能这些管脚的功能!

 3、设备树修改

简述DTS和DTSI

*.dts文件是一种ASCII文本对Device Tree的描述,放置在内核的/arch/arm/boot/dts目录。一般而言,一个*.dts文件对应一个ARM的machine。

*.dtsi文件作用:由于一个SOC可能有多个不同的电路板,而每个电路板拥有一个 *.dts。这些dts势必会存在许多共同部分,为了减少代码的冗余,设备树将这些共同部分提炼保存在*.dtsi文件中,供不同的dts共同使用。*.dtsi的使用方法,类似于C语言的头文件,在dts文件中需要进行include *.dtsi文件。当然,dtsi本身也支持include 另一个dtsi文件。

sun8i-v3s.dtsi 针对soc通用的设备树修改,首先通过pinctrl使能管脚:

pio: pinctrl@1c20800 ...

1、8位数据管脚

csi1_8bit: csi1-8bit@0 {
                   pins      = "PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15";
                   bias-disable;
                   function = "csi";
            };

网上很多都是配置10个管脚,不知道为啥?

2、时钟类管脚


 csi1_clk: csi1-clk@0 {
                pins = "PE0","PE2","PE3";
                bias-disable;
                function = "csi";
                };

 csi1_mclk: csi1-mclk@0 {
                pins = "PE1";
                bias-disable;
                function = "csi";
                 };

用于与摄像头芯片通讯,设置配置等信息的i2c1
i2c1_pins: i2c1 {

        pins = "PE21", "PE22";

        function = "i2c1";

                };
这里管脚配置算是完了,下一步是如何配置v3s的csi驱动

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

v3s 荔枝派zero开发板 添加 ov2640 摄像头(一) 的相关文章

  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • 我们如何在使用循环时调用 ansible playbook 中的变量

    我有两个文件 其中这些文件包含server names and server IP s 我想更改 替换一些特定的server names and IP addressees根据要求在两个文件中 这与这篇文章 因为它被要求开设一个新职位 ht
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • 选择fasta文件中氨基酸超过300个且“C”出现至少4次的序列

    我有一个包含蛋白质序列的 fasta 文件 我想选择超过 300 个氨基酸且半胱氨酸 C 氨基酸出现超过 4 次的序列 我使用此命令来选择具有超过 300 个 aa 的序列 cat 72hDOWN fasta fasta bioawk c
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • 什么是 .axf 文件?

    我是arm架构的新手 我从事嵌入式软件工作 并试图了解我的项目二进制文件的调试文件夹中存在的 axf文件 发现它是链接器在构建过程中生成的arm可执行格式文件 用于调试崩溃 所以很明显它包含了一些调试信息 但不清楚具体是什么信息 而且deb
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R

随机推荐

  • 从0到1,一文掌握用户画像标签体系

    一 标签体系概览 1 什么是对象 2 什么是标签 标签是人为设定的 根据业务场景需求 对目标对象运用一定的算法得到的高度精炼的特征标识 标签是对对象某个维度特征的描述与刻画 是某一种用户特征的符号表示 每一种标签都规定了我们观察认识描述对象
  • Redis第二十二讲 Redis高可用集群节点通信机制

    两个端口 在哨兵系统中 节点分为数据节点和哨兵节点 前者存储数据 后者实现额外的控制功能 在集群中 没有数据节点与非数据节点之分 所有的节点都存储数据 也都参与集群状态的维护 为此 集群中的每个节点 都提供了两个 TCP端口 普通端口 即我
  • 电脑上面的word文档被删除了怎么办?分享四种亲测恢复方法

    不小心把电脑里面的word文档删除了 当你需要用到这些被误删的文档后 怎么找回呢 根本不知道从何入手的小伙伴不用担心 因为办法总比困难多多 下面就让小编为大家分享word文档恢复的方法 方法均以win10系统为例进行操作 大家跟着操作将其恢
  • android.content.res.Resources$NotFoundException: String resource ID #0x1

    在Android开发中如果出现android content res Resources NotFoundException String resource ID 0x1这样的错误 你想也不用想 一定是Textview控件显示数据出了问题
  • 某公众号登录加密(webpack)

    前言 随手记 1 本文章仅作学习参考使用 不做其他使用 网站 aHR0cHM6Ly9tcC53ZWl4aW4ucXEuY29tLw 输入密码 分析抓包信息 如下 可以初步判断是一个md5的密文数据 使用全局搜索Search定位到加密位置下断
  • 使用国内镜像源在线安装QT Mac M1

    参考 使用国内镜像源在线安装QT 2023 3 25更新 qt国内镜像 Iotfsd的博客 CSDN博客 网上搜了一些资料 大多数建议用fiddler代理 Mac M1操作不起来 看到上述windows的方法 尝试了一下 运气很好成功了 大
  • 闭环系统的零极点图判定稳定性_系统的稳定性判别

    pzmap 函数可以绘制连续系统在复平面内的零极点图 其调用格式如下 p z pamap num den 或 p z pzmap A B C D 或 p z pzmap p z 其中列向量 p 为系统的极点 列向量 z 为系统的零点 num
  • SQLilabs的第20关(HTTP请求头-Cookie)——报错注入

    1 判断闭合方式 我们在cookie的后面加上一个 返回页面如下 我们再将 改成 返回页面如下 这说明闭合方式是 2 确定注入方式 我们在判断闭合方式时发现 该网站会返回报错信息 又没有回显 因此适合使用报错注入 3 爆破数据库名 用户名
  • opencv中morphologyEx()函数

    opencv中morphologyEx函数 函数原型 参数解释 例子 相关函数 参考博客 函数原型 CV EXPORTS W void morphologyEx InputArray src OutputArray dst int op I
  • pnpm 构建 Monorepo workspace项目

    pnpm 构建 Monorepo 项目 使用背景 因为公司要做的项目比较多 项目之间又会相互依赖 目前分为pc后台 pc商城 uniapp项目等等 所以为了代码的复用和代码的规范提交 决定引入pnpm来创建Monorepo项目 Monore
  • 每次win10开机需要重启一次系统才能进去,第一次停留在启动画面就不动了。

    这是由于部分电脑的主板不支持快速启动造成的 所以把快速启动功能关闭掉即可 具体操作步骤如下 控制面板 硬件和声音 电源选项 选择电源按钮的功能 选择 更改当前不可用的设置 然后把 启用快速启动 推荐 前面的勾去掉 再点击下面的 保存设置 即
  • Python 自动化测试(三): pytest 参数化测试用例构建

    在之前的文章中主要分享了 pytest 的实用特性 接下来讲 Pytest 参数化用例的构建 如果待测试的输入与输出是一组数据 可以把测试数据组织起来用不同的测试数据调用相同的测试方法 参数化顾名思义就是把不同的参数 写到一个集合里 然后程
  • Jetson Nano复制系统和U盘启动【第三部分】

    一 写在前面 第三部分承接第二部分 由于Nano EMMC容量只有16GB大小 安装系统和SDK后 Nano EMMC只剩下1 4GB容量 几乎没有空间安装其它软件 第三部分的主要内容是将Nano EMMC系统完全复制到U盘中 并修改Nan
  • 经验模式分解(EMD)——简介及Matlab工具箱安装

    最近在做脑电信号分析 在导师的建议下学习了一点经验模式分解 下面简称EMD 的皮毛 期间也是遇到了很多问题 在这里整理出来 一是为了自己备忘 二是为了能尽量帮到有需要的朋友 一 EMD简介 经验模态分解 Empirical Mode Dec
  • Oracle数据库 SQL Plus 命令使用指南

    熟悉oracle的朋友都知道 SQL PLUS是一个重要的和ORACLE打交道的工具 SQL PLUS本身有很多命令 可以帮助我们做很多事情 包括产生一些规格化的报表 提供人机交互等等 下面 我就简单地说明一下 供大家参考 一 帮助命令 H
  • Java有哪些基本数据类型?

    在Java中 有8种基本数据类型 它们分为两种类型 值类型 Primitive types byte 字节型 占用1个字节 表示范围为 128 127 short 短整型 占用2个字节 表示范围为 32768 32767 int 整型 占用
  • Spring Boot 框架总结

    Spring Boot 框架总结 1 springboot的引言 Spring Boot是由Pivotal团队提供的全新框架 其设计目的是用来简化Spring应用的 初始搭建以及开发过程 该框架使用了特定的方式来进行配置 从而使开发人员不
  • SAP S4 FI后台详细配置教程- PART5 (应收帐目和应付帐目配置篇)

    SAP S4 FI后台详细配置教程 PART5 应收帐目和应付帐目配置篇 1 客户 1 1 定义客户科目组 概念功能说明 客户是按照账户组来管理的 可以通过定义客户科目组来进行区 如一般客户 集团内客户 一 次性客户等 客户主数据信息分三个
  • hive add jar 报java.net.UnknownHostException: user错误

    hive gt add jar hdfs mypath myjar jar java net UnknownHostException user Query returned non zero code 1 cause java net U
  • v3s 荔枝派zero开发板 添加 ov2640 摄像头(一)

    1 准备 储备知识 1 DVP是并口传输 速度较慢 传输的带宽低 使用需要PCLK sensor输出时钟 MCLK XCLK 外部时钟输入 VSYNC 场同步 HSYNC 行同步 D 0 11 并口数据 可以是8 10 12bit数据位数大