258浏览
查看: 258|回复: 0

[ESP8266/ESP32] 使用 FireBeetle ESP32 测试NS4168

[复制链接]
NS4168 是一颗I2S 输入,2.5W 单声道音频功放,就是能将I2S的声音放大提供给喇叭使用。这次测试的是DFRobot FireBeetle 配合NS4168 工作。
NS4168 电路图如下:

使用 FireBeetle ESP32 测试NS4168图1

PCB 设计如下:
使用 FireBeetle ESP32 测试NS4168图2

左侧J1是留出的接口,右侧SPK1SPK2是用于连接喇叭的接口,这里可以选择接入2.0间距或者2.54间距接口的喇叭:


  
NS4168
  
FireBeetle
功能
GND
CTRL
接入 3.3V
根据  DataSheet 这个是用于选择输出  I2S 信号中哪一个声道的。这里直接接入3.3V。CTRL 管脚电压为 0.9V~1.15V 时,选择左声道; CTRL 管脚电压为 1.5 V~VDD 时,选择右声道。小于0.4V 时关闭 NS4168。
  
特别注意:这里如果接地或者悬空会导致喇叭没有声音。
LRCLK
IO15(WS)
I2S 左右声道帧时钟。用于切换左右声道的数据。LRCLK 为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据,LRCLK 的频率等于采样频率。
BCLK
IO14(BCK)
串行时钟 BCLK 也叫位时钟, 是 主机送出来的I2S时钟信号
SDAT
IO22(DATA  OUT)
用二进制补码表示的音频数据
VCC
3.3V
供电

测试使用CArduino-audio-tools0.8.7版本,具体的引脚定义可以在 \libraries\arduino-audio-tools-0.8.7\src\AudioConfig.h 看到:

  1. #define PWM_FREQENCY 30000
  2. #define PIN_PWM_START 12
  3. #define PIN_I2S_BCK 14
  4. #define PIN_I2S_WS 15
  5. #define PIN_I2S_DATA_IN 4
  6. #define PIN_I2S_DATA_OUT 22
  7. #define I2S_USE_APLL false
复制代码
代码位于\libraries\arduino-audio-tools-0.8.7\examples\examples-stream\streams-generator-i2s中,是通过I2S输出一个正弦波:

  1. /**
  2. * @file streams-generator-i2s.ino
  3. * @author Phil Schatzmann
  4. * @brief see https://github.com/pschatzmann/arduino-audio-tools/blob/main/examples/examples-stream/streams-generator-i2s/README.md
  5. * @copyright GPLv3
  6. */
  7. #include "AudioTools.h"
  8. uint16_t sample_rate=44100;
  9. uint8_t channels = 2;                                      // The stream will have 2 channels
  10. SineWaveGenerator<int16_t> sineWave(32000);                // subclass of SoundGenerator with max amplitude of 32000
  11. GeneratedSoundStream<int16_t> sound(sineWave);             // Stream generated from sine wave
  12. I2SStream out;
  13. StreamCopy copier(out, sound);                             // copies sound into i2s
  14. // Arduino Setup
  15. void setup(void) {  
  16.   // Open Serial
  17.   Serial.begin(115200);
  18.   while(!Serial);
  19.   AudioLogger::instance().begin(Serial, AudioLogger::Info);
  20.   // start I2S
  21.   Serial.println("starting I2S...");
  22.   auto config = out.defaultConfig(TX_MODE);
  23.   config.sample_rate = sample_rate;
  24.   config.channels = channels;
  25.   config.bits_per_sample = 16;
  26.   out.begin(config);
  27.   // Setup sine wave
  28.   sineWave.begin(channels, sample_rate, N_B4);
  29.   Serial.println("started...");
  30. }
  31. // Arduino loop - copy sound to out
  32. void loop() {
  33.   copier.copy();
  34. }  
复制代码

测试的工作视频在下面可以看到



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail