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

HAL DAC测试中遇到的几个小问题

[复制链接]
watershade 发布时间:2017-2-6 14:51
本帖最后由 watershade 于 2017-2-7 18:51 编辑
6 |2 {, X: |( [4 K$ ^
) L4 q3 a7 n, j( o/ M手里有nucleo-f446ze,之前移植没有使用STM32自身携带的DAC。最近想用DAC产生复杂波形,来模拟声音。我的做法是用杜邦线焊接到3.5mm耳机孔接插件,然后用耳机插入插孔做测试。当然这种方法可能对耳机造成伤害。在公司里用示波器来测试生成的波形,然后到家之后用耳机来测试音频信号。) p3 {8 Y- O2 f
为了产生合适的音频,还需要了解音调的频率。因为纯音是正弦波行,所以关键的一步是产生可调节频率的波形。在这个过程中遇到几个问题。* w8 m' n3 H) P) j. t
0 f( ~7 N& B6 O- F, B# T
我使用的是通道2产生正弦波,用DSP函数产生100个采样点数值。这些都没有问题。我使用DMA和TIM触发的方式产生DAC波形的,问题出现在三个方面,这里做一个总结。& [. n2 i6 D0 v$ C3 J
1、用HAL_DAC_Start_DMA开启通道之前,先启动TIM(HAL_TIM_Base_Start).
2 D( A6 ?1 ]1 m7 m* q# I+ {/ V9 G2、这里要对定时器的主触发输出事件设置成UPDATA而不是Reset或者Enable3 W2 f% R, w8 L; p$ i* N- Y
3、DAC的对齐方式可以是8位或12左/右对齐,因此DMA的PeriphDataAligment要相应的设置为Byte或者HalfWord。而MemoryDataAligment若设置的和数据源不同就会出现问题。我就出现了数据源是uint32_t,而外设和存储器的对齐方式都是半字方式的。这就出现了波形切换的时候总有个0的部分。后来才发现、" H7 ?$ C  w9 p, O
- C/ c0 s0 C) X0 Y2 f, s; r! r
应该还存在的几个问题是DMA的模式要设置成Circular,TIM更新的时间在哪里。
% U- |$ D6 f* \. b3 Y# \  r
) N7 @4 m6 N3 M) M+ Q  r  p, A【本帖是自己对工作过程中问题的总结】
1 s% J0 G5 @  D5 o& F' Z9 a6 z  M, X+ D% H

/ r4 F* h9 w1 G; U  a||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
! [& n' z# [( S6 {: Q5 c, P" ^6 u8 x后面做了一个简单的音频测试程序,来测试频率和音调的关系。效果还可以,但是想要做到播放wav格式的文件还需要继续试验
* ]9 S+ B% d& b/ t9 D0 R& D  V||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; K8 ^* C: e. Z. V' i8 C下面粘贴几张参考频率表格:- k1 R7 C) }# E5 h0 j
钢琴音高与频率对照表.jpg
( Z! g- @6 A' q# e 音频频率对照表.jpg 7 d! y- M4 \$ V4 D$ \5 H

* f7 Y9 o" T" Y  H6 b计算timer的Period的方法也很简单。比如的用的是TIM6,用的是AHB1的时钟90MHZ。而我的正弦波是100个采样点。因此我参考这张表格来设置时就是下面的公式: 备选音频周期(us) * 90 / 100 即可9 }1 O( K% B; v& @% S6 U
比如中音1,设置的Period就是1720.另外需要注意TIM6/7是16位的定时器。ARR内的数值不能超过65535.
' T" \6 g0 T: X( T' {6 a下面上传一下附件和测试的图片:1 c% m* }- J4 c' C$ }/ s
DAC_TTDMA.rar (8.54 MB, 下载次数: 183)

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

赞 收藏 2 评论5 发布时间:2017-2-6 14:51

举报

5个回答
xmshao 回答时间:2017-2-6 17:02:08
谢谢分享! 赞一个
斜阳 回答时间:2017-2-7 09:14:48
谢谢分享
zero99 回答时间:2017-2-7 13:18:57
学习了,多谢分享经验
alisa123 回答时间:2017-2-7 16:49:42
多谢分享!
wolfgang 回答时间:2017-2-8 14:00:08
不错,很好的实践精神~~
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版