当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]树莓派Pico是一款非常流行且功能强大的MCU(微控制器)开发平台,基于树莓派的RP2040 MCU,价格仅为4美元。RP2040集成了两个133 MHz Arm的Cortex-M0+ CPU内核,264 kB SRAM和一个独特的可编程I/O系统。

树莓派Pico是一款非常流行且功能强大的MCU(微控制器)开发平台,基于树莓派的RP2040 MCU,价格仅为4美元。RP2040集成了两个133 MHz Arm的Cortex-M0+ CPU内核,264 kB SRAM和一个独特的可编程I/O系统。

本指南将通过几个软件组件的集成来创建一个具有频谱可视化和动画的MIDI播放器。我将探索如何在不使用RTOS的情况下创建一个具有实时音频合成,可视化和双核的复杂软件。

你可以在下面看到和听到结果的预览:

在单板上运行Demo

音频将使用来自pico-extras的PWM音频驱动程序生成,LCD将使用来自PIO pico-examples的LCD驱动程序控制(针对演示进行了修改)。

软件组件将使用CMSIS-Stream开源库进行集成。

MIDI组件来自Len Shustek的Playtune Synth项目,并经过大量修改以集成在此演示中。

本演示使用两个M0+内核。

数据流和CMSIS-Stream

这个演示使用了几个来自不同来源的软件组件:

•树莓公司开发的一些软件:PWM驱动和LCD驱动。

•来自Len Shustek的Playsynth_tune项目的一些组件用于音乐合成

•用于信号处理(频谱计算)的CMSIS-DSP组件

•为此演示开发的特定于应用程序的组件

•手臂- 2D用于最后的展示

这些组件必须连接起来,以达到预期的结果:实时音乐合成与动画显示。

对于流应用程序,将软件架构表示为突出显示数据流和数据依赖关系的图形是非常有用的。

这里有两个图表:

•一个在核心0上合成音乐:音频图。

•核心1上的一个处理和显示音乐:LCD图形。

(更高分辨率的图表可以在项目的github上看到)

实现这些图形有几个问题需要解决:

•图的不同部分使用不同的数据速率。例如,LCD的刷新率小于音频的刷新率。因此,图中的一些节点必须比其他节点执行得少得多。如果没有实时操作系统,我们如何轻松做到这一点?

•由于不同的数据速率以及一些节点在不同大小的缓冲区上工作,因此需要在节点之间引入fifo。我们如何确定fifo的大小?

•当节点在相同大小的缓冲区上工作时,我们仍然需要这些节点之间的临时缓冲区:我们如何最小化用于执行图的临时内存?

•我们如何在这样的系统中集成软件组件:连接到FIFO等……但开发人员的工作量最小

•所有这些问题都可以手工解决。它们并不难。但它们在开发流程中增加了摩擦。作为开发者,你必须考虑所有这些细节,而不是专注于产品的真正附加价值。

此外,这些问题使软件的模块化程度降低:图中的任何变化(数据速率、组件消耗或产生的缓冲区大小)都可能影响整个图的调度和许多fifo的大小。如果每次更改某些内容,就必须考虑并再次修改所有这些图形调度细节,这会使开发人员的工作变得更加困难。

CMSIS-Stream的开发是为了使开发人员的生活更容易处理所有这些细节:

图是用Python描述的。

CMSIS-Stream根据Python描述在构建时计算一个静态调度:

它是一个周期性的函数调用序列,考虑到不同的数据速率和缓冲区大小,它将生成/处理一个样本流。

CMSIS-Stream考虑计算的调度和节点消耗或产生的缓冲区大小来调整fifo的大小。

CMSIS-Stream尝试最小化缓冲区使用的临时内存。

软件组件集成在图中:

如果它们是纯函数就直接。

使用一个非常轻的c++包装器,它提供了标准的原始指针,用于访问FIFO组件

这些图形在python脚本create_audio_graph.py和create_lcd_graph.py中描述。

如果您想了解如何使用CMSIS-Stream并更改图形,请参阅CMSIS-Stream文档。

音频图

