SPORT是Blackfin專門的音頻接口,是最高速的串口,當(dāng)然也有不少人拿這個接口去干別的,但在ADI自己的定義里,它大多數(shù)是來接音頻的。
ADSP-BF53x 上有兩個SPORT 口,SPORT(synchronous serial ports)接口是ADSP-BF53x 上速度最快的串口,其速度可以達到系統(tǒng)時鐘的1/2, 每一個 SPORT 口有兩根接收數(shù)據(jù)線和兩根傳輸數(shù)據(jù)線,支持全雙工模式傳輸。
SPORT 接口通常用做一些高速的數(shù)據(jù)傳輸,它支持I2S 模式,通常將SPORT 接口連接音頻的編解碼器芯片,作為音頻數(shù)據(jù)輸出接口。
SPORT 時鐘頻率配置:
SPORTx_TCLK frequency = (SCLK frequency)/(2 x (SPORTx_TCLKDIV + 1))
SPORTx_RCLK frequency = (SCLK frequency)/(2 x (SPORTx_RCLKDIV + 1))
SPORT 同步信號頻率配置:
SPORTxTFS frequency = (TSCLKx frequency)/(SPORTx_TFSDIV + 1)
SPORTxRFS frequency = (RSCLKx frequency)/(SPORTx_RFSDIV + 1)
不同模式下,寄存器配置值:
接口寄存器說明:
寄存器 功能
SPORTx_TX_CONFIG SPORTx 傳輸配置寄存器
SPORTx_RX_CONFIG SPORTx 傳輸配置寄存器
SPORTx_TX SPORTx 傳輸寄存器
SPORTx_RX SPORTx 接收寄存器
SPORTx_TSCLKDIV SPORTx 傳輸時鐘配置寄存器
SPORTx_RSCLKDIV SPORTx 接收時鐘配置寄存器
SPORTx_TFSDIV SPORTx 傳輸同步信號配置寄存器
SPORTx_RFSDIV SPORTx 接收同步信號配置寄存器
SPORTx_STAT SPORTx 狀態(tài)寄存器
作為一個高速串口,不多說了,看一段核心程序:
*pSPORT1_TCLKDIV = TCLKDIV; //配置SPORT 傳輸接口的時鐘頻率
*pSPORT1_TFSDIV = TFSDIV; //配置SPORT 傳輸接口的同步頻率
*pSPORT1_TCR1 = ITFS|TFSR|ITCLK; //配置SPORT 傳輸工作模式
*pSPORT1_TCR2 = 31; //配置SPORT 以32Bit 數(shù)據(jù)傳輸
*pDMA4_PERIPHERAL_MAP = 0x4000; //設(shè)置SPORT 傳輸接口DMA
*pDMA4_CONFIG = WDSIZE_32 | DI_EN |FLOW_1; //設(shè)置DMA 工作模式
*pDMA4_START_ADDR = (void *)iTxBuffer; //設(shè)置DMA 傳輸數(shù)據(jù)起始地址
*pDMA4_X_COUNT = 1000; //設(shè)置DMA 傳輸次數(shù)
*pDMA4_X_MODIFY = 4; //設(shè)置DMA 每次地址增量變化
*pDMA4_CONFIG = (*pDMA4_CONFIG | DMAEN); //使能傳輸DMA
*pSPORT1_TCR1 = (*pSPORT1_TCR1 | TSPEN); //使能傳輸SPORT
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xfff32fff; //配置SPORT DMA 中斷等級
*pSIC_IAR2 = 0xffffffff;
register_handler(ik_ivg9, Sport1_RX_ISR); //注冊接收中斷
register_handler(ik_ivg10, Sport1_TX_ISR); //注冊傳輸中斷
*pSIC_IMASK = 0x00001800; //打開SPORT 傳輸和接收中斷屏蔽
EX_INTERRUPT_HANDLER(SPORT1_TX_ISR) //傳輸DMA 中斷函數(shù)
{
*pDMA4_IRQ_STATUS = 0x0001; //清除中斷標(biāo)志位
printf("SPORT TX DMA Done!\n"); //打印信息
*pSIC_IMASK &= ~0x00001000; //屏蔽接收中斷
}
這段代碼實現(xiàn)了通過 SPORT1 接口利用SPORT1 DMA 傳輸數(shù)據(jù)和接收數(shù)據(jù),SPORT1 接口時鐘和同步信號采用內(nèi)部由系統(tǒng)時鐘配置分頻獲取。代碼描述了 SPORT1 接口使用DMA 傳輸時常用的配置,由于沒有和其他設(shè)備做通訊,所以看不到接收的實際數(shù)據(jù)。也可以將擴展接口上SPORT1 的DT1PRI 和DR1PRI 兩個接口短接,實現(xiàn)環(huán)路測試功能,通過接收數(shù)據(jù)
Buffer 查看收到的數(shù)據(jù)。
附上這個SPORT代碼的完整源碼供參考: 鏈接: http://pan.baidu.com/s/1dDrexln 密碼: 4m1x
這一章也是有視頻教程的,如下:
如需清晰版可聯(lián)系我。 |