オーディオデータのフラッシュ読み込みと DAC 再生

実験要件

予備実験:
1) SD カードに test-speed.txt ファイルを作成し、一度に 256 バイトずつループで (遅延なく) バッチで書き込み、合計で 64KB バイト以上書き込み、このデータを読み取ります。ファイル、シリアル ポートを介して表示されます。書き込み速度と読み取り速度を分析します。
2) フラッシュ アドレス空間からのデータ読み取り。stm32f103c8t6 には、プログラム コードと配列変数の格納用に 20KB のメモリ (RAM) しかないため、内部フラッシュ (アドレスは 0x08000000 から始まる) の合計 64KB の格納スペースに対して、8KB のデータを 1 回書き込み、リセットして合計 4 回コードを実行すると、 32KB のデータをフラッシュに書き込みます。また、書き込まれたデータの正確性と読み取りおよび書き込み速度を確認します。
(cubemx を使用して、stm32f103c8t6 の内部 Flash を書き込みます)
オンチップ Flash に基づくプロンプト サウンド プレーヤー プログラム:
1) 実験的なデータの準備: Adob​​e Audition または goldwave およびその他のオーディオ編集ソフトウェアを使用して、数秒 (8khz サンプリング、8 ビット量子化エンコード モノ wav 形式) で、オーディオ データができるだけ小さくなるようにします (最大 64KB)。次に、stm32f103c8t6チップの内部フラッシュ領域にバッチでプログラムして書き込みます。
2) デジタル オーディオ復元再生タスク: このオーディオを読み取り、stm32f103c8t6 に付属の DAC チャネルを介して再生するためにアナログ オーディオに変換し、オシロスコープで波形を観察し、ヘッドフォン/スピーカーでそれを聞くためのプログラム、およびヒント:
最初にモノフォニック オーディオ (2000Hz 正弦波など) の wav データで実験することをお勧めします. 元の正弦波サウンドが DAC または PCM オーディオ モジュールを介して基本的に復元できるようになったら、次の実験を行います。音声および音楽信号。

1. Flash アドレス空間のデータ読み出し

1. STM32 の内部 FLASH の紹介

STM32 チップ内には FLASH メモリがあり、主にコードの保存に使用されます. アプリケーション プログラムをコンピュータに書き込んだ後、ダウンローダを使用して、コンパイルされたコード ファイルを内部の FLASH に焼き付けます. FLASH メモリの内容はチップの電源を入れてリセットした後、コアは内部フラッシュからコードをロードして実行できます。

Flash的编程原理都是只能将1写为0,而不能将0写为1
所以在进行Flash编程前,必须将对应的块擦除
即将该块的每一位都变为1,块内所有字节变为0xFF。

STM32F1のフラッシュメモリ(Flash)モジュール:メインメモリ、情報ブロック、フラッシュメモリインターフェースレジスタメイン
メモリブロックは
プログラムを格納するために使用されます.私たちが書くプログラムは通常ここに格納されます.大容量製品の場合、256ページに分割されます.各ページ 2K バイト。小容量および中容量の製品は、1 ページあたり 1K バイトしかないことに注意してください。
情報ブロック
のこの部分は 2 つの小さな部分に分かれており、スタートアップ プログラム コードは、ST に付属のスタートアップ プログラムを格納するために使用され、シリアル ポートを介してコードをダウンロードするために使用されます。 BOOT1 は GND に接続され、これがコードの一部を実行します。ユーザーはバイトを選択します。これは通常、書き込み保護や読み取り保護などの機能を構成するために使用されます。
フラッシュメモリインタフェースレジスタ
フラッシュメモリの読み書きなどを制御する部分で、フラッシュメモリモジュール全体の制御機構です。メイン メモリと情報ブロックへの書き込みは、組み込みのフラッシュ プログラム/消去コントローラー (FPEC) によって管理され、書き込みと消去のための高電圧は内部で生成されます。

在执行闪存写操作时,任何对闪存的读操作都会锁住总线
在写操作完成后读操作才能正确地进行;
既在进行写或擦除操作时,不能进行代码或数据的读取操作。

ここに画像の説明を挿入

2. エンジニアリング検証

1. プロジェクトのダウンロード

Flash プロジェクトのダウンロード リンク: https://pan.baidu.com/s/11Tn8TocHT8qithneDyKFIQ
抽出コード: pmvn

2. エンジニアリングの修正

stm32_Flash\Drivers\CMSIS\Device\ST\STM32F1xx\Include の下にある system_stm32f1xx_20190722_092746.h ファイルを system_stm32f1xx.h に変更してプロジェクトを開き main.cでフラッシュに書き込まれた
ここに画像の説明を挿入
内容をカスタマイズします。 -> 右側のハードウェア ST-Link デバッガーを使用し、ST-Link デバッガーの右側にある [設定] をクリックします。
ここに画像の説明を挿入

