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

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

[复制链接]
天涯水乡 发布时间:2015-2-21 16:17
本帖最后由 kernaly 于 2015-2-21 16:21 编辑
9 C+ p* }! m+ Y1 O$ H: h% J, g7 J1 t. }; j) T. E
很早就开始学习使用STM32了,在工作中,产品项目更是在STM32平台进行的,但是却从没有写过几篇像样的技术贴。趁着年假闲暇之际,整理下相关的资料分享下,希望对初学者有帮助。以后也会逐步探讨、分享STM32相关的技术。感谢当年在我学习之路上帮助过我的前辈,如今我也继续下去,希望认识更多的朋友们。
" S' L. D  t' G' H 对于频率幅度可调节的正弦波:: m9 |. ~1 T5 b+ G9 e
  通过调节DAC触发时钟的频率来改变采集频率。通过改变DAC的输出幅度,外加运放,控制运放增益来更大范围的改变幅度。最好使用DMA,可节省MCU更多的资源。当要改变频率及其振幅的时候,只需要重新填充对应的缓冲区就好了。比如以下代码。采集1024个点,通过Amplitude_temp 来改变DAC输出振幅。调节频率的话只需改变触发时钟的频率即可。
$ M; L7 p; H( W# w! `7 S3 ?# k
for (Idx = 0; Idx < 1024; Idx++)  
2 N2 x  H# u! C3 r  {
; f- N: S/ [+ i, Z' z( O    DualSine12bit[Idx] = (Amplitude_temp*sin(2*3.14*Idx/1024)+Amplitude_temp);  
7 x+ v' ^' ]" h  }

1 @% G/ e0 d9 ]; y4 d关于采集点数。采集点数越多,波形的完整性越好,但在周期一定的情况下,越多的点,就需要越高的采集频率,而STM32的DAC频率却是有限的,103型最大的采集频率一般在250K左右,所以要针对自己实际情况来对采集点数和采集频率进行取舍。+ h) X# O& P+ K  l& f
关于三角波,STM32自带了三角波发生器,用起来还是挺方便的。而我所讲的还是填充画点的方式,把三角波分成上下两个部分,分别进行填充画点:
: d: q: }, |2 ?( {( Z% w* [ for (Idex = 0; Idex < 500; Idex++)
3 o! Z% k- t- a, I0 @( F5 p* b  { % ?" O3 b! I3 K. l
   DAC_SetChannel1Data(DAC2, DAC_Align_12b_R, Idex*Amplitude_temp/500);
$ N: G  X& ]% z, c   delay_ms(SJBUPTIM/500);, d2 b' W  C* Q) W% H4 ]1 A
   }   

1 c& {" w: B" G/ J- i for (Idex = 500; Idex < 1000; Idex++)7 D' _; o! L+ c4 C. ]: t( ?
{
  r/ H+ n/ M" b1 p- f  DAC_SetChannel1Data(DAC2, DAC_Align_12b_R, (1000-Idex)*Amplitude_temp/500);3 E% j1 P) T1 K% f; y0 f' ]# C
   delay_ms(SJBDOWNTIM/500);" Q+ d4 C3 k& C  t8 j
}
, k& G* \5 Q. v
以上代码采集1000个点,通过延时函数进行频率调节(当然,需要更精确的调节要使用定时器),通过改变Amplitude_temp来改变输出振幅- d6 V* c1 A, j* m* e
对于其他规则波形,只需按照以上思路,填充画点即可。
! B' I  w  ?1 Q$ `) R6 M5 z. w
6 }$ f, n0 H4 X   
& b' P; g3 o' O0 k; i6 r; y3 E
6 [2 S, |- t5 V8 q$ x
收藏 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 手机版