Cypress技术william hill官网
直播中

李思路

7年用户 173经验值
私信 关注
[问答]

如果传输计数超过70,PSoC 5lp DMA将被卡住

我使用PSoC 5LP DEV套件CY8CKIT-050,我附上了我的项目。我试图连接DMA到ADC,这样我就可以做一些高速采样。DMA和ADC按预期运行,直到BuffelySosig=34(AKA从ADC获取34个数据读数并存储到RAM)。然而,当我将BuffelyStand设置为35或以上时,我永远不会到达DMAIONDOEYISR中断。DMA一次可以处理多达4095个字节,并且缓冲区大小为35,它应该只移动70字节到内存。有什么想法吗?
传感测试
5.9兆字节

以上来自于百度翻译


     以下为原文
  Im using the PSoC 5lp dev kit CY8CKIT-050 and I've attached my project. I am attempting to connect DMA to an ADC so that I can do some high speed sampling. The DMA and ADC are acting as expected up to BUFFER_SIZE = 34 (AKA taking 34 data readings from the ADC and storing to ram). However when I set BUFFER_SIZE to 35 or above, I never reach the DMA_done_isr interrupt. The DMA should be able to handle up to 4095 bytes at a time and with a BUFFER_SIZE of 35, it should only be shifting 70 bytes to memory. Any thoughts?


回帖(2)

李恩佳

2018-11-27 11:29:33
DMAX驱动程序
添加:
UIT8表〔1000〕;
变化
35 CydMatdSt地址(DMAY1TD TD〔0〕,Lo16((UIT32)AdcSARA WRK0YPPTR),Lo16((UIT32)CyDeVeSrMaBASE);
到:
35 CydMatDSET地址(DMAY1TD TD〔0〕,Lo16((UIT32)AdcSARA WRK0YPPTR),Lo16((UIT32)表));
你会看到ISRYDMAYODE中断。

以上来自于百度翻译


     以下为原文
  dma_driver.c
add:
uint8 table[1000];
and change
35      CyDmaTdSetAddress(DMA_1_TD[0], LO16((uint32)ADC_SAR_WRK0_PTR), LO16((uint32)CYDEV_SRAM_BASE));
to:
35        CyDmaTdSetAddress(DMA_1_TD[0], LO16((uint32)ADC_SAR_WRK0_PTR), LO16((uint32)table));
you will see isr_DMA_Done  interrupt.
举报

李思路

2018-11-27 11:48:53
引用: chenzhenbo1984 发表于 2018-11-27 19:10
DMAX驱动程序
添加:
UIT8表〔1000〕;

太棒了,把它修好了。谢谢!

以上来自于百度翻译


     以下为原文
  Great that fixed it. Thanks!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分