热度 11
2012-5-3 10:14
1261 次阅读|
0 个评论
第七集更新,主要讲解了Blackfin的PPI,本集是Blackfin接口系列的最后一集,其他非常规接口,如BF54X上的CAN,SD卡控制器,LAN控制器,BF537上的LAN等均不在此系列中出现,如果有必要,OP会开单章介绍。 http://player.youku.com/player.php/sid/XMjg4NTkyNDYw/v.swf 3.9 BF53x_PPI 3.91 接口功能介绍 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接口管脚与复用定义: 3.92 接口寄存器说明 寄存器 功能 PPI_CONTROL PPI控制寄存器,用于配置PPI工作模式 PPI_STATUS PPI状态寄存器 PPI_COUNT PPI传输计数寄存器,设置图像一条线由多少数据组成 PPI_DELAY PPI延时计数寄存器,设置在传输时延时多少个时钟开始采数据 PPI_FRAME PPI帧寄存器,用来设置一幅完整图像一帧的线条数 3.93 例子代码分析 *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的同步信号。 3.94 代码实现功能 代码实现了PPI连续发送525*286尺寸图像的数据,其中图像有效数据尺寸为480*286。 3.95 测试结果 PPI接口传输设置的数据。 该代码实现了使用PPIDMA传输数据的功能,没有实际的设备与其通讯来观察结果,如需要看接口,可以运行板卡驱动下的液晶屏代码,观察传输的图像数据。 优酷链接:http://v.youku.com/v_show/id_XMjg4NTkyNDYw.html 清晰版下载地址:http://u.115.com/file/bhzk2hl7 如需提取码,则是: bhzk2hl7 开发板链接:http://item.taobao.com/item.htm?spm=1103Qmdt.3-3dfNy.h-1Akvusid=9026190872