我有一个缓冲区,其中包含16000 PCM
个8Khz 8-bit mono
个样本。我正在尝试使用12位MCP4725 DAC
来播放它。我尝试使用micros()
来控制DAC
的写入间隔。这是我的代码 -
uint8_t soundData[16000] = { 234,206,79,255,249,....,210,222 }; // 8Khz 8-bit mono
void setup() {
Serial.begin(115200);
Wire.begin(D2, D1);
delay(100); // delay 100 ms
Serial.flush();
delay(1000);
}
void value_write(uint16_t temp){
Wire.beginTransmission(0x62);
Wire.write(64);
Wire.write(temp >> 4); // the 8 most significant bits...
Wire.write((temp & 15) << 4); // the 4 least significant bits...
Wire.endTransmission();
}
void loop() {
unsigned long currentMicros = micros();
// 125 uS sampling for 8KHz signal
if(currentMicros - previousMicros > 125) {
Serial.print("Index: ");
Serial.println(indx);
uint16_t temp = map(soundData[indx++], 0, 255, 0, 4095);
value_write(temp);
}
}
写入应该在2 seconds
内逻辑完成,但需要花费更多时间。关于在PCM values
成功将8000Hz
写入DAC的任何帮助都非常感谢。