完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
问题概述:使用McBsp从FPGA接收数据,然后用EDMA将数据从DRR寄存器搬移到一个buffer中(IQBuff),调试发现EDMA只能搬移一次数据,之后就不再搬移了,请问各位高手怎么样才能让EDMA将DRR寄存器中的数据发乎搬移到IQBuff中,并且每次搬移都从同一个起始地址开始存储数据。
我的配置如下(程序中的LINK可能不需要): #define ONE_FRAME_SYM_NUM (UINT32)1250 #define PER_EDMA_PARAM_CHANNEL1_BASEADDR (0x01C04020) #define PER_EDMA_PARAM_CHANNEL1_LINK_BASEADDR (0x01C04000+(0x20*73)) typedef struct T_PER_EDMAReg2_Tag [ volatile unsigned int TPCC_OPT; volatile unsigned int TPCC_SRC; volatile unsigned int TPCC_ABCNT; volatile unsigned int TPCC_DST; volatile unsigned int TPCC_BIDX; volatile unsigned int TPCC_LNK; volatile unsigned int TPCC_CIDX; volatile unsigned int TPCC_CCNT; ]T_PER_EDMAReg2; T_PER_EDMAReg2 *gptPEREDMAReg2CH1 = (T_PER_EDMAReg2 *)PER_EDMA_PARAM_CHANNEL1_BASEADDR; T_PER_EDMAReg2 *gptEDMALinkToCH1 = (T_PER_EDMAReg2 *)PER_EDMA_PARAM_CHANNEL1_LINK_BASEADDR; gptPEREDMAReg2CH1 ->TPCC_OPT = 0x00001200; gptPEREDMAReg2CH1 ->TPCC_SRC = (UINT32)MCBSP_DRR_ADDR(1);//DRR address of McBSP1 gptPEREDMAReg2CH1 ->TPCC_ABCNT = (UINT32)(0x00000004 | (UINT32)(ONE_FRAME_SYM_NUM <<16)); gptPEREDMAReg2CH1 ->TPCC_DST = (UINT32)&IQBuff[0];//a buffer,the address is 0x800C1DD0 gptPEREDMAReg2CH1 ->TPCC_BIDX = 0x00040000; gptPEREDMAReg2CH1 ->TPCC_LNK = ((UINT32)(ONE_FRAME_SYM_NUM <<16) | 0x4E40); gptPEREDMAReg2CH1 ->TPCC_CIDX = 0x0; gptPEREDMAReg2CH1 ->TPCC_CCNT = 0x1; gptEDMALinkToCH1 ->TPCC_OPT = 0x00201200; gptEDMALinkToCH1 ->TPCC_SRC = (UINT32)MCBSP_DRR_ADDR(1); gptEDMALinkToCH1 ->TPCC_ABCNT = (UINT32)(0x00000004 | (UINT32)(ONE_FRAME_SYM_NUM <<16)); gptEDMALinkToCH1 ->TPCC_DST = (UINT32)&IQBuff[0]; gptEDMALinkToCH1 ->TPCC_BIDX = 0x00040000; gptEDMALinkToCH1 ->TPCC_LNK = ((UINT32)(ONE_FRAME_SYM_NUM << 16) | 0x4E40); gptEDMALinkToCH1 ->TPCC_CIDX = 0x0; gptEDMALinkToCH1 ->TPCC_CCNT = 0x1; |
|
相关推荐
2个回答
|
|
补充一下,查看了相关寄存器
TPCC_EMR 0x00000002 表示DMA Missed events TPTC_ERRSTAT 0x00000005,其中TRERR置位,表示TR检测到违反FIFO Mode transfer(SAM或DAM为1)对齐规则或者ACNT或者BCNT为0;BUSERR置位,表示TC检测到在写响应总线或者读响应总线上的错误码 检查TPCC_ERRDET 0x00001A01,表示TCC为011010,STAT置位为0x1,表示读地址错误 |
|
|
|
keith3000 发表于 2018-6-21 01:49 将BCNT值改为5,通过手动启动EDMA(置位ESR)搬移,发现当EDMA搬移5个array后,PaRam中的参数就变为乱值,这时如果再次启动搬移,就会出现上面的错误。当EDMA搬移5个array后,手动调整PaRam中的参数为初始值,就不会出现上述错误由此可以初步判定,上述问题可能与EDMA的PaRam参数更新有关。在程序中增加调整PaRam参数代码,让EDMA搬移5个array后,PaRam参数更新为初始值,问题就再也没有出现。 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
671 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
598 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1052 浏览 1 评论
735 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
522 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
158浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
120浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
123浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
164浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 01:41 , Processed in 0.849698 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号