0

このトピックについて同様の質問があります: 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++;

どうもありがとう!

4

1 に答える 1