你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的DAC产生正弦波、三角波思路分享

[复制链接]
天涯水乡 发布时间:2015-2-21 16:17
本帖最后由 kernaly 于 2015-2-21 16:21 编辑

很早就开始学习使用STM32了,在工作中,产品项目更是在STM32平台进行的,但是却从没有写过几篇像样的技术贴。趁着年假闲暇之际,整理下相关的资料分享下,希望对初学者有帮助。以后也会逐步探讨、分享STM32相关的技术。感谢当年在我学习之路上帮助过我的前辈,如今我也继续下去,希望认识更多的朋友们。
对于频率幅度可调节的正弦波:
  通过调节DAC触发时钟的频率来改变采集频率。通过改变DAC的输出幅度,外加运放,控制运放增益来更大范围的改变幅度。最好使用DMA,可节省MCU更多的资源。当要改变频率及其振幅的时候,只需要重新填充对应的缓冲区就好了。比如以下代码。采集1024个点,通过Amplitude_temp 来改变DAC输出振幅。调节频率的话只需改变触发时钟的频率即可。

for (Idx = 0; Idx < 1024; Idx++)  
  {
    DualSine12bit[Idx] = (Amplitude_temp*sin(2*3.14*Idx/1024)+Amplitude_temp);  
  }

关于采集点数。采集点数越多,波形的完整性越好,但在周期一定的情况下,越多的点,就需要越高的采集频率,而STM32的DAC频率却是有限的,103型最大的采集频率一般在250K左右,所以要针对自己实际情况来对采集点数和采集频率进行取舍。
关于三角波,STM32自带了三角波发生器,用起来还是挺方便的。而我所讲的还是填充画点的方式,把三角波分成上下两个部分,分别进行填充画点:
for (Idex = 0; Idex < 500; Idex++)
  {
   DAC_SetChannel1Data(DAC2, DAC_Align_12b_R, Idex*Amplitude_temp/500);
   delay_ms(SJBUPTIM/500);
   }   

for (Idex = 500; Idex < 1000; Idex++)
{
  DAC_SetChannel1Data(DAC2, DAC_Align_12b_R, (1000-Idex)*Amplitude_temp/500);
   delay_ms(SJBDOWNTIM/500);
}

以上代码采集1000个点,通过延时函数进行频率调节(当然,需要更精确的调节要使用定时器),通过改变Amplitude_temp来改变输出振幅
对于其他规则波形,只需按照以上思路,填充画点即可。

   


收藏 1 评论14 发布时间:2015-2-21 16:17

举报

14个回答
天涯水乡 回答时间:2015-2-21 16:21:29
自己顶一下,话说伸手打字还是挺冷的
天涯水乡 回答时间:2015-2-21 17:34:11
貌似没人。我的心啊
w小菜才 回答时间:2015-2-21 20:10:19
飘过。。。。。
wamcncn 回答时间:2015-2-22 07:16:44
学习了,。。。。。。。
feel-376797 回答时间:2015-2-22 08:07:55
谢谢分享
拼命三郎 回答时间:2015-2-22 15:20:26
QQ截图20150222151959.jpg
拼命三郎 回答时间:2015-2-22 15:22:38
stm32.jpg
MouseCat 回答时间:2015-2-22 15:47:54
谢谢分享
大器所成 回答时间:2015-2-23 11:28:07
Tingyixia感谢分享
sting 回答时间:2015-2-23 11:44:31
不错,谢谢
MouseCat 回答时间:2015-2-24 12:05:55
顶一下啦
汤少主 回答时间:2017-10-24 15:31:45
我想问一下,只用stm32的DAC功能产生正弦波的原理是什么?正弦表有什么用?现在还没学DMA,老师只让用DAC产生。
typhoon5168 回答时间:2018-12-28 12:19:55
謝謝分享
taotiaixuexi 回答时间:2020-10-1 11:35:11
我想知道楼主,这个表达式,为什么我放进去没效果,我用填表法就正常

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版