ADI Blackfin DSP处理器-BF533的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)
硬件准备
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的应用详解(含源码)相关推荐
- ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备
BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...
- ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)
我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...
- ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...
- ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...
- ADI Blackfin DSP处理器-BF533的开发详解80:uClinux在BF上的应用详解
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 Blackfin可以跑操作系统,因为他作为一个 ...
- ADI Blackfin DSP处理器-BF533的开发详解15:RS232串口的实现(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 实现原理 ADSP-EDU-B ...
- ADI Blackfin DSP处理器-BF533的开发详解59:DSP控制ADXL345三轴加速度传感器的应用2(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
最新文章
- RESTful风格及其SpringMVC实现
- javascript中FORM表单的submit()方法经验教训.
- Expected a default value of type Tensor on parameter residual:
- 远程服务器系统管理,如何远程管理服务器系统(转载)
- 微软、UIUC韩家炜组联合出品:少样本NER最新综述
- BZOJ 3173: [Tjoi2013]最长上升子序列
- 云原生存储详解:容器存储与K8s存储卷
- “云时代架构”经典文章阅读感想十六
- avast! 5 简体中文正式版 官方直接下载链接
- 如何读群晖硬盘_群晖nas使用教程6:将USB设备识别为本地SATA口硬盘 - 群晖教程...
- 161021_又是两个月还是总结
- matlab aic sic,ADF检验的时候选用AIC和SIC得到的结论不一致应该如何选择?
- 厦门大学计算机2018专业分数线,2018厦门大学录取分数线,2018厦门大学各专业录取分数线...
- apiCloud + aui实现tab栏切换功能
- 软件项目规划大纲知识点
- C#合并多个pdf到一个pdf文件;不使用Aspose.pdf.dll,避免水印
- 提升百度权重有什么方法和技巧?
- 亲,你的浏览器过时了,请立即更换Chrome浏览器。
- 最新苹果手机丢失通过ICCID反查手机号的方法【丢锋网独家整理】
- 年轻姑娘网络创业故事
热门文章
- 大数据如何简化业务运营
- [bzoj3175][bzoj4808][网络流-最小割]攻击装置/马
- 计算机课忘记签到,有定时提醒大学生上网课签到的提醒便签软件吗?
- JDK7安装和配置 JAVA JDK7安装配置教程
- 微信小程序——地图(定位,多个标记点)
- 02 四旋翼无人机的组成与拼装(上)
- 【建议收藏】手把手带你搭建SSM项目
- Hive 优化--SQL执行顺序、Hive参数、数据倾斜 、小文件优化
- 2021-10-19-PDFJS使用基础教程
- 问题 Q: 5.18 兔子繁殖(2级)假设一对兔子(一雌一雄)每个月可繁殖出一对小兔子来,并且所有的兔子都不死,这样从第一个月开始在笼中圈养一对有繁殖能力的小兔子,那么month个月可以繁殖多少对兔子