0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用嵌入式 STM32F769I-DISCO 麥克風(fēng)

麥辣雞腿堡 ? 來源:意法半導(dǎo)體 ? 作者:意法半導(dǎo)體 ? 2023-01-30 15:37 ? 次閱讀

在這一部分中,我們將使用的軟件是STM32CubeIDE和STM32CubeMX。

要按照安裝說明進(jìn)行操作,請參閱此 wiki 頁面工具安裝。

1.2啟動(dòng)項(xiàng)目↑

要?jiǎng)?chuàng)建項(xiàng)目,請啟動(dòng)STM32CubeMX,然后在主頁上單擊訪問板選擇器使用部件號搜索字段選擇特定板STM32F769I-DISCO,如下圖所示。

500px-anacubemx.png

600px-anaselect.png

1.3配置開發(fā)板↑

下一步是設(shè)置正確的參數(shù)以創(chuàng)建第一個(gè)錄音和收聽從嵌入式 STM32F769I-DISCO 麥克風(fēng)獲得的聲音。

讓我們開始配置DFSDM通道和過濾器。

25px-Info_white.png

信息

DFSDM 是 Sigma-Delta 調(diào)制器的數(shù)字濾波器,它從外部數(shù)據(jù)執(zhí)行數(shù)字信號處理,在本教程中,它是麥克風(fēng)采集的外部數(shù)據(jù)。

對于通道 1,請?jiān)O(shè)置以下參數(shù):

模式:來自 ch1 的輸入和內(nèi)部時(shí)鐘作為入口

通道 1 參數(shù):

右位移位:2

模擬看門狗參數(shù):

過采樣 10

輸出時(shí)鐘:

選擇 :輸出時(shí)鐘源是音頻時(shí)鐘

分頻器 = 4

對于通道 0,請?jiān)O(shè)置以下參數(shù):

模式 :從 CH0 和內(nèi)部時(shí)鐘輸入

通道 0 參數(shù):

帶下降沿的 SPI類型

SPI 時(shí)鐘:內(nèi)部 SPI 時(shí)鐘

右位移位:2

模擬看門狗參數(shù):

過采樣:10

輸出時(shí)鐘:

選擇 :音頻時(shí)鐘

分頻器= 4

600px-dfsdm.png

稍后,讓我們配置使用的過濾器。

對于過濾器 0,請?jiān)O(shè)置以下參數(shù):

常規(guī)頻道選擇:

常規(guī)頻道部分:Channel1

啟動(dòng)常規(guī)轉(zhuǎn)換的觸發(fā)器:軟件觸發(fā)器

快速模式:啟用

注入通道選擇:

通道 1 作為注入通道:啟用

啟動(dòng)注入轉(zhuǎn)換的觸發(fā)器:軟件觸發(fā)器

過濾器參數(shù):

Sinc 順序:Sinc 3 濾波器類型

福斯?fàn)枺?4

對于過濾器 1,請?jiān)O(shè)置以下參數(shù):

常規(guī)頻道選擇:

常規(guī)頻道部分:Channel1

觸發(fā)以開始常規(guī)轉(zhuǎn)換:與 DFSDM0 同步

快速模式:啟用

注入通道選擇:

Channel0 作為注入通道:啟用

啟動(dòng)注入轉(zhuǎn)換的觸發(fā)器:軟件觸發(fā)器

掃描模式:啟用

過濾器參數(shù):

Sinc 順序:Sinc 3 濾波器類型

福斯?fàn)枺?4

現(xiàn)在是配置SAI外設(shè)的時(shí)候了。

25px-Info_white.png

信息

SAI 是串行音頻接口,它提供一個(gè)接口,允許微控制器與外部音頻設(shè)備(例如放大器ADC、DAC 或音頻處理器)進(jìn)行通信

Pinout & Configuration 選項(xiàng)卡中,單擊SAI以顯示Mode 和 Configuration面板并使用以下參數(shù)配置 SAI 參數(shù):

音頻= 44

插槽大小= 數(shù)據(jù)大小

插槽活動(dòng)= 用戶設(shè)置:0&1

500px-sai.png

