このトピックについて同様の質問があります: wav ファイルへの音符の書き込み。しかし、私はstackoverflow.comの初心者であり、コマンドを追加するのに十分な評判がなく、Qの下にQを投稿することが許可されているかどうかわかりません.
私の目的と問題を説明させてください。
stm32f4 マイクロコントローラから DAC に I2S を使用して 16 ビット 48kHz サンプル レートの正弦波を送信したいと考えています。C の数学ライブラリと sin() 関数を使用して Wave を生成します。生成後、ヘッドホンで音出しテスト中です。ただし、周波数に関連しているようには見えませんが、関連しています。周波数が変わると何かが変わります。パラメータは変わりますが、音色に違いはありません。FIRローパスフィルターが必要かもしれませんが、よくわかりません。また、実際に FIR ローパス フィルターを使用してみました (Andreas Finkelmeyer の Web サイト、mind-dump.net から)。ただし、正弦波発生器のコードでは意味のある変更はありませんでした。
最後に、私は主に自分のコードに関するエリックの賢明なアドバイス (そのトピック) に従おうとしましたが、間違ったことをしています。助けてください!返信をいただければ幸いです。
これが正弦波を生成する私のコードです。
if (SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE))
{
for (countSin = 0;countSin < 65536;countSin ++){
SPI_I2S_SendData(SPI3, sample);
if (sampleCounter & 0x00000001) //this line for matching L&R channels
{
sample = (uint16_t) (32768+(2500*sin((2*3.14/48000)*countSin*8800)+2000*sin((2*3.14/48000)*countSin*11)));
}
sampleCounter++;
どうもありがとう!