ADI Blackfin DSP处理器-BF533的开发详解11:PPI视频接口的驱动和应用(含源代码)
硬件准备
ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器
软件准备
Visual DSP++软件
硬件链接
接口功能介绍
PPI(Parallel Peripheral Interface )接口在 ADSP-BF53x 上常用于视频信号和同步数据的传输,是半双工接口,支持数据的采集和数据的传输。
ADSP-BF533 上有一个 16Bit 的 PPI 接口,最高速度可以到系统时钟的 1/2,有视频信号传输使用的行、列、场是三个同步信号,支持ITU656,ITU601 等模式,可兼容大部分视频相关的芯片。
PPI 接口自身不能产生时钟信号,所以 PPICLK 信号必须由外部设备或者晶振提供,它没有专门的行,列同步信号管脚,在使用 PPI 时,需采用与其复用的 Timer1 和 Timer2 管脚来作为行列同步信号管脚,PPI 接口的场同步
管脚 FS3 与 PF3 脚复用,该信号是在传输电视视频信号时,指示当前传输的信号是奇场还是偶场信号,在通常不使用的情况下,该管脚必须下拉。
PPI 接口与其他接口不同,他没有发送和接收数据的寄存器,不能采用 Core 来操作数据,只能采用 DMA 传输。
PPI 接口管脚与复用定义:
接口寄存器说明
核心代码分析
*pDMA0_START_ADDR = 0; //配置 PPIDMA 数据起始地址
*pDMA0_X_COUNT = 480; //配置 DMA 一行要传输多少次数据
*pDMA0_X_MODIFY = 2; //配置每次传输行地址的增量
*pDMA0_Y_COUNT = 286; //配置要传输多少行数据
*pDMA0_Y_MODIFY = 2; //配置每次列数据地址的增量
*pDMA0_CONFIG = 0x1034; //配置 DMA 工作模式
*pPPI_CONTROL = 0x781e; //配置 PPI 工作偶是
*pPPI_DELAY = 0; //配置时钟延时为 0
*pPPI_COUNT = 479; //配置 PPI 每行要传输 480 次
*pPPI_FRAME = 286; //配置每帧图像有 286 行
*pTIMER1_PERIOD = 525; //配置行同步信号产生的周期
*pTIMER1_WIDTH = 41; //配置行同步信号宽度
*pTIMER1_CONFIG = 0x00a9;//配置行同步信号工作模式
*pTIMER2_PERIOD = 150150;//配置列同步信号产生的周期
*pTIMER2_WIDTH = 5250; //配置列同步信号宽度
*pTIMER2_CONFIG = 0x00a9; //配置列同步信号工作模式
*pDMA0_CONFIG |= 0x1; //使能 DMA
asm(“ssync;”); //系统同步 /
*pPPI_CONTROL |= 0x1; //使能 PPI
asm(“ssync;”); //系统同步
*pTIMER_ENABLE|= 0x0006; //使能行场同步信号
asm(“ssync;”); //系统同步
PPI 的行场同步信号与 TIMER1 和 TIMER2 复用,所以要配置 TIMER 寄存器来启动 PPI 的同步信号。
代码实现功能
代码实现了 PPI 连续发送 525286 尺寸图像的数据,其中图像有效数据尺寸为 480286。
PPI 接口传输设置的数据。该代码实现了使用 PPIDMA 传输数据的功能,没有实际的设备与其通讯来观察结果,如需要看结果,可以运行板卡驱动下的液晶屏代码,观察传输的图像数据。
完整代码
#include <cdefBF533.h>
void InitDMA(void);
void InitEPPI0(void);
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;”);
}
}
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0x7bb07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void InitDMA(void)
{
*pDMA0_START_ADDR = 0;
*pDMA0_X_COUNT = 480;
*pDMA0_X_MODIFY = 2;
*pDMA0_Y_COUNT = 286;
*pDMA0_Y_MODIFY = 2;
*pDMA0_CONFIG = 0x1034;
}
void InitPPI(void)
{
*pPPI_CONTROL = 0x781e;
*pPPI_DELAY = 0;
*pPPI_COUNT = 479;
*pPPI_FRAME = 286;
}
void InitTimer(void)
{
*pTIMER1_PERIOD = 525;
*pTIMER1_WIDTH = 41;
*pTIMER1_CONFIG = 0x00a9;
*pTIMER2_PERIOD = 150150;
*pTIMER2_WIDTH = 5250;
*pTIMER2_CONFIG = 0x00a9;
}
void PPI_TMR_DMA_Enable(void)
{
*pDMA0_CONFIG |= 0x1;
asm(“ssync;”);
InitTimer();
*pPPI_CONTROL |= 0x1;
asm(“ssync;”);
*pTIMER_ENABLE|= 0x0006;
asm(“ssync;”);
}
void PPI_TMR_DMAR_Disable(void)
{
*pDMA0_CONFIG &= (~0x1);
*pPPI_CONTROL &= (~0x1);
}
void main(void)
{
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
InitDMA();
InitPPI();
InitTimer();
PPI_TMR_DMA_Enable();while(1);
}
ADI Blackfin DSP处理器-BF533的开发详解11:PPI视频接口的驱动和应用(含源代码)相关推荐
- ADI Blackfin DSP处理器-BF533的开发详解24:触摸屏的实现和应用(含源代码)
硬件准备** ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 使用到硬件模块原理图 功能介绍 四线电阻式 ...
- ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 SPI 接口是 4 线串口,可以 ...
- ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...
- ADI Blackfin DSP处理器-BF533的开发详解9:UART串口的驱动和应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 UART(Universal A ...
- ADI Blackfin DSP处理器-BF533的开发详解8:Timer定时器的驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF53x 上有 3 ...
- ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了 NES 游戏模拟器在 ...
- 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的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 CVBS IN 视频输入 硬件实现原理 CVB ...
最新文章
- 回文字符串(51Nod-1092)
- 如何使用并解释通过 vSAN 监测收集的性能统计信息 (2064240)
- UVA725 UVALive5362 Division【暴力+进制】
- JVM的4种垃圾回收算法、垃圾回收机制与总结
- gitgrab.sh
- 除了 DBA, SQL 人还能胜任的黄金职业
- Chrome OS Factory开发测试流程
- Win10下 vc++6.0打开文件闪退解决
- ios 原生android系统下载地址,iOS原生系统自带分享
- H3C模拟器如何连接SecureCRT8.7
- Java设计模式——工厂模式——模拟Spring
- RGB图灰度及通道理解
- R语言如何绘制韦恩图(6)
- Android应用程序签名 debug签名
- 环境大数据应用“含苞待放”?
- 面试官常问的 web前端 问题(四)
- JavaWeb 后端 三 之 Response Request
- 安徽省2016年c语言笔试,2016年安徽省计算机二级考试C语言(模拟试卷四)
- Docker 之 Docker 镜像
- 蓝桥杯C/C++百校真题赛(3期)Day3(考勤刷卡、最大和)
热门文章
- CAD中解决打印图纸模糊而且有的字体深浅不一的方法
- 明解C语言(中级篇)—第二章
- 查看数据库的版本命令
- 移远NB-IoT BC28 AT指令集
- sqlplus命令无需监听服务就可以登录本地数据库的登录方式的研究
- BTC合约手续费计算
- hexo×语雀 实现云端富文本写作
- 巧用订阅功能增加营收|Google Play 线上培训营 · 三月第 1 期
- matlab仿真转速波形为负,转速、电流双闭环直流调速系统的课程设计MATLAB仿真.docx...
- cassss服务未启动_SS 服务未启动,系统不支持 S5.1 加密锁