硬件准备

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" );
}

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

  1. ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备

    BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...

  2. ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)

    我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  4. ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  5. ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...

  6. ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...

  7. ADI Blackfin DSP处理器-BF533的开发详解80:uClinux在BF上的应用详解

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 Blackfin可以跑操作系统,因为他作为一个 ...

  8. ADI Blackfin DSP处理器-BF533的开发详解15:RS232串口的实现(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 实现原理 ADSP-EDU-B ...

  9. ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

最新文章

  1. RESTful风格及其SpringMVC实现
  2. javascript中FORM表单的submit()方法经验教训.
  3. Expected a default value of type Tensor on parameter residual:
  4. 远程服务器系统管理,如何远程管理服务器系统(转载)
  5. 微软、UIUC韩家炜组联合出品:少样本NER最新综述
  6. BZOJ 3173: [Tjoi2013]最长上升子序列
  7. 云原生存储详解:容器存储与K8s存储卷
  8. “云时代架构”经典文章阅读感想十六
  9. avast! 5 简体中文正式版 官方直接下载链接
  10. 如何读群晖硬盘_群晖nas使用教程6:将USB设备识别为本地SATA口硬盘 - 群晖教程...
  11. 161021_又是两个月还是总结
  12. matlab aic sic,ADF检验的时候选用AIC和SIC得到的结论不一致应该如何选择?
  13. 厦门大学计算机2018专业分数线,2018厦门大学录取分数线,2018厦门大学各专业录取分数线...
  14. apiCloud + aui实现tab栏切换功能
  15. 软件项目规划大纲知识点
  16. C#合并多个pdf到一个pdf文件;不使用Aspose.pdf.dll,避免水印
  17. 提升百度权重有什么方法和技巧?
  18. 亲,你的浏览器过时了,请立即更换Chrome浏览器。
  19. 最新苹果手机丢失通过ICCID反查手机号的方法【丢锋网独家整理】
  20. 年轻姑娘网络创业故事

热门文章

  1. 大数据如何简化业务运营
  2. [bzoj3175][bzoj4808][网络流-最小割]攻击装置/马
  3. 计算机课忘记签到,有定时提醒大学生上网课签到的提醒便签软件吗?
  4. JDK7安装和配置 JAVA JDK7安装配置教程
  5. 微信小程序——地图(定位,多个标记点)
  6. 02 四旋翼无人机的组成与拼装(上)
  7. 【建议收藏】手把手带你搭建SSM项目
  8. Hive 优化--SQL执行顺序、Hive参数、数据倾斜 、小文件优化
  9. 2021-10-19-PDFJS使用基础教程
  10. 问题 Q: 5.18 兔子繁殖(2级)假设一对兔子(一雌一雄)每个月可繁殖出一对小兔子来,并且所有的兔子都不死,这样从第一个月开始在笼中圈养一对有繁殖能力的小兔子,那么month个月可以繁殖多少对兔子