在項(xiàng)目管理器視圖中,配置項(xiàng)目設(shè)置:重命名應(yīng)用程序,選擇 STM32CubeIDE 作為工具鏈,然后單擊生成代碼。

啟動(dòng)項(xiàng)目后,請按照以下步驟創(chuàng)建應(yīng)用程序:

在Drivers文件夾中的項(xiàng)目目錄中創(chuàng)建一個(gè)新文件夾并將其命名為BSP。

從STM32CubeMX下載的STM32CubeF7 MCU包中,復(fù)制目錄下的Components文件夾:C:UsersUserNameSTM32CubeRepositorySTM32Cube_FW_F7_V1.16.0DriversBSP,粘貼到項(xiàng)目目錄下的BSP文件夾中。

在BSP中創(chuàng)建一個(gè)名為STM32F769I-Discovery的新文件夾,并從以下目錄復(fù)制兩個(gè)文件:stm32f769i_discovery.c及其頭文件stm32f769i_discovery.h : C:UsersUserNameSTM32CubeRepositorySTM32Cube_FW_F7_V1.16.0DriversBSP STM32F769I-Discovery并將它們放在STM32F769I-Discovery文件夾中。

從“項(xiàng)目”菜單或“文件”菜單,轉(zhuǎn)到“屬性”》“C/C++ 構(gòu)建”》“設(shè)置”》“工具設(shè)置”》“MCU GCC 編譯器”》“包含路徑”

500px-options1.png

添加以下內(nèi)容,如下圖所示:

500px-include.png

在main.h文件中添加以下內(nèi)容:

#include “stm32f7xx_hal.h” #include “stm32f769i_discovery.h” #include “。./Components/Common/audio.h” #include “。./Components/wm8994/wm8994.h”

在 main.c 文件中添加以下聲明:

#define SaturaLH(N, L, H) (((N)《(L))?(L):(((N)》(H))?(H):(N))) int32_t LeftRecBuff [ 2048 ] ; int32_t RightRecBuff [ 2048 ]; int16_t PlayBuff [ 4096 ]; uint32_t DmaLeftRecHalfBuffCplt = 0 ; uint32_t DmaLeftRecBuffCplt = 0 ; uint32_t DmaRightRecHalfBuffCplt = 0 ; uint32_t DmaRightRecBuffCplt = 0 ; uint32_t PlaybackStarted = 0 ; AUDIO_DrvTypeDef * audio_drv ;

添加以下函數(shù)代碼:

void HAL_DFSDM_FilterRegConvHalfCpltCallback ( DFSDM_Filter_HandleTypeDef * hdfsdm_filter ) { if( hdfsdm_filter == & hdfsdm1_filter0 ) { DmaLeftRecHalfBuffCplt = 1 ; }

else { DmaRightRecHalfBuffCplt = 1 ; } }

在SAI的初始化函數(shù)中,添加以下代碼,從麥克風(fēng)設(shè)備讀取信號:WM899,初始化音頻驅(qū)動(dòng) */

if( WM8994_ID != wm8994_drv 。 ReadID ( AUDIO_I2C_ADDRESS )) { Error_Handler (); } audio_drv = & wm8994_drv ; audio_drv -》重置(AUDIO_I2C_ADDRESS );

if( 0 != audio_drv -》 Init ( AUDIO_I2C_ADDRESS , OUTPUT_DEVICE_HEADPHONE , 100 , AUDIO_FREQUENCY_22K )) { Error_Handler (); }

將i聲明為uint32_t后,在While循環(huán)中添加以下代碼:

if(( DmaLeftRecHalfBuffCplt == 1 ) && ( DmaRightRecHalfBuffCplt == 1 ))

