[英]How to cancel background noise while playing PCM Audio in STM32?
我正在嘗試從 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 相同的代碼,它運行良好。
在設置中,我添加了analogWriteFrequency(200000)並解決了問題
void setup() {
analogWriteFrequency(200000);
}
而且也不需要輸入正弦值
void playPcmData()
{
for (size_t i = 0; i < 98216; i++)
{
int val=int(sample[i]);
analogWrite(OUT_PIN_STM_32,val);
delayMicroseconds(50);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.