Cypress技术william hill官网
直播中

关睿

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

如何让uint16使用dma的adc窗口缓冲区?

嗨,大家好,
我想创建一个静态的ADC窗口,专门缓冲1024个2字节的单词,但不滑动。
我认为DMA将是最有效的方法。我假设必须使用多个TD,因为ADCySAMPLE()只一次获得一个16位的样本,但是我需要创建它们的数组,但是因为TD描述符的数量限制在128,所以我必须使用两组DMASS计数器来确定一个DMA何时具有完全缓冲区。ED 1282Byd字,然后将1282Boad字传送到不同的缓冲器,基本上进行第二次传输8次。当然,我必须使用计数器来确定第一个DMA缓冲器何时完成,以确保不占用重叠数据。一旦完成这一切,我可以有另一个计数器看第二个DMA,以确定它何时完成了8次传输。
这是使用PSoC5LP实现的吗?
如果有更好的方法,请告诉我,或者如果我正在考虑这个错误。
谢谢,
斯卡尔森

回帖(5)

杨军

2019-9-17 11:24:37
一些DMA AP注释(如果我没有弄错的话,它们中的一个是16位的例子,AN6102?)-
HTTP://www. CyPress ./DopeSt/Aptudio-NoSe/AN52505-PSOC-3-PSOC-5LP获取DMA AN51705开始用DMA启动
HTTP://wwwyCypC./DooptTys/Appult- NoSe/AN848 10-PSOC-3和PSOC-5LP高级DMA-8810PSOC®3和PSoC 5LP高级DMA主题
HTTP://www. CyPress ./DopeSt/AptuoTo/NoSe/AN6102-PSOC-3和PSOC-5LP-ADC-DATA缓冲器USEDMA AN6102PSoC®3和PSoC 5LP ADC数据缓冲使用DMA
在DMA上的HTTP//Vio.CyPress
HTTPS://www. Youtube?COM/结果?在DMA上搜索SkyCHQue= DMA+PSoC视频(一些重叠)
问候,Dana。
举报

王琳

2019-9-17 11:33:02
DMA是复杂的,但不像你想象的那么复杂。既然你可以在一个循环中使用一个TD,那么你就不需要一个以上的TD来将你的1024个单词存储到内存中,当你想要使用双缓冲和两个TDS来抓取缓冲器并将它们移到另一个位置时,两个TDS。不需要靠你的侧,这是由DMA通道执行的,你需要两个,每个传输一个。
鲍勃
举报

关睿

2019-9-17 11:40:19
因此,如果我听到正确的话,即使ADCYGETSAMPLE 16()只在每次EIOC被标记时返回一个样本,我可以使用一个TD将该数据传递给缓冲器,并且在下一个EOC标志上,它将捕获新的样本并将其顺序地放置在缓冲器中,直到第一个样本完成为止。对于1024个样本,然后开始执行同样的过程?
我一定已经读过了错误,我认为不可能每次使用相同的TDD而不覆盖相同的目的地地址。
也感谢Daaa奈特,我看到那些ANS,但不是视频。我来看看。似乎这个例子可能是我真正想要做的。
谢谢,
斯卡尔森
举报

杨军

2019-9-17 11:54:04
希望信息有帮助。
Dana。
举报

更多回帖

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