{ for

( i = 0 ; i 《 1024 ; i ++ ) { PlayBuff [ 2 * i ] = SaturaLH (( LeftRecBuff [ i ] 》》 8 ) , - 32768 , 32767 ); PlayBuff [( 2 * i )+ 1 ] = SaturaLH (( RightRecBuff [ i ] 》》 8 ), - 32768 , 32767 ); } if( PlaybackStarted == 0 )

{ if

( 0 != audio_drv -》 Play ( AUDIO_I2C_ADDRESS , ( uint16_t * ) & PlayBuff [ 0 ], 4096 )) { Error_Handler (); } 如果

(HAL_OK != HAL_SAI_Transmit_DMA ( & hsai_BlockA1 , ( uint8_t * ) & PlayBuff [ 0 ], 4096 ))

{ Error_Handler (); } PlaybackStarted = 1 ; } DmaLeftRecHalfBuffCplt = 0 ; DmaRightRecHalfBuffCplt = 0 ; } 如果((DmaLeftRecBuffCplt == 1 ) && (DmaRightRecBuffCplt == 1 ))

{ for(i = 1024; i 《 2048; i++) { PlayBuff[2*i] = SaturaLH((LeftRecBuff[i] 》》 8), -32768, 32767); PlayBuff[(2*i)+1] = SaturaLH((RightRecBuff[i] 》》 8), -32768 , 32767 ); } DmaLeftRecBuffCplt = 0 ; DmaRightRecBuffCplt = 0 ; }

完成代碼部分后,單擊Buildand laterDebugthe program。

