ADI Blackfin DSP处理器-BF533的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)

news2024/9/30 13:15:17

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述
CVBS IN 视频输入

在这里插入图片描述

硬件实现原理

CVBS_IN 子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT3 和 PORT4 上,板卡插入时,应将扩展子卡板上标注的“圆圈”符号与板卡上的“圆圈”对准插入,避免子卡板反向接入板卡。正确插入子卡板后,CVBS
输入的接口是朝向板外。

CVBS_IN 子卡板采用 ADI 公司的 ADV7180 视频解码处理器,通过采集模拟信号,以 8bit YUYV 数据格式通过 PPI 接口传给 ADSP-BF53x 处理器。ADV7180 采用 IIC 接口进行初始化,它有 6 个模拟输入接口, CVBS_IN 子
卡板上引出了 3 个。

其接口支持 CVBS 信号,S-Video 信号,YPrPb 信号输入,通过配置寄存器选择输入接口,其配置模式如下:

在这里插入图片描述

为确保这些接口配置功能都实现,CVBS_IN 子卡板将接口 AIN1、AIN4、AIN5 引出。其使用方式如下:

在这里插入图片描述

下图为 CVBS_IN 子卡板顶视示意图,板卡上有白、红、黄三个接口,分别代表的接口功能是 AIN1、AIN4、AIN5。

该接口支持 CVBS、S-Video、YPrPb 模式的视频输出。例子程序仅使用了 CVBS 视频输出的功能。

在这里插入图片描述

ADV7180 IIC 器件地址: Slave address W 为 40H ,Slave address R 为 41H
ADV7180 和 LCD 公用一个 PPI 接口,采用 CPLD 来切换 PPI 时钟。

DEVICE_OE 寄存器(读/写):
DEVICE_OE 寄存器地址:0x20320000
DEVICE_OE 寄存器设置硬件设备上一些控制管脚的电平状态。

DEVICE_OE 寄存器位功能:

在这里插入图片描述

PPI_SET1~0:PPI 选择位
00:选通 CMOS PPI 时钟,使能 CMOS
01:选通 TFT PPI 时钟
选通 板卡为扩展接口的 PPICLK 提供时钟
1x:选通 PPI 时钟由扩展接口输入
选通 CVBS_IN 子卡板需将 PPI_SET0 位设置为 x,PPI_SET1 位设置为 1。

硬件连接示意图

在这里插入图片描述

代码实现功能

代码实现了通过 IIC 接口配置 ADV7180,使其工作在 27MHz 时钟输入,CVBS 模式,AIN1 接口信号输入。运行代码后会将 AIN1 输入的视频信号通过 PPI 总线进行采集,采集完成后会进入 PPIDMA 中断,并打印视频格式信息。通过 Image Viewer 工具可查看采集到的图像信息。

电视信号是奇场合偶场分离传输的,所以采集到的数据也是按奇场合偶场分离排列的。

测试步骤
1. 将仿真器(ICE)与 ADSP-EDU-BF53x 开发板和计算机连接好,将 CVBS_IN 子卡板按板上“圆圈”符号提示,插入板卡。正确插入后,莲花头视频接口朝板外。
2. 先给 ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
3. 运行 VisualDSP++ 5.0 软件,选择合适的 BF53x 的 session 将仿真器与软件连接。
4. 加载 VisualDSP++ 5.0 工程文件 BF53x_CVBSIN.dpj 文件,编译并全速运行。

测试结果

代码运行完成后,会出现以下打印:

在这里插入图片描述
将代码停止运行,打开 Image Viewer 工具,按下图配置:

在这里插入图片描述

在 Image Viewer 工具窗口中查看采集到的奇场和偶场分离的 CVBS 图像。

在这里插入图片描述

程序源码

cpu.c

#ifndef CPU_H
#define CPU_H
#include <cdefbf533.h>

/**********************************************************************************

  • 名称 :Set_PLL
  • 功能 :初始化内核时钟和系统时钟
  • 入口参数 :pmsel pssel 设置参数
  • 出口参数 :无
    ***********/
    void Set_PLL(int pmsel,int pssel)
    {
    int new_PLL_CTL;
    pPLL_DIV = pssel;
    asm(“ssync;”);
    new_PLL_CTL = (pmsel & 0x3f) << 9;
    pSIC_IWR |= 0xffffffff;
    if (new_PLL_CTL != pPLL_CTL)
    {
    pPLL_CTL = new_PLL_CTL;
    asm(“ssync;”);
    asm(“idle;”);
    }
    }
    /
  • 名称 :Init_EBIU
  • 功能 :初始化并允许异步BANK存储器工作
  • 入口参数 :无
  • 出口参数 :无
    ****************************************************************************/

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc0ffc0;
*pEBIU_AMGCTL = 0x000f;
}

