硬件准备

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视频接口的驱动和应用(含源代码)相关推荐

  1. ADI Blackfin DSP处理器-BF533的开发详解24:触摸屏的实现和应用(含源代码)

    硬件准备** ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 使用到硬件模块原理图 功能介绍 四线电阻式 ...

  2. ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 SPI 接口是 4 线串口,可以 ...

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

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

  4. ADI Blackfin DSP处理器-BF533的开发详解9:UART串口的驱动和应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 UART(Universal A ...

  5. ADI Blackfin DSP处理器-BF533的开发详解8:Timer定时器的驱动和应用(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF53x 上有 3 ...

  6. ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了 NES 游戏模拟器在 ...

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

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

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

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

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

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 CVBS IN 视频输入 硬件实现原理 CVB ...

最新文章

  1. 回文字符串(51Nod-1092)
  2. 如何使用并解释通过 vSAN 监测收集的性能统计信息 (2064240)
  3. UVA725 UVALive5362 Division【暴力+进制】
  4. JVM的4种垃圾回收算法、垃圾回收机制与总结
  5. gitgrab.sh
  6. 除了 DBA, SQL 人还能胜任的黄金职业
  7. Chrome OS Factory开发测试流程
  8. Win10下 vc++6.0打开文件闪退解决
  9. ios 原生android系统下载地址,iOS原生系统自带分享
  10. H3C模拟器如何连接SecureCRT8.7
  11. Java设计模式——工厂模式——模拟Spring
  12. RGB图灰度及通道理解
  13. R语言如何绘制韦恩图(6)
  14. Android应用程序签名 debug签名
  15. 环境大数据应用“含苞待放”?
  16. 面试官常问的 web前端 问题(四)
  17. JavaWeb 后端 三 之 Response Request
  18. 安徽省2016年c语言笔试,2016年安徽省计算机二级考试C语言(模拟试卷四)
  19. Docker 之 Docker 镜像
  20. 蓝桥杯C/C++百校真题赛(3期)Day3(考勤刷卡、最大和)

热门文章

  1. CAD中解决打印图纸模糊而且有的字体深浅不一的方法
  2. 明解C语言(中级篇)—第二章
  3. 查看数据库的版本命令
  4. 移远NB-IoT BC28 AT指令集
  5. sqlplus命令无需监听服务就可以登录本地数据库的登录方式的研究
  6. BTC合约手续费计算
  7. hexo×语雀 实现云端富文本写作
  8. 巧用订阅功能增加营收|Google Play 线上培训营 · 三月第 1 期
  9. matlab仿真转速波形为负,转速、电流双闭环直流调速系统的课程设计MATLAB仿真.docx...
  10. cassss服务未启动_SS 服务未启动,系统不支持 S5.1 加密锁