將耳機(jī)插入輸出音頻線插孔,盡情享受吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5060

    文章

    18983

    瀏覽量

    302291
  • 麥克風(fēng)
    +關(guān)注

    關(guān)注

    15

    文章

    630

    瀏覽量

    54746
  • STM32
    +關(guān)注

    關(guān)注

    2265

    文章

    10858

    瀏覽量

    354425
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F769I-DISCO在代碼中為什么無法控制引腳狀態(tài)?

    , GPIO_PIN_4);HAL_Delay(1000);是我漏了什么步驟嗎 開發(fā)板是STM32F769I-DISCO 可以正常下載例程運(yùn)行,開發(fā)板是好的
    發(fā)表于 03-19 06:28

    STM32F769I-DISCO開發(fā)板CoreMark跑分與固件恢復(fù)

    之前看有好多朋友已經(jīng)成功在STM32F769I-DISCO開發(fā)板上進(jìn)行了CoreMark跑分測試,為了探究開發(fā)板的性能到底如何,給大家一個(gè)參考,于是自己親自動(dòng)手進(jìn)行了移植測試,其實(shí)整個(gè)的移植過程
    發(fā)表于 12-16 14:38

    基于ARM Cortex-M7內(nèi)核的STM32F769NI MCU發(fā)現(xiàn)套件STM32F769I-DISCO

    STM32F769I-DISCO,Discovery套件允許用戶使用基于ARM Cortex-M7內(nèi)核的STM32F7系列微控制器開發(fā)和共享應(yīng)用程序。該發(fā)現(xiàn)套件支持多種應(yīng)用,可從音頻,多傳感器支持,圖形,安全性,視頻和高速連接功能中受益。 Arduino連接支持提供無限擴(kuò)
    發(fā)表于 03-13 08:57

    評測:STM32F769I-DISCO接入機(jī)智云,實(shí)現(xiàn)IoT開發(fā)遠(yuǎn)程控制等功能

    評測:STM32F769I-DISCO接入機(jī)智云,實(shí)現(xiàn)IoT開發(fā)遠(yuǎn)程控制等功能摘要:本文主要講述如何使用STM32F769I-DISCO接入機(jī)智云,實(shí)現(xiàn)智能設(shè)備開發(fā)的過程。適合IoT愛好者、高校學(xué)生
    發(fā)表于 09-05 15:25

    STM32F769I-DISCO評測&機(jī)智云物聯(lián)網(wǎng)云服務(wù)體驗(yàn)

    摘要:本文主要講述如何使用STM32F769I-DISCO接入機(jī)智云硬件開發(fā)平臺,實(shí)現(xiàn)智能設(shè)備開發(fā)的過程。適合IoT愛好者、高校學(xué)生等入門參考。[ 一、概覽 ]對于一個(gè)物聯(lián)網(wǎng)應(yīng)用,遠(yuǎn)程監(jiān)控設(shè)備狀態(tài)
    發(fā)表于 09-05 18:37

    STM32F769I-DISCO開發(fā)套件

    近期參加 STMicroelectronics 的活動(dòng),幸運(yùn)地獲得一套 STM32F769I-DISCO 開發(fā)套件,因?yàn)楫厴I(yè)之后的工作以 Linux 應(yīng)用開發(fā)為主,我對 STM32 的印象大多還
    發(fā)表于 08-04 09:09

    STM32F769I-DISCO外部連接器(“JP1”)的最大電流消耗和功率輸入是多少?

    你好!我擁有一塊 STM32F769I-DISCO 板,它有一個(gè)名為“JP1”的外部連接器(下面給出了這張圖片),用于為微控制器供電。所以,我想知道:這個(gè)外部連接器的最大電流消耗是多少?我們在這里可以獲得多少功率輸入?
    發(fā)表于 12-15 07:11

    如何使用“USB HS”連接器用手機(jī)電池為STM32F769I-DISCO供電?

    我有一塊 STM32F769I-DISCO 板,我想使用 USB HS 連接器為其供電。我剛剛發(fā)現(xiàn)移動(dòng)電源,我想知道我是否真的可以使用它(尤其是 5V/1A 輸出)為我的電路板供電而不會有損壞的風(fēng)險(xiǎn)。
    發(fā)表于 12-15 07:36

    如何使用帶有FatFS和USB大容量存儲的STM32F769I-DISCO板呢

    嗨,大家好,不幸的是,我找不到關(guān)于如何使用/配置帶有 FatFS 和 USB 大容量存儲的 STM32F769I-DISCO 的示例,以便能夠?qū)?USB 棒插入電路板并讀/寫文件。你們中有人能指出我
    發(fā)表于 12-23 08:28

    如何使用STM32F769I探索板從模擬麥克風(fēng)錄制音頻?

    如何使用 STM32F769I 探索板從模擬麥克風(fēng)錄制音頻?
    發(fā)表于 01-11 09:08

    STM32F769I-DISCO斷電后無法連接目標(biāo)的原因?

    我有 STM32F769I-DISCO 板,剛剛制作了一個(gè)簡單的應(yīng)用程序,它使用 usart1 在虛擬 com 端口 (USART1.x) 上打印一些調(diào)試消息。一切正常,直到我關(guān)閉電路板。當(dāng)開發(fā)板
    發(fā)表于 02-08 08:41

    求助,STM32F769I-DISCO各種板載芯片的引腳圖應(yīng)該去哪找?

    STM32F769I-DISCO各種板載芯片的引腳圖應(yīng)該去哪找,數(shù)據(jù)手冊上好像沒看到?
    發(fā)表于 08-07 07:19

    基于STM32F769I-DISCO微控制器的參考設(shè)計(jì)

    View the reference design for STM32F769I-DISCO. http://ttokpm.com/soft/ has thousands of reference designs to help bring your project to life.
    發(fā)表于 07-09 18:41 ?17次下載
    基于<b class='flag-5'>STM32F769I-DISCO</b>微控制器的參考設(shè)計(jì)

    你會不會使用STM32CubeMX建立STM32F769I-DISCO的工程?

    在16年ST就推出了STM32F769I-DISCO開發(fā)板,功能搭配可算得上眼前為之一亮,無論是POE、SPDIF輸入輸出、MEMS麥克風(fēng)、音頻編解碼器、還是TFT電容觸摸LCD顯示屏,各種器件
    發(fā)表于 02-11 14:21 ?5次下載
    你會不會使用<b class='flag-5'>STM32</b>CubeMX建立<b class='flag-5'>STM32F769I-DISCO</b>的工程?

    STM32F769I-DISCO 麥克風(fēng)基于互相關(guān)算法

    2.1提出算法和設(shè)置公式↑ 在教程的這一部分,應(yīng)用程序?qū)⒒诨ハ嚓P(guān)算法來跟蹤從電路板的兩個(gè)麥克風(fēng)獲得的兩個(gè)信號的移動(dòng)。 該算法基本上可以根據(jù)其公式實(shí)現(xiàn):∑((x(i)-mx)*(y(i)-my
    的頭像 發(fā)表于 01-30 15:39 ?812次閱讀