您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> Blackfin入门教程---BF53x_PPI
本帖共有4328个阅读者
发表帖子 发表投票 回复主题
Blackfin入门教程---BF53x_PPI
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Blackfin入门教程---BF53x_PPI

接口功能介绍

PPI(Parallel Peripheral Interface )接口在ADSP-BF53x上常用于视频信号和同步数据的传输,是半双工接口,支持数据的采集和数据的传输。

ADSP-BF533x上有一个16Bit的PPI接口,最高速度可以到系统时钟的1/2,有视频信号传输使用的行、列、场是三个同步信号,支持ITU656,ITU601等模式,可兼容大部分视频相关的芯片。

PPI接口自身不能产生时钟信号,所以PPICLK信号必须由外部设备或者晶振提供,它没有专门的行,列同步信号管脚,在使用PPI时,需采用与其复用的Timer1和Timer2管脚来作为行列同步信号管脚,PPI接口的场同步管脚FS3与PF3脚复用,该信号是在传输电视视频信号时,指示当前传输的信号是奇场还是偶场信号,在通常不使用的情况下,该管脚必须下拉。

PPI接口与其他接口不同,他没有发送和接收数据的寄存器,不能采用Core来操作数据,只能采用DMA传输。

PPI接口管脚与复用定义:

接口寄存器说明



寄存器

功能

PPI_CONTROL

PPI控制寄存器,用于配置PPI工作模式

PPI_STATUS

PPI状态寄存器

PPI_COUNT

PPI传输计数寄存器,设置图像一条线由多少数据组成

PPI_DELAY

PPI延时计数寄存器,设置在传输时延时多少个时钟开始采数据

PPI_FRAME

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连续发送525*286尺寸图像的数据,其中图像有效数据尺寸为480*286。

测试结果

PPI接口传输设置的数据。

该代码实现了使用PPIDMA传输数据的功能,没有实际的设备与其通讯来观察结果,如需要看接口,可以运行板卡驱动下的液晶屏代码,观察传输的图像数据。


上传的附件
   2011682095252.rar [ 383.87 KB ]


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/6/8 20:09:56
DSP菜鸟(论坛新手)
DSP菜鸟
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:120
积分:4
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

顶一下!!!


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/8 20:18:09
lucinda(论坛新手)
lucinda
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:100
积分:0
注册时间:2011/7/14
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
支持支持!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/7/14 15:26:46
red_wlh(论坛新手)
red_wlh
头衔:社区公民
帮派:无帮无派
帖数:34
金钱:359
积分:41
注册时间:2012/4/9
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

顶一个,学习了!


学习DSP中
等级:论坛新手 参考IP地址:*.*.*.*
2012/4/11 16:40:46
奋斗的自我(论坛新手)
奋斗的自我
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:124
积分:4
注册时间:2013/6/5
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我想问一下,向ADV7171中传输数据用这种配置可以吗?如果不行,那应该用那种配置呢?谢谢。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/22 10:35:09
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不可以,ADV7171是ITU656模式,要将PPI配置为ITU656模式,并且DMA和PPI都要改。
VDSP软件下自带一些视频输入输出的例子,都是ITU656的,你可以参考他的

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/22 23:23:19
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159277 Call, 1 Queries, Processed in 0.030762 second(s),