一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

工程师用STM32F4造出最小音频合成器

来源:与非网 发布时间:2019-04-23

摘要: Noise Nugget是一款紧凑型数字合成器,基于180MHz Cortex-M4和带耳机放大器的高品质音频DAC。

Noise Nugget是一款紧凑型数字合成器,基于180MHz Cortex-M4和带耳机放大器的高品质音频DAC。

我在这个项目中的目标是创造一个音频合成的“瑞士军刀”。 在最小和最便宜的板上包装最大功能。

image.png

凭借其所有连接(USB,2 x音频输出,1 x音频输入,I2C,UART,GPIO),它可用于许多不同的任务:

数字合成器,带MIDI接口或其他一些控制手段

吉他踏板或合成器的音频效果(延迟,混响,失真)

音频FX触发板,播放预先录制的声音

音频播放,从输入录制声音,然后按一下按钮即可播放

USB声音接口

硬件设计

硬件设计的主要目标是简单和占用空间小。

该系统的核心显然是STM32F446微控制器。 它基于ARM Cortex-M4内核,浮点单元运行频率为180MHz,还有大量外设。

工程师用STM32F4造出最小音频合成器

在STM32F4周围,我们有:

USB micro-B连接器

一个电源稳压器,可从USB连接器的5V提供3.3V电压

用于STM32F4时钟的晶体振荡器

一个用户按钮和一个按钮进入设备固件更新(DFU)模式

用于存储样本数据的闪存

自定义IO

一个调试头

一个耳机插孔

音频数模转换器(DAC)

我本来可以使用STM32F4的DAC,但一方面它们只有12位而16位用于正确的音频DAC,另一方面它需要额外的电路来驱动耳机。 因此,使用SGTL5000可提供更高的音质和简单性。

SGTL5000还有很多IO选项:

耳机输出

线路输出

线路输入

麦克风输入

这意味着不同应用程序有很多选项。

在Noise Nugget的rev-B上,我没有使用麦克风输入。 我认为这是一个错误,因为电路板上有一些用于MEMS麦克风的空间,这将开启更多可能性。 例如实时语音效果或样本录制。

DFU按钮的设计灵感来自Numworks开放式计算器。 如果在插入USB电缆时按下按钮,STM32F4将自动进入DFU模式。 然后,在不使用任何调试探针的情况下安装不同的固件非常容易。

软件设计

Noise Nugget的软件是用Ada编写的。 Ada编程语言都是关于功能安全的,也就是说,检测软件何时没有做到应该做的事情(错误!)。 使用Ada,您可以快速准确地知道出现了什么问题,而不是在缓冲区溢出或未初始化的驱动程序上搔痒几个小时。 这意味着减少调试时间。 由于我没有足够的时间来开发这个软件,因此每分钟都很重要。

该软件最重要的方面是生成音频样本并将其发送到DAC。

样本是16位有符号整数,表示给定时间点的音频信号的值。

DAC配置为每秒44_100个样本(CD质量)。 如果软件无法以适当的速度传送样本,音频将出现故障(响亮的砰砰声和咔嗒声)。 所以这是系统真正的实时要求。

样本不是一个接一个地发送,而是在512个样本的缓冲区中*每个样本2个字节* 2个通道(立体声),所以2048个字节。 缓冲器B在发送缓冲器A时被填充,反之亦然(触发器缓冲器)。 来自音频输入的样本以类似的方式接收。 缓冲区的传输是通过DMA完成的,因此在该操作期间不使用CPU,这意味着生成样本的时间更长。

为了确保实时要求,我使用了Ada Ravenscar运行时。 您可以将其视为集成在Ada编程语言中的实时操作系统(RTOS)。 如果你想看看它的样子,我写了一篇关于它的博客文章。

系统中有两个任务:

音频任务,它具有最高优先级,因为它负责填充音频缓冲区。 这意味着只要有要填充的音频缓冲区,就会执行此任务。

另一项任务是在轮询循环中处理USB请求。 在将来,这可以移动到并中断处理程序。

在依赖性方面,驱动程序来自Ada_Drivers_Library ,这是我几年前开始的一个项目,旨在鼓励在微控制器上使用Ada。 音频合成器基于Raphael Amiard的ada-synth-lib 。

Noise Nugget的未来

我对Noise Nugget的未来有一些想法。 其中之一是拥有一个GUI,让用户可以使用基本模块(如振荡器,滤波器,效果等)构建声音。类似于青少年音频工具,但实时,不需要为用户提供任何代码。 这可以成为一个有趣和多功能的微型合成器。

声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: