void Init_Sport0(void)
{
*pSPORT0_RCLKDIV = 0x0003;
*pSPORT0_RFSDIV = 0x000F;
*pSPORT0_RCR1 = RFSR | LARFS | LRFS | IRCLK ; //配置SPORT接收工作模式
*pSPORT0_RCR2 = SLEN_16;//0x010f; //配置SPORT以16Bit資料接收
*pSPORT0_TCLKDIV = 0x0003; //配置SPORT接收介面的時鐘頻率
*pSPORT0_TFSDIV = 0x000F; //配置SPORT接收介面的同步頻率
*pSPORT0_TCR1 = TCKFE | LTFS| LATFS | TFSR | ITCLK ;
*pSPORT0_TCR2 = SLEN_16;
*pSPORT_GATECLK = 0x0003;//Gated Sport0 clock appears on TSCLK0 pin, TMR0 gated clock ,loop back TMRO output to RFS0,TMR1 output is tied to A/D CNV signal
}
void Init_DMA(void)
{
*pDMA2_PERIPHERAL_MAP = 0x2000;
*pDMA2_CONFIG = WDSIZE_16 | FLOW_AUTO | SYNC;
*pDMA2_START_ADDR = iTxBuffer1;
*pDMA2_X_COUNT = 1;
*pDMA2_X_MODIFY =2;
*pDMA1_PERIPHERAL_MAP = 0x1000; //設置SPORT接收介面DMA
*pDMA1_CONFIG = WNR | WDSIZE_16 | DI_EN | FLOW_AUTO; //設置DMA工作模式
*pDMA1_START_ADDR = iRxBuffer1; //設置DMA 接收資料起始位址
*pDMA1_X_COUNT = 1; //設置DMA接收次數
*pDMA1_X_MODIFY = 2; //設置DMA每次位址增量變化
}
void Enable_DMA_Sport0(void)
{
*pDMA2_CONFIG = (*pDMA2_CONFIG | DMAEN);
*pDMA1_CONFIG = (*pDMA1_CONFIG | DMAEN);
*pSPORT0_RCR1 = (*pSPORT0_RCR1 | RSPEN);
*pSPORT0_TCR1 = (*pSPORT0_TCR1 | TSPEN);
}
void Disable_DMA_Sport0(void)
{
*pSPORT0_TCR1 = (*pSPORT0_TCR1 & (~TSPEN));
*pSPORT0_RCR1 = (*pSPORT0_RCR1 & (~RSPEN));
*pDMA2_CONFIG = (*pDMA2_CONFIG & (~DMAEN));
*pDMA1_CONFIG = (*pDMA1_CONFIG & (~DMAEN));
}
void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffff2f;
*pSIC_IAR2 = 0xffffffff;
register_handler(ik_ivg9, Sport0_RX_ISR);
//register_handler(ik_ivg10, Sport0_TX_ISR);
*pSIC_IMASK0 = 1<<9;
}
EX_INTERRUPT_HANDLER(Sport0_RX_ISR)
{
*pDMA1_IRQ_STATUS = 0x0001;
iChannel0LeftIn=1;
iChannel0RightIn = iRxBuffer1[0];
iTxBuffer1[0] = AD7689_CFG1;
uart_device_write_word(&iChannel0RightIn,1);
}