站点图标 CNX中文站

使用基于NuttX的Spresense SDK,对索尼Spresense开发板进行评测

本文共计3606字,预计阅读9分钟

支持音频和全球导航卫星系统的索尼 Spresense Arduino 兼容板及其扩展板于2019年夏天在日本推出。该公司现在已经扩大了市场,并且还在美国和欧洲提供开发板。

他们还委托了一家机构将样品发送给不同的评测人,我也有幸被选中。在这篇评测中,我将从检查硬件开始,简要讨论软件开发选项,并介绍我使用 Spresense SDK 时的体验。

索尼 Spresense 拆箱

我收到了两个盒子。

索尼 Spresense 包装盒

一个是主板,另一个是扩展板。

索尼 Spresense 包装盒侧面

主板盒子仅随附 CXD5602PWBMAIN1 板和信息表。板子顶部包括一个复位按钮、四个用户 LED、一个电源 LED、一个启动恢复按钮、摄像头接口、索尼 CXD5247电源管理以及音频模拟接口芯,可以看一下图中的黑色部分,但实际并没有那么黑,是反射导致, CXD5602PWBMAIN1 板支持 GNSS 的 Sony CXD5602 六核 Arm Cortex-M4F 微控制器 – 在封装上显示为 D5602GG,两排 2.54mm 间距 I/O 接头,以及位于电路板最右侧边缘的 GNSS 天线。

索尼 Spresense开发板

板子底部有8MB容量的MXIC MX25U6435F SPI NOR flash,一个100针连接主板和扩展板的连接器,CP2102N USB转TTL芯片,以及一个用于供电和编程的微型USB端口。

重要信息表主要包含法律术语、规范以及Spresense 支持网站的链接和二维码。

索尼 Spresense开发板信息表

扩展板带有类似的信息表,以及用于将主板固定到位的四个塑料柱。

索尼 Spresense扩展板和信息表

扩展板的最上面带有与 Arduino 兼容的接头、一个连接到主板的 100 针插座、一些跳线、一个 3.5 mm音频插孔和一个微型 SD 卡插槽。

索尼 Spresense扩展板正面

以上介绍的是扩展板的正面。扩展板的另一面主要是另外两个芯片: 电平转换器72040和德州仪器的八通道双向多电压电平转换器LSF0108 ,以及微型的“扩展” USB 端口。

索尼 Spresense扩展板背面

两块板的组装很简单。只需将四个黑色塑料柱插入扩展板的安装孔中,将主板放在上面,然后将其向下推就组装完成了。

索尼 Spresense开发板和扩展板组合

两种软件开发环境

Spresense 软件文档中所述,有两种使用 Spresense 板的方法:

我已经发布了许多针对其他硬件平台的 Arduino IDE 评测,并且其他人已经发布了使用 Spresense 和 Arduino IDE 的项目,所以我认为对于我和我的读者来说,研究一下Spresense SDK会更有趣。

Spresense SDK 结构

Spresense SDK 入门

索尼已提供 SDK 入门指南。因此,让我们尝试在运行 Ubuntu 18.04 的笔记本电脑上开始吧。

安装 Spresense SDK

USB连接

将当前用户添加到拨出组,然后注销以确保你可以访问串口:


现在是时候通过 USB 将主板连接到你的计算机了。这是内核日志的输出:


该板被正确检测为具有 10c4 VID 和 ea60 PID 的 CP210x 转换器。

Spresense SDK 设置


输出:


我们被要求…

下载 URL 要求你接受 EULA,即用户许可协议,否则无法从命令行的命令下载。下载后,我可以使用以下命令轻松将其烧录到开发板上:


最后命令输出:


你可以在当前目录中得到 nuttx.spk 固件:

刷入并运行固件 

此时,我们被要求刷写bootloader,但我们已经在上面完成了,所以我们可以直接刷写 nuttx.spk固件:


命令的输出:


要运行 hello world 程序,我们需要使用 minicom 或其他工具连接带有 115200 8N1 参数的串口:


串口设置中禁用硬件流控制,然后按 Esc 并选择Exit 退出。我们现在应该可以访问 NuttX 的 NuttShell (NSH) shell了。

通过串口访问 NuttX 的 NuttShell

