Arduino-Pico 4.4.3版本发布:双向I2S与软件SPI功能解析
Arduino-Pico项目为Raspberry Pi Pico/RP2040微控制器提供了完整的Arduino核心支持,让开发者能够在熟悉的Arduino开发环境中充分利用RP2040芯片的强大功能。最新发布的4.4.3版本带来了两项重要的功能升级:双向I2S接口支持和软件实现的SPI接口,进一步扩展了RP2040在音频处理和灵活外设连接方面的能力。
双向I2S接口支持
I2S(Inter-IC Sound)是一种专为数字音频数据传输设计的串行总线标准。在之前的版本中,Arduino-Pico仅支持单向I2S通信,即要么作为发送方,要么作为接收方。4.4.3版本引入了双向I2S支持,允许同一组BCLK(位时钟)和LRCLK(左右声道时钟)信号线同时用于输入和输出。
这项改进意味着:
- 音频设备可以同时进行录制和播放,共享同一时钟信号
- 减少了硬件连接复杂度,节省了宝贵的GPIO引脚资源
- 为全双工音频应用如VoIP、实时音频处理等场景提供了更好的支持
实现上,项目团队对AudioBufferManager和I2S驱动进行了增强,新增了缓冲区读取功能,确保音频数据能够高效地在输入和输出之间流转。
软件SPI实现
传统SPI接口通常需要专用的硬件引脚,这在引脚资源紧张或需要特殊布局时会成为限制。4.4.3版本通过PIO(可编程I/O)技术实现了软件SPI,具有以下特点:
- 完全通过软件实现,不依赖硬件SPI外设
- 可在任意GPIO引脚上配置SPI功能
- 保持与标准SPI库相同的API接口,便于移植现有代码
- 利用RP2040独特的PIO状态机实现高效位操作
这项功能特别适合以下场景:
- 当硬件SPI引脚已被其他功能占用时
- 需要多个SPI设备但硬件SPI接口数量不足
- 特殊PCB布局要求SPI信号走特定路径
其他改进
除了上述主要功能外,4.4.3版本还包含多项优化:
- 改进了PSRAM和Boot2的文档说明,帮助开发者更好地理解和使用这些功能
- OTA(空中下载)更新器增加了更详细的错误代码,便于诊断网络存储(OOS)相关的问题
- 修复了Adafruit Feather RP2350 HSTX板上的I2C功能问题
- 移除了不必要的SDFAT_FILE_TYPE设置,使用默认值即可正常工作
技术实现细节
在底层实现上,开发团队对SPI和SoftwareSPI的代码进行了重构,消除了重复代码,提高了维护性。双向I2S的实现则充分利用了RP2040的DMA和双核特性,确保音频数据能够高效传输而不占用过多CPU资源。
对于软件SPI,PIO的灵活编程能力是关键。每个PIO状态机可以精确控制引脚时序,实现SPI协议要求的时钟和数据同步,同时保持较低的中断开销。
结语
Arduino-Pico 4.4.3版本的发布进一步丰富了RP2040在Arduino生态系统中的功能集。双向I2S为音频应用开发者提供了更多可能性,而软件SPI则解决了硬件限制带来的困扰。这些改进体现了项目团队对实际开发需求的深刻理解和对RP2040硬件特性的充分利用,为嵌入式音频处理和灵活外设连接提供了更加强大的工具集。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0193- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00