工作需要,4月份开始接触STM32,之前一直都是做FPGA,51这些
现在做一个信号发生器,有一些疑问, 也看了论坛的一些帖子,觉得不太靠谱
而我现在做的是一个要推向市场的产品
大致构思就是通过DA描点的方式,DA的数据来源是DMA
输出波形的周期可以通过Timer来控制,DMA由timer更新来触发
假设输出正弦波,频率1k,如果一个周期描100个点,APB1是36M的话,Timer为72M,Timer计数值设为72000000/1000/100
Timer每次更新触发一次DMA,DMA传数据到DA描一个点
波形一个周期分为100个点,这100个点的值我放在一个数组比如data[]里
描第一点是data[0],我们可以设为 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&data;
然后描第二个点时需要data[1]
难道我需要开timer中断,把DMA_InitStructure.DMA_MemoryBaseAddr改到data[1]
这样会不会太麻烦?
各位大神,你们的信号发生器都是什么思路?
望赐教
做完这个项目后,我会把sch,pcb,代码全部上传上来
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
没用过库函数,不知道 BufferSize 究竟指什么。
但是,可以肯定的是,无论源头还是目的地,只需要设置起始地址和每个点的增量。这里比较难,要理解、摸索一下;
再设置总点数 NDTR ,启动,就可以了。
每个点都设置一次,肯定不需要的,否则 DMA 还有什么意义?!
在执行完成以后,重新设置某些参数,就可以了。
一周热门 更多>