【发布时间】:2022-08-07 15:23:45
【问题描述】:
我正在尝试从 STM32(blackpill_f411ce)中的 PCM 数据播放音频。我可以听到音频,但音频也伴随着陡峭的噪音。我正在使用 Audrino 的框架在 PlatformIO 中工作。 PCM 数据在代码中定义为无符号字符数组,如下所示
unsigned char sample[98216] = {0x52, 0x49, 0x46, 0x46, 0xA0,......}
我的代码如下
#include<Arduino.h>
#include <SoundData.h>
#define OUT_PIN_STM_32 PA8
int SineValues[256];
void InitSineValues()
{
float ConversionFactor=(2.0*3.142)/256.0;
float RadAngle;
for(int MyAngle=0;MyAngle<256;MyAngle++)
{
RadAngle=MyAngle*ConversionFactor;
SineValues[MyAngle]=(sin(RadAngle)*127)+128;
}
}
void playPcmData()
{
for (size_t i = 0; i < 98216; i++)
{
int val=int(sample[i]);
analogWrite(OUT_PIN_STM_32,SineValues[val]);
delayMicroseconds(50);
}
}
void setup() {
InitSineValues();
}
void loop() {
playPcmData();
delay(5000);
}
我在 ESP32 中使用了与 dacWrite 相同的代码,它运行良好。
-
如果你使用延迟它永远不会工作:)。了解如何使用 DMA
-
@0_______ 如果您可以分享示例代码,那就太好了
标签: c++ stm32 platformio