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

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

[复制链接]
watershade 发布时间:2017-2-6 14:51
本帖最后由 watershade 于 2017-2-7 18:51 编辑

手里有nucleo-f446ze,之前移植没有使用STM32自身携带的DAC。最近想用DAC产生复杂波形,来模拟声音。我的做法是用杜邦线焊接到3.5mm耳机孔接插件,然后用耳机插入插孔做测试。当然这种方法可能对耳机造成伤害。在公司里用示波器来测试生成的波形,然后到家之后用耳机来测试音频信号。
为了产生合适的音频,还需要了解音调的频率。因为纯音是正弦波行,所以关键的一步是产生可调节频率的波形。在这个过程中遇到几个问题。

我使用的是通道2产生正弦波,用DSP函数产生100个采样点数值。这些都没有问题。我使用DMA和TIM触发的方式产生DAC波形的,问题出现在三个方面,这里做一个总结。
1、用HAL_DAC_Start_DMA开启通道之前,先启动TIM(HAL_TIM_Base_Start).
2、这里要对定时器的主触发输出事件设置成UPDATA而不是Reset或者Enable
3、DAC的对齐方式可以是8位或12左/右对齐,因此DMA的PeriphDataAligment要相应的设置为Byte或者HalfWord。而MemoryDataAligment若设置的和数据源不同就会出现问题。我就出现了数据源是uint32_t,而外设和存储器的对齐方式都是半字方式的。这就出现了波形切换的时候总有个0的部分。后来才发现、

应该还存在的几个问题是DMA的模式要设置成Circular,TIM更新的时间在哪里。

【本帖是自己对工作过程中问题的总结】


||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
后面做了一个简单的音频测试程序,来测试频率和音调的关系。效果还可以,但是想要做到播放wav格式的文件还需要继续试验
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
下面粘贴几张参考频率表格:
钢琴音高与频率对照表.jpg
音频频率对照表.jpg

计算timer的Period的方法也很简单。比如的用的是TIM6,用的是AHB1的时钟90MHZ。而我的正弦波是100个采样点。因此我参考这张表格来设置时就是下面的公式: 备选音频周期(us) * 90 / 100 即可
比如中音1,设置的Period就是1720.另外需要注意TIM6/7是16位的定时器。ARR内的数值不能超过65535.
下面上传一下附件和测试的图片:
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
多谢分享!
wolfgang2015 回答时间:2017-2-8 14:00:08
不错,很好的实践精神~~

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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