接下来输入 hello 运行演示程序:


成功。hello world 程序的源代码可以在 examples/hello/hello_main.c 中找到,并且大部分是典型的 C hello world 程序:


作为参考,NuttX shell 有一些与 busybox 类似的命令:

Spresense 示例程序

Hello word 很好入门,但 Spresense SDK 中还有其他更有趣的示例:


每个示例在Spresense NuttX 开发人员指南中都有描述。不知道为什么,没有blinky 的示例。

一些示例需要额外的硬件,例如摄像头附加板、蓝牙 LE附加板 、传感器附加板等。你可以在开发者网站的主页向下滚动并找到一个列表。

由于音频和 GNSS 是该板的一些主要功能,我将尝试分别用 C++ 和 C 编程语言编写的 audio_player 和 gnss 示例。

Spresense 音频播放器

构建和烧录过程与 hello world 程序相同,在 sdk 目录中执行以下命令:


程序已加载到开发板,但我们需要把一些额外的文件存储在 micro SD 卡中,其中包含音乐、播放列表和“worker”二进制文件,如 audio_player 示例目录中的 README.txt 文件所述:

之后,您可以在目录 sdk/modules/audio/dsp 中看到 worker 二进制文件“MP3DEC”、“WAVDEC”。

将 worker 二进制文件、播放列表和播放内容存储在选项指定的路径中。

– 默认路径

worker二进制:/mnt/sd0/BIN

播放列表:/mnt/sd0/PLAYLIST

内容:/mnt/sd0/AUDIO

作为播放列表的示例,PLAYLIST 文件夹中有 TRACK_DB.CSV。此外,作为内容示例,AUDIO 文件夹中有 Sound.mp3。Sound.mp3是一个采样频率48000,位长16,编解码的MP3文件。

一开始我对指令的措辞感到困惑,但幸好最终理解了指令,并将文件复制到了 FAT32 格式的 4GB micro SD 卡中:


现在将 microSD 卡插入 Spresense 板,并连接一些扬声器,然后在 NuttShell 中启动应用程序。

Spresense 音频播放器示例


一切似乎都在按预期工作,除了我听不到任何音频……我检查了音频插孔连接,以防接触不良,我还检查了扬声器的功率和音量水平,但仍然没有声音。然后我想可能是Spresense主板和扩展板接触不良,所以我按下了板子的顶部……成功了!!!我终于可以从 Sound.mp3 文件中听到哔哔声了。有趣的是,micro SD 卡确实有效,但音频却无效。

全球导航卫星系统示例

让我们继续看 GNSS 的示例:


顺便说一句,请记住在运行 flash.sh 之前始终需要退出 minicom,否则最终会出现以下错误:


另一个说明是,你可以使用将 menuconfig 带入设置选项的选项来运行 config.py:


menuconfig 配置开发板

回到 GPS 测试。我试着把板子放在靠近窗户的地方,但建筑设计不太适合得到正确的 GPS 信号,1 小时 30 分后,我才得到UTC 时间。所以我搬到了户外,重新启动了电路板,一切都运行良好。仅 24 秒后我就得到了 UTC 时间:


1分 40 秒后就得到了定位数据:


不,我才不是住在科菲维尔 :),然而定位数据暴露了我的位置。

示例代码太长,无法在本评测中详细介绍,但你可以在示例目录中找到源代码,而且Spresense SDK 文档看起来结构清晰,非常详细和全面。

结束语

最近,我在硬件评测方面遇到了麻烦,有时总是会出错,但我必须承认 Spresense 板的一切测试都进行得相当顺利,示例正常工作,开发人员文档看起来很棒。

对于大多数项目,你可能需要附加板,因为在没有任何类型的无线或有线连接的情况下,必然没有太多需要 GNSS 和音频的应用程序。

索尼 Spresense 主板在 Framos US 上的售价为 65 美元,你还可以在那里找到售价 45 美元的扩展板。如果你在欧洲,也可以从RS ComponentsVido购买。Spresense相机的售价为29欧元,但这个价格不含增值税。传感器和蓝牙附加板由 ROHM 制造,可单独购买。希望他们能找到一种更简单的订购方法,也许在不久的将来会提供完整的开发套件。

分享这篇文章
退出移动版