ADSP-BF53x上有两个SPORT口,SPORT(synchronous serial ports)接口是ADSP-BF53x上速度最快的串口,其速度能够到达体系时钟的1/2, 每一个SPORT口有两根接纳数据线和两根传输数据线,支撑全双工形式传输。
SPORT接口一般用做一些高速的数据传输,它支撑I2S形式,一般将SPORT接口衔接音频的编解码器芯片,作为音频数据输出接口。
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状况寄存器 *pSPORT0_TCLKDIV = TCLKDIV; //装备SPORT传输接口的时钟频率
*pSPORT0_TFSDIV = TFSDIV; //装备SPORT传输接口的同步频率
*pSPORT0_TCR1 = ITFS|TFSR|ITCLK;//装备SPORT传输作业形式
*pSPORT0_TCR2 = 31; //装备SPORT以32Bit数据传输
*pDMA2_PERIPHERAL_MAP = 0x2000; //设置SPORT传输接口DMA
*pDMA2_CONFIG = WDSIZE_32 | DI_EN |FLOW_1; //设置DMA作业形式
*pDMA2_START_ADDR = (void *)iTxBuffer; //设置DMA 传输数据开始地址
*pDMA2_X_COUNT = 1000; //设置DMA传输次数
*pDMA2_X_MODIFY = 4; //设置DMA每次地址增量改变
*pDMA2_CONFIG = (*pDMA2_CONFIG | DMAEN); //使能传输DMA
*pSPORT0_TCR1 = (*pSPORT0_TCR1 | TSPEN); //使能传输SPORT
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xfffff32f; //装备SPORT DMA中止等级
*pSIC_IAR2 = 0xffffffff;
register_handler(ik_ivg9, Sport0_RX_ISR); //注册接纳中止
register_handler(ik_ivg10, Sport0_TX_ISR); //注册传输中止
*pSIC_IMASK = 0x00000600; //使能中止
EX_INTERRUPT_HANDLER(Sport0_TX_ISR) //传输DMA中止函数
{
*pDMA2_IRQ_STATUS = 0x0001; //清楚中止标志位
printf(SPORT TX DMA Done!\n); //打印信息
*pSIC_IMASK = ~0x00000400; //封闭传输中止
} 代码完成了经过SPORT0接口运用SPORT0 DMA传输数据和接纳数据,SPORT接口时钟和同步信号选用内部由体系时钟装备分频获取。
代码描绘了SPORT接口运用DMA传输时常用的装备,没有和其他设备做通讯,所以看不到接纳的实践数据。
关于BF60x系列,只能用CCES环境编译,CCES中自带了SPORT驱动,与VDSP环境不同的是,CCES供给的驱动,兼容RTOS;就是说CCES中体系自带的接口驱动是操作体系格局接口的;所以这种方法下的驱动,需求探索: 如图中的两个merroy,要是独立的;不然,两个HSPORT只能有一个被装备(重复装备);