PPI是Blackfin的視頻接口,Parallel Peripheral Interface,在ADSP-BF53x 上常用于視頻信號和同步數(shù)據的傳輸,是半雙工接口,支持數(shù)據的采集和數(shù)據的傳輸。
ADSP-BF53x 上有一個16Bit 的PPI 接口,最高速度可以到系統(tǒng)時鐘的1/2,有視頻信號傳輸使用的行、列、場是三個同步信號,支持ITU656,ITU601 等模式,可兼容大部分視頻相關的芯片。
PPI 接口自身不能產生時鐘信號,所以PPICLK 信號必須由外部設備或者晶振提供,它沒有專門的行,列同步信號管腳,在使用PPI 時,需采用與其復用的Timer1 和Timer2 管腳來作為行列同步信號管腳,PPI 接口的場同步管腳FS3 與PF3 腳復用,該信號是在傳輸電視視頻信號時,指示當前傳輸?shù)男盘柺瞧鎴鲞是偶場信號,在通常不使用的情況下,該管腳必須下拉。
PPI 接口與其他接口不同,他沒有發(fā)送和接收數(shù)據的寄存器,不能采用Core 來操作數(shù)據,只能采用DMA 傳輸。
PPI 接口管腳與復用定義:
接口寄存器說明:
寄存器 功能
PPI_CONTROL PPI 控制寄存器,用于配置PPI 工作模式
PPI_STATUS PPI 狀態(tài)寄存器
PPI_COUNT PPI 傳輸計數(shù)寄存器,設置圖像一條線由多少數(shù)據組成
PPI_DELAY PPI 延時計數(shù)寄存器,設置在傳輸時延時多少個時鐘開始采數(shù)據
PPI_FRAME PPI 幀寄存器,用來設置一幅完整圖像一幀的線條數(shù)
來看一段關于PPI的核心代碼分析:
*pDMA0_START_ADDR = 0; //配置PPIDMA 數(shù)據起始地址
*pDMA0_X_COUNT = 480; //配置DMA 一行要傳輸多少次數(shù)據
*pDMA0_X_MODIFY = 2; //配置每次傳輸行地址的增量
*pDMA0_Y_COUNT = 286; //配置要傳輸多少行數(shù)據
*pDMA0_Y_MODIFY = 2; //配置每次列數(shù)據地址的增量
*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;"); //系統(tǒng)同步 /
*pPPI_CONTROL |= 0x1; //使能PPI
asm("ssync;"); //系統(tǒng)同步
*pTIMER_ENABLE|= 0x0006; //使能行場同步信號
asm("ssync;"); //系統(tǒng)同步
PPI 的行場同步信號與TIMER1 和TIMER2 復用,所以要配置TIMER 寄存器來啟動PPI 的同步信號。這個代碼就實現(xiàn)了PPI 連續(xù)發(fā)送525*286 尺寸圖像的數(shù)據,其中圖像有效數(shù)據尺寸為480*286。展示了使用 PPIDMA 傳輸數(shù)據的功能。
PPI的視頻教程如下:
視頻清晰版下載: 鏈接: http://pan.baidu.com/s/1qWJOqZi 密碼: bbjb |