Pico-Audio
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品概述
提供Pico C语言例程
产品简介
本产品是基于Pico而设计的音频模块,采用PCM5101A低功耗立体声解码器,I2S接口传输音频,支持宽范围音频采样频率。可同时对耳机与扬声器进行输出。
Rev2.1版本:
本产品是基于Pico而设计的音频模块,采用CS4344低功耗立体声解码器,I2S接口传输音频,支持宽范围音频采样频率。可同时对耳机与扬声器进行输出。
产品特性
- 支持8~384,000Hz的音频采样频率
- 芯片内置PLL免除了对主时钟的需要,实现了3线制I2S接口有效的减少了系统的EMI
- 自带欠压保护,采用双重静音系统,在时钟错误及电源故障时自动静音(停止输出)
- 提供20dB的带外噪声
- 板载了标准的3.5mm耳机与4线扬声器输出接口,支持音频输出
- 提供了Pico声卡免驱驱动程序,兼容windows、Linux等系统
- 提供了Pico音频播放程序
Rev2.1 :
- 支持2K~200KHz的音频采样频率
- 芯片内置PLL,音频时钟脚可以获取主时钟屏幕,并自动降频
- 板载了标准的3.5mm耳机与4线扬声器输出接口,支持音频输出
- 提供了Pico声卡免驱驱动程序,兼容windows、Linux等系统
- 提供了Pico音频播放程序
产品参数
- 供电电压:5V
- 逻辑电压:3.3V
- 音频解码芯片:PCM5101A
- 音频接口:I2S
- DAC信噪比:106dB
- 耳机驱动:40mW (16Ω@3.3V)
- 扬声器驱动:2.6W per channel (4Ω BTL)
Rec2.1
- 供电电压:5V
- 逻辑电压:3.3V
- 音频解码芯片:CS4344
- 音频接口:I2S
- DAC信噪比:105dB
- 耳机驱动:40mW (16Ω@3.3V)
- 扬声器驱动:2.6W per channel (4Ω BTL)
硬件资源
初始版本
L+、L-分别对应左扬声器的正、负极; R+、R-分别对应右扬声器的正、负极。
功能引脚 | Pico引脚(BCM) | 描述 |
VSYS | VSYS | 供电电源(5V电源输入) |
3V3(OUT) | 3V3(OUT) | 逻辑电源(3.3V电源输入) |
GND | GND | 电源地 |
DIN | GPIO26 | 音频数据输入 |
BCk | GPIO27 | 音频数据位时钟输入 |
LRCK | GPIO28 | 音频数据字时钟输入 |
Rev2.1版本
L+、L-分别对应左扬声器的正、负极; R+、R-分别对应右扬声器的正、负极。
功能引脚 | Pico引脚(BCM) | 描述 |
VSYS | VSYS | 供电电源(5V电源输入) |
GND | GND | 电源地 |
DIN | GPIO22 | 音频数据输入 |
DIN | GPIO26 | 芯片主时钟输入 |
BCk | GPIO27 | 音频数据位时钟输入 |
LRCK | GPIO28 | 音频数据字时钟输入 |
通信协议
I2S协议最需要注意的一点是,它以采样脉冲变化后的第二个时钟为数据的第一位,以下一个采样脉冲变化后的第一个时钟为数据的最后一位。
LRCK :音频数据字时钟输入,当其为低电平时为左声道采集数据,当其为高电平时为右声道采集数据。
BCK :音频数据位时钟输入,当其产生上升沿跳变时对数据进行采集,其频率必须为LRCK频率的32倍或48倍或64倍。
DATA :音频数据输入 ,注意数据为有符号型的数据,数据传输可以选择16位、24位、32位数据,高位在前、低位在后。
硬件连接
连接Pico的时候,请注意对应方向不要接反。可以观察模块上有USB丝印的一端与Pico的USB接口一端来判断方向
您可以对照以下表格连线。
Pico-Audio | Pico | 功能 |
VSYS | VSYS | 供电电源(5V电源输入) |
3V3(OUT) | 3V3(OUT) | 逻辑电源(3.3V电源输入) |
GND | GND | 电源地 |
DIN | GPIO26 | 音频数据输入 |
BCk | GPIO27 | 音频数据位时钟输入 |
LRCK | GPIO28 | 音频数据字时钟输入 |
Pico-Audio Rev2.1 | Pico | 功能 |
VSYS | VSYS | 供电电源(5V电源输入) |
GND | GND | 电源地 |
DIN | GPIO22 | 音频数据输入 |
MCLK | GPIO26 | 芯片主时钟输入 |
LRCK | GPIO27 | 音频数据字时钟输入 |
SCLK | GPIO28 | 音频数据位时钟输入 |
程序下载
打开树莓派终端,执行:
sudo apt-get install p7zip-full cd ~ sudo wget https://www.waveshare.net/w/upload/7/7c/Pico_Audio.7z 7z x Pico_Audio.7z -o./Pico-Audio cd ~/Pico_Audio
Rev2.1版本请使用以下命令
sudo apt-get install p7zip-full cd ~ sudo wget https://www.waveshare.net/w/upload/9/92/Pico-Audio-V2.7z 7z x Pico-Audio-V2.7z -o./Pico-Audio-V2 cd ~/Pico-Audio-V2
在Pico_Audio文件中有两个文件夹,在Pico_Audio文件夹中存储着音频输出程序,在usb_sound_card文件夹中存储着声卡的uf2文件,直接将其复制进入Pico中即可
cp usb_sound_card.uf2 /media/pi/RPI-RP2/
例程使用
C部分
- 以下教程为在树莓派上操作,但由于cmake的多平台、可移植的特点,在PC上也是能成功编译,但操作略有不同,需要您自行判断。
进行编译,请确保在Pico-Audio目录:
cd ~/Pico_Audio/Pico-Audio/
Rev2.1版本请使用以下命令
cd ~/Pico-Audio-V2/Pico-Audio/
创建并进入build目录,并添加SDK: 其中 ../../pico-sdk 是你的SDK的目录。 我们示例程序中是有build的,直接进入即可
cd build export PICO_SDK_PATH=../../pico-sdk (注意:务必写对你自己的SDK所在路径)
执行cmake自动生成Makefile文件
cmake ..
执行make生成可执行文件,第一次编译时间比较久
make -j9
编译完成,会生成uf2文件。 按住Pico板上的按键,将pico通过Micro USB线接到电脑的USB接口,然后松开按键。接入之后,电脑会自动识别到一个可移动盘(RPI-RP2),将build文件夹下的audio_firmware.uf2 文件复制到识别的可移动盘(RPI-RP2)中即可。
cp audio_firmware.uf2 /media/pi/RPI-RP2/
资料
文档
程序
开发软件
Pico快速上手
固件下载
| ||
|
视频教程
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
文字教程
基础介绍
MicroPython系列
【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解
【MicroPython】rp2.StateMachine类函数详解
C/C++系列
【C/C++】 Windows教程1——环境搭建
【C/C++】 Windows教程2——创建工程
Arduino IDE 系列
环境搭建
- 打开Arduino IDE,进入File->Preferences
- 在弹出的对话框中,在“Additional Boards Manager URLs”字段中输入以下URL(需要梯子):
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
- 点击OK关闭对话框。
- 进入IDE中的工具->开发板管理器
- 在搜索框中输入“pico”,然后选择“添加”:
- 无法下载的,可以点击此处下载压缩包提取密码为 0755 ,然后复制到指的目录下
- 解压后,复制到C:\Users\username\AppData\Local\Arduino15下
- 例如:我的用户名是ZhangSan,那么就是C:\Users\ZhangSan\AppData\Local\Arduino15下
- 注意:要将文件管理器中的隐藏的项目打开:点击查看 -> 勾选隐藏的项目,不勾选会看不见AppData文件夹
Pico-W系列教程(即将上线)
- 敬请期待
开源例程
MircoPython视频例程(github)
MicroPython固件/Blink例程(C)
树莓派官方C/C++示例程序 (github)
树莓派官方micropython示例程序 (github)
Arduino官方C/C++示例程序 (github)
FAQ