ここに画像の説明を挿入


ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

Flash Download->Check Reset and Run->Add->Select STM32F10x Med-density Flash->Add->OK in turn.
ここに画像の説明を挿入
見つかった場合
ここに画像の説明を挿入
、前のステップは無効になり、それ以上の操作は行われません。ハードウェア構成

ハードウェア ST-Link を接続する必要があるため、STLink ドライバーをダウンロードする必要があります.そうしないと、ダウンロードに失敗します. リンク:
https://pan.baidu.com/s/13k0PVQfg5qAHXBKJ2IZiYA抽出
コード: 1234
配線手順
ここに画像の説明を挿入

ここに画像の説明を挿入
左上隅にある [LOAD] ボタンをクリックして、プログラムを STM32 にダウンロードします。 [
ここに画像の説明を挿入
デバッグ] ボタンをクリックして、ハードウェア エミュレーション デバッグに入ります [
ここに画像の説明を挿入
表示] -> [メモリ ウィンドウ] -> [メモリ 1] をクリックしてメモリ監視ウィンドウを開き、アドレスに 0x800C000変更するフラッシュを観察するためのバー 間隔の内容:
ここに画像の説明を挿入
文字をクリックし、右クリックして表示形式を選択します
表示->ウォッチ ウィンドウ->ウォッチ 1 を続行して変数観察ウィンドウを開き
ここに画像の説明を挿入、変数 FlashWBuff および FlashRBuff をウォッチに追加します1 観測ウィンドウ.
ここに画像の説明を挿入
ここに画像の説明を挿入
さらに、View-> Periodic Windows Update にチェックを入れ、変数の自動更新を有効にし、
ここに画像の説明を挿入
フル スピードで実行します
. このとき、Watch 1 ウィンドウの配列 FlashRBuff の内容は、内容と同じであることがわかります。配列 FlashWBuff.
ここに画像の説明を挿入ここに画像の説明を挿入
メモリ 1 ウィンドウで、対応する内容が FLASH アドレス 0x0800C000 領域に正常に書き込まれていることがわかります。

ここに画像の説明を挿入
デバッグのために電源をオフにし、再度電源をオンにすると、メイン エントランスでプログラムが停止しても、Flash の対応するセクションの内容が最後に書き込まれた内容の値のままであることがわかります。
ここに画像の説明を挿入

2. オンチップ Flash によるプロンプトサウンドプレーヤープログラム

1. DAC を使用して、周期 2khz の正弦波を出力します。

最初にモノフォニック オーディオ (2000Hz 正弦波など) の wav データで実験し、DAC または PCM オーディオ モジュールを介して元の正弦波サウンドが基本的に復元できるようになったら、言語/音楽信号を使用して実験することをお勧めします。
モノフォニック正弦波
ファイルを生成 -> 新規 -> オーディオ ファイル
ここに画像の説明を挿入
効果 -> 生成 -> トーン
ここに画像の説明を挿入
ここに画像の説明を挿入
ファイル -> エクスポート -> wav ファイルとしてエクスポートするように設定.
UltraEdit を使用して関連データを取得
. UltraEdit を使用して、保存したばかりの wav ファイルを開きます
ここに画像の説明を挿入
CTRL +A、次にマウスの右ボタンで 16 進数を選択して、選択したビューをコピーし、内容を新しいファイルに貼り付けます 新しいファイルで、CTRL+
A、次にマウスの右ボタンで範囲を選択し、開始行番号と列番号を入力します、確認して選択 必要なコンテンツ全体をコピーします編集 -> 列ブロック編集 -> 0x DAC を入力して、
notepad++ で正弦波ルーチン コードを生成しますリンク: https://pan.baidu.com/s/18zsQG5mZXbjafPuAJEUkMg抽出コード: 706i 以降、コンパイルおよびダウンロードして、予想される正弦波が観測できるかどうかを確認します。

ここに画像の説明を挿入



ここに画像の説明を挿入
ここに画像の説明を挿入

2.デジタルオーディオ復元再生

上記の操作と一致して、サンプリング レートが変更され、その他は変更されません。
ここに画像の説明を挿入
ハードウェアが不足しているため、ここでは説明できません。

3. まとめ

私たちの負担を軽減する必要があるため、ここでの実験操作の内容はまだ縮小されており、実験中にいくつかのハードウェアの問題が引き続き発生します.仕方がなく、頭が大きいです.ここでも参照してくださいいくつかの大きなブロガーのブログに、私は一生懸命働き続けることを願っています.

4.参考リンク

https://blog.csdn.net/qq_46467126/article/details/122098829
https://blog.csdn.net/qq_40147893/article/details/107423621
https://blog.csdn.net/zhanglifu3601881/article/details/ 96632971
https://blog.csdn.net/Ace_Shiyuan/article/details/78196648

おすすめ

転載: blog.csdn.net/m0_48609250/article/details/122179642