音频图表主要由来自Len Shustek的Playsynth_tune项目的组件制作而成。但是为了集成到这个演示中,它们已经被修改了很多(可能还引入了一些bug)。

相位增量的定点格式已被修改,以考虑到本演示中使用的音频速率。

波形振荡器的音频插值已被删除:它可以通过使用Pico HW插值器稍后重新引入。

生成音符命令的序列器是图形的一部分,不再从外部线程工作。必须更改逻辑以尊重图的同步行为:在节点完成当前调度迭代的执行之前,必须用注释命令尽可能多地加载序列器的输出通道。

向核心1发送数据的节点没有阻塞:音频比显示更重要。如果在核心1上运行的LCD图形太慢,它只会错过几个音频块。

LCD图形

这个演示使用的LCD只有240像素的宽度。如果目标刷新率为40ms,则意味着每40ms只显示240个样本。

但在40毫秒内产生的音频样本远远超过240个。音频信号必须经过滤波和抽取。LCD图形包含幅度和频谱部分的滤波和抽取节点。抽取因子是相当高的,所以高频将不可见的显示。

对于频谱,可以尝试使用更大的fft和更小的抽取因子来显示更高频率的内容。使用CMSIS-Stream的优点是,您可以通过更改描述LCD图形的Python中的几个参数轻松地进行这些实验。

您可能还需要更改抽取过滤器系数:这些系数在main.cpp中定义

光谱计算是标准的:

信号乘以汉宁窗。

它被转换成复数。

使用了一个复杂的FFT。

计算FFT的幅度,并应用一些缩放(用于显示)。

图形部分使用一些缓冲区生成器:缓冲区在不同的调度迭代之间重用。

振幅和频谱小部件被引入这些缓冲器。Arm-2D最后使用Pico HW插值器混合这些缓冲区。

CMSIS-DSP

使用开源计算库CMSIS-DSP进行音频通道的混合,并使用该库进行滤波和抽取,计算汉宁窗口和FFT。

在M0+上,CMSIS-DSP不能提供任何加速。但是通过使用CMSIS-DSP,您可以将您的软件移植到更强大的Cortex处理器(M和A)上,其中CMSIS-DSP将免费提供加速。

硬件设置

如果您使用的是没有预焊接头的树莓派Pico板,请按照MagPi的“如何将GPIO引脚接头焊接到树莓派Pico”指南并将接头焊接到板上。

LCD通过Pico四路扩展器连接,因此没有其他事情可做。

外部扬声器必须通过晶体管连接,否则会从Pico引脚产生过多的电流。

扬声器连接

电线的颜色编码与下图一致。不幸的是,我不得不使用我家里可用的东西,它迫使我使用红色或紫色的线进行接地连接,蓝色的线进行3V连接。

液晶显示器连接

LCD通过Pico四路扩展器连接,因此没有其他事情可做:

软件设置

设置Pico SDK环境

首先,您需要使用Raspberry Pi的Pico SDK和所需的工具链来设置计算机。

有关更多信息,请参阅“Raspberry Pi Pico入门”。

本指南的第2.1节可用于所有操作系统,接下来是具体操作部分:

Linux: 2.2节

macOS: 9.1节

Windows:第9.2节

你需要pico-sdk和pico-extras。

获取和编译PicoMusic演示

确保设置了PICO_SDK环境变量。

在终端窗口中,克隆git存储库并更改目录:

创建一个构建目录并更改目录:

运行cmake和make来编译:

按住板上的BOOTSEL按钮,同时用USB电缆将板插入计算机。

复制流。uf2文件到挂载的Raspberry Pi Pico启动盘:

测试

只需插入Pico,演示就会开始。你可以用LCD按钮控制它。

也可以通过USB从主机上的串行控制台控制它

结论

本指南介绍了如何使用带有LCD和外部扬声器的树莓派Pico板来创建实时音乐合成和频谱图可视化器。该项目使用了几个使用CMSIS-Stream库集成在项目中的组件。

树莓派RP2040的PIO, DMA和HW插值器是使这个演示成为可能的关键。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