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

2019-04-22 08:29:00 来源:EEFOCUS
标签:

2019 Hackadayprize中国区赛事正在火热报名ing,我们将为大家介绍在过去几届Hackadayprize中获奖的作品,希望能给你带来启发!快点来报名参赛,12.5万美元的终极大奖在等你认领:https://www.cirmall.com/hackadayprize_2019

 

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

 

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

 

 

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

  • 数字合成器,带MIDI接口或其他一些控制手段
  • 吉他踏板或合成器的音频效果(延迟,混响,失真)
  • 音频FX触发板,播放预先录制的声音
  • 音频播放,从输入录制声音,然后按一下按钮即可播放
  • USB声音接口

 

硬件设计

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

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

 

 

在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)。 如果你想看看它的样子,我写了一篇关于它的博客文章: https : //blog.adacore.com/theres-a-mini-rtos-in-my-language

 

系统中有两个任务:

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


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


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


Noise Nugget的未来


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

 

如果你对这个项目感兴趣,想获取完整信息请访问:

https://hackaday.io/project/160437-noise-nugget

 

与非网编译内容,未经许可,不得转载!
 

有人说硬件技术将很快达到极限,而在我们看来,硬件创新,尤其是中国硬件工程师的创新,还远未走到尽头,而只是刚刚开始。作为致力于为全球硬件开发者提供技术共享服务的平台,与非网母公司SupplyFrame旗下最大的全球硬件开发者社区Hackaday.com已连续五年举办全球硬件开发者大赛Hackadayprize,有超过3000多个硬件团队在这个赛事中互动交流、切磋技艺。

 

 


这个《硬件改变世界》系列,我们挑选在前几届Hackadayprize大赛中获奖的优秀作品加以展示,硬件技术可以多有意思,硬件开发者可以多有创意,从这些作品中你可以看到。

2019年3月,Hackadayprize中国区赛事隆重开启,我们很期待看到国内的硬件开发者大开脑洞、大展技艺。你准备好了没,与来自全球的硬件开发者同台PK?

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

作者简介
李昭
李昭

与非网编辑。热爱酷炫电子产品。

继续阅读
工程师造了一款混凝土扬声器,玩出别样艺术感
工程师造了一款混凝土扬声器,玩出别样艺术感

在许多场合,比如赛车运动、太空探索、可穿戴设备上,东西越轻越好。但是,当你想要防止物体的震动、阻止物体四处移动时,或者让事物变得有一种重量感时,就该反其道而行之了。比如机床、铁砧或者扬声器一类的东西就是这种情况。基于这种理念,[SoundBlab]打造了一个浇灌了混凝土的扬声器。

会自动收衣服的晾衣绳

本项目有两个传感器作为探测器,即雨量传感器和LDR。雨量传感器功能可以检测是否发生下雨。

工程师自研PCB原型快速设计,方法之巧妙让人咂舌?
工程师自研PCB原型快速设计,方法之巧妙让人咂舌?

看到用一个石墨铅笔芯和9V电池切割铝箔的把戏之后,我们想知道能否通过相同的方式切割空白PCB上的铜进行PCB原型快速设计呢?事实证明可以做到这一点,但是需要克服一些挑战。目前我们并没有实际投入到这个项目的开发上来,但是我们希望读者们能够受到启发。

定制一个自己的机械数字键盘吧,这位工程师把所有硬件细节都开源了
定制一个自己的机械数字键盘吧,这位工程师把所有硬件细节都开源了

[Mattia]将自己的作品命名为YamPAD,它是‘只是另外一个机械数字键盘’(Yet Another Mechanical numPAD)的简写。这个项目的一个主要目标是制作一个可供他人轻松复制和定制化的设计原型。

工程师自己动手用32位MCU打造的3D打印机,飞一样的感觉?
工程师自己动手用32位MCU打造的3D打印机,飞一样的感觉?

32位平台是3D打印的未来。最新版本的marlin已经移植到了STM32板上了,工作一切正常,运行平稳,还有BLTouch。

更多资讯
一文读懂 CAD 工作模块及发展现状

芯片设计领域中的CAD是一种支持和辅助芯片设计人员进行安全高效设计工作的活动集合,这里的CAD活动具体是指最大化利用IT资源、设计工具、IP和工艺库等帮助设计人员进行设计工作。

断供华为的背后,中国需加强底层技术研究

基础理论和底层技术是中国企业科技自立绕不过的关卡。对此,只能算战略账,不能算财务账。

任正非独家专访:看华为一路走来的成长史

5月26日晚间消息,华为创始人、CEO任正非在华为总部接受央视《面对面》的独家专访。

任正非:美国将华为作为贸易战筹码是个笑话;美国从不买华为设备,将来想买华为也不会卖
任正非:美国将华为作为贸易战筹码是个笑话;美国从不买华为设备,将来想买华为也不会卖

根据彭博社的消息,面对美国采取的威胁到华为生存的制裁,华为创始人任正非采取了“挑衅”的口吻。

软银指示,ARM断供的背后

ARM与华为的“切割”有点出人意料,特别是有ARM中国这座中方控股的“防火墙”存在。

电路方案