/****************************************************************************

  • 名称 :Init_SDRAM
  • 功能 :初始化SDRAM
  • 入口参数 :无
  • 出口参数 :无
    ****************************************************************************/
    void Init_SDRAM(void)
    {
    *pEBIU_SDRRC = 0x00000817;
    *pEBIU_SDBCTL = 0x00000013;
    *pEBIU_SDGCTL = 0x0091998d;
    ssync();
    }

/****************************************************************************

  • 名称 : delay
  • 功能 : 延时函数
  • 入口参数 :无
  • 返回值 :无
    ****************************************************************************/
    void delay(unsigned int tem)
    {
    int i;
    for(i=0;i<tem;i++)
    asm(“nop;”);
    }

#endif

ppi.c

#include <cdefBF533.h>
#include <sys\exception.h>

EX_INTERRUPT_HANDLER(DMA0_PPI_ISR);
/****************************************************************************

  • 名称 :Init_Timers
  • 功能 :初始化TIMER0 为PWM模式。
  • 入口参数 :无
  • 出口参数 :无
    ****/
    void Init_Timers(void)
    {
    pTIMER0_CONFIG = 0x0019;
    pTIMER0_PERIOD = 0x00800000;
    pTIMER0_WIDTH = 0x00400000;
    pTIMER_ENABLE = 0x0001;
    }
    /
  • 名称 :Init_Interrupts
  • 功能 : DMA0 PPI interrupt 允许
  • 入口参数 :无
  • 出口参数 :无
    ****************************************************************************/
    void Init_Interrupts(void)
    {
    *pSIC_IAR0 = *pSIC_IAR0 & 0xffffffff | 0x00000000;
    *pSIC_IAR1 = *pSIC_IAR1 & 0xffffffff | 0x00000001;
    *pSIC_IAR2 = *pSIC_IAR2 & 0xffffffff | 0x00000000;
    register_handler(ik_ivg8, DMA0_PPI_ISR);
    *pSIC_IMASK=0x00000100;
    }

/****************************************************************************

  • 名称 :Video_Frame_Capture

  • 功能 : 初始化PPI控制器 初始化DMA0控制器

  • 入口参数 :无

  • 出口参数 :无
    ****************************************************************************/
    void Video_Frame_Capture(void)
    {
    *pPPI_FRAME =625;
    *pPPI_COUNT = 1439;
    *pPPI_DELAY = 282;

    *pPPI_CONTROL = 0x002c ;

    *pDMA0_START_ADDR = 0;
    pDMA0_X_COUNT = 7202;
    *pDMA0_X_MODIFY = 1;
    *pDMA0_Y_COUNT = 625;
    *pDMA0_Y_MODIFY = 1;
    *pDMA0_PERIPHERAL_MAP = 0x0;
    *pDMA0_CONFIG = WNR | WDSIZE_8| DMA2D| DI_EN ;

    *pDMA0_CONFIG |= DMAEN;
    ssync();
    *pPPI_CONTROL |= PORT_EN;
    ssync();
    }

/****************************************************************************

  • 名称 :EX_INTERRUPT_HANDLER
  • 功能 : 中断函数 清 DMA 中断标志,关PPI
  • 入口参数 :无
  • 出口参数 :无
    ****************************************************************************/

EX_INTERRUPT_HANDLER(DMA0_PPI_ISR)
{
*pDMA0_IRQ_STATUS = 0x1;
pPPI_CONTROL &= 0xfffe;
printf( "\nSuccess Capture One Frame: 720
625\n");
printf( " YUYV422 Format\n" );
printf( " Data Addr is 0\n" );
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[内网渗透]—域外向域内信息收集、密码喷洒

前言 当我们与目标内网建立了socks5隧道后,就可以从域外对域内机器进行信息搜集了,很多工具不用上传到目标机器,也就不易被AV检测到,但是有可能会被一些流量检测设备发现有大量socks5流量。 接下来介绍下如何通过域外对域内进⾏更深的信息搜集:枚举域⽤户、查看域内⽤户…

【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)

一、HBase数据模型 HBase分布式数据库的数据存储在行列式的表格中&#xff0c;它是一个多维度的映射模型&#xff0c;其数据模型如下所示。表的索引是行键&#xff0c;列族&#xff0c;列限定符和时间戳&#xff0c;表在水平方向由一个或者多个列族组成&#xff0c;一个列族中…

[附源码]Python计算机毕业设计红色景点自驾游网站管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]Node.js计算机毕业设计古诗词知识学习系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

计算机毕设Python+Vue心理咨询预约系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

医院、诊所看这里,一个分诊屏+叫号系统,实现门诊高效排队叫号

为维系患者候诊秩序&#xff0c;减少插队混乱的情况&#xff0c;医院、诊所等医疗机构会考虑采购智能排队叫号系统。 依照系统预定规则&#xff0c;对门诊患者进行数据排列&#xff0c;医生快捷呼叫&#xff0c;打造现代化有序的绿色门诊。 排队叫号系统&#xff0c;是将软件…

「C#」异步编程玩法笔记-WinForm中的常见问题

目录 1、异步更新界面 1.1、问题 1.2、解决问题 1.3、AsyncOperationManager和AsyncOperation 1.4、Invoke、BeginInvoke、EndInvoke及InvokeRequired Invoke InvokeRequired BeginInvoke EndInvoke 2、死锁 2.1、问题 2.2、 解决方法 2.2.1、不要await 2.2.2、用…

Jmeter(十八):硬件性能监控指标

硬件性能监控指标 一、性能监控初步介绍 性能测试的主要目标 1.在当前的服务器配置情况&#xff0c;最大的用户数 2.平均响应时间ART&#xff0c;找出时间较长的业务 3.每秒事务数TPS&#xff0c;服务器的处理能力 性能测试涉及的内容 1.客户端性能测试&#xff1a;web前…

【Redis】主从复制和哨兵模式

主从复制 主从复制&#xff1a;主机数据更新后根据配置和策略&#xff0c; 自动同步到备机的master/slaver机制&#xff0c;Master以写为主&#xff0c;Slave以读为主 作用&#xff1a; 读写分离&#xff0c;性能扩展容灾快速恢复 主从复制的配置 在我的/myredis目录中&…

第17章 前端之全局存储:Vuex=Store

17章 前端之全局存储&#xff1a;VuexStore Store用于对数据进行存储&#xff0c;并共享以为所有需要的Vue页面中的调用提供数据及其方法支撑&#xff1b;Vuex是Store的内置引用包&#xff0c;即如果想要前端Vue程序支撑Store必须在新建Vue程序&#xff1b;如果Vue程序没有引用…

【python】一文带你理解并解决conda activate虚拟环境后,pip安装的包没放在虚拟环境

太长不看版 环境变量有问题&#xff0c;查看环境变量&#xff0c;应该会发现&#xff0c;在你虚拟环境的地址之前&#xff0c;有其他的地址&#xff0c;比如/home/xxx/.local/bin:等&#xff0c;而且这个地址里面刚好有pip,python这些程序。 最简单的办法&#xff1a;去把/hom…

第十五章 Golang单元测试

1. 先看一个需求 在我们工作中&#xff0c;我们会遇到这样的情况&#xff0c;就是去确认一个函数&#xff0c;或者一个模块的结果是否正确。 func addUpper(n int) int{res : 0for i : 1;i<n;i{res i}return res }2.传统方法的优缺点 不方便&#xff0c;我们需要在main函…

java基于微信小程序的二手交易系统-计算机毕业设计

项目介绍 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&a…

QCC51XX---RAM资源查看

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 想必大家有时会遇到一些memory的panic,就像下图的提示 这主要是内存溢出引起的。而内存溢出主要有内存池(memory pool)和RAM溢出两种,不管哪种溢出都是不规范使用内存或过度使用造成的。那具体有多少能用或怎么正确…

SpringCloud 学习笔记

❤ 作者主页&#xff1a;Java技术一点通的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是Java技术一点通&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得关注、点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习&#xff0c;共同进步&#xff01;&am…

SpringBoot 优雅地实现文件的上传和下载

2.技术栈mavenspringbootmybatis-plusmysqlthymeleafbootstrap3.数据库表 CREATE TABLE t_upload_file (id bigint(11) NOT NULL AUTO_INCREMENT,old_name varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,new_Name varchar(100) CHARACTER SET utf8 CO…

async和await随谈

以下只是个人观点&#xff0c;如果有出入或者错误之处&#xff0c;欢迎提出&#xff0c;你不需要纠结我的说法是否有一些小瑕疵&#xff0c;把其中你认为对的地方融入到自己的知识里去就好了&#xff0c;你学到的才是自己的。 在说async和await之前&#xff0c;先讲另一个东西迭…

ADI Blackfin DSP处理器-BF533的开发详解56:DSP控制ADV7180采集图像到LCD显示(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了采集一帧 720625 尺寸的 P 制 CVBS 信号源&#xff0c;以 YUYV422 的数据格式保存&#xff0c;通过 MDMA 将奇偶场数据交…

比较级和最高级

1. 单音节词和少数双音节词的比较级和最高级的构成 1)常见的单音节词和少数以-er和-ow结尾的双音节词&#xff0c;比较级在末尾加-er,最高级在末尾加-est 例如&#xff1a;单音节词&#xff1a;small-smaller-smallest, tall-taller-tallest; 双音节词&#xff1a;clever-cl…

第二十九章 linux-i2c子系统二

第二十九章 linux-i2c子系统二 文章目录第二十九章 linux-i2c子系统二linux-i2c数据结构分析linux-i2c驱动框架IIC核心IIC总线驱动IIC设备驱动linux-i2c设备实现硬件拓扑linux-i2c数据结构分析 driver 设备驱动模型 i2c_client来描述一个挂载在I2C总线上的I2C设备。 struc…