完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
您好:
我在使用SC589时,需要用到SPORT模块,参照例程:SPORT driver callback mode,将初始化补充完整: #define SIZE_OF_TX_BUFFER 4 /* flag indicating if SPORT processing is complete */ volatile bool bComplete = false; /* SPORT driver memory */ uint8_t DeviceMemory[ADI_SPORT_DMA_MEMORY_SIZE]; /* Tx buffers-0 */ uint8_t nBufferTx0[SIZE_OF_TX_BUFFER]={1,2,3}; /* Tx buffers-1 */ uint8_t nBufferTx1[SIZE_OF_TX_BUFFER]={4,5,6}; /* SPORT callback */ void SportCallback(void* pHandle, uint32_t u32Arg, void* pArg) { ADI_SPORT_HANDLE pDevice = (ADI_SPORT_HANDLE *)pHandle; ADI_SPORT_EVENT event = (ADI_SPORT_EVENT)u32Arg; uint16_t *data = (uint16_t*)pArg; switch (event) { case ADI_SPORT_EVENT_TX_BUFFER_PROCESSED: bComplete = true; break; default: break; } } int main(void) { adi_initComponents(); /* SPORT driver handle */ ADI_SPORT_HANDLE hDevice; /* driver API result code */ ADI_SPORT_RESULT eResult; /* open the SPORT driver */ if( adi_sport_Open(1,ADI_HALF_SPORT_A,ADI_SPORT_DIR_TX, ADI_SPORT_SERIAL_MODE, DeviceMemory,ADI_SPORT_DMA_MEMORY_SIZE,&hDevice) != ADI_SPORT_SUCCESS) printf("open error"); if( adi_sport_ConfigData(hDevice, ADI_SPORT_DTYPE_COMPAND_A_LAW,15,false,true,false) != ADI_SPORT_SUCCESS) printf("config1 error"); if (adi_sport_ConfigClock(hDevice,224,true,true,false) != ADI_SPORT_SUCCESS) printf("config2 error"); if (adi_sport_ConfigFrameSync(hDevice,19,true,true,false,true,true,true) != ADI_SPORT_SUCCESS) printf("config3 error"); /* * Use the driver API's to configure SPORT * * adi_sport_ConfigData(); * adi_sport_ConfigClock(); * adi_sport_ConfigFrameSync(); */ /* Enable the DMA mode */ if (adi_sport_EnableDMAMode(hDevice,true) != ADI_SPORT_SUCCESS) printf("dma error"); /* Register a callback for the DMA */ if (adi_sport_RegisterCallback(hDevice, SportCallback, NULL) != ADI_SPORT_SUCCESS) printf("callback error"); /* submit the sport buffers */ if (adi_sport_SubmitBuffer(hDevice,nBufferTx0,SIZE_OF_TX_BUFFER) != ADI_SPORT_SUCCESS) printf("sub1 error"); if (adi_sport_SubmitBuffer(hDevice,nBufferTx1,SIZE_OF_TX_BUFFER) != ADI_SPORT_SUCCESS) printf("sub2 error"); if (adi_sport_Enable(hDevice,true) != ADI_SPORT_SUCCESS) printf("sport error"); while(!bComplete) { /* do other processing here while SPORT is processing */ } /* Disable the device */ eResult = adi_sport_Enable(hDevice,false); /* close the SPORT driver */ eResult = adi_sport_Close(hDevice); return 0; } 1)但是结果一直卡在while循环中,请问是哪里出错了? 2)此外,如果要使用DAI接口与SPORT相连,是否需要使用sruSC589.h中的SRU()函数,如果是的话,请问其参数在哪里定义?比如要将DAI0_pin01与SPORT0的A模块的FS相连,要如何设置? 感谢帮忙! |
|
相关推荐
2个回答
|
|
|
|
hi Huashi,
你的SPORT口有音源输入吗? 例程一般是没有问题的,可能是你的硬件条件没满足,所以一直在死等。 如果你的DAI口与SPORT口的连接不同于评估板的默认连接,是需要通过SRU去修改的。 一个例子代码sru_config.c在以下目录: C:Analog DevicesADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0ADSP-SC5xx_EZ-KITExamplesdriversadcadau1979adc_dac_playbackSC573sharcadc_dac_playback_Core0systemsru FYI. HENRY |
|
|
|
只有小组成员才能发言,加入小组>>
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1339 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
3952 浏览 2 评论
8615 浏览 1 评论
2930 浏览 1 评论
6730 浏览 2 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
749浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1071浏览 2评论
999浏览 2评论
779浏览 1评论
774浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-4 16:55 , Processed in 0.566642 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号