1.引言
DFSDM 全稱為 Digital filter for sigma delta modulators。顧名思義,其作用主要是對外部 Σ?調制的數字信號進行濾波。STM32L462xx 系列支持最多 4 個外部串行通道,2 個數字濾波器,最大可達到 24bit 的 ADC 分辨率。并且支持 SPI 接口和曼切斯特編碼 1-wire接口。
2.問題分析
客戶使用 STM32L462xx 的 DFSDM 連接數字麥克風,將麥克風的 PDM 信號轉化為 PCM 信號,并采集數據。使用的參數為 16KHz 采樣,2M 左右的時鐘驅動數字麥克風,能夠正常讀取麥克風數據。了解到他們所使用的數字麥克風可以使用 768K 時鐘驅動,從而達到更低功耗的狀態,但是客戶無法配置出合適的時鐘,即使勉強配置到了768K 附近,通過 DFSDM 采集到的數據也是混亂的,完全無法解析。
了解到基本需求后,我們需要對 DFSDM 的時鐘有一定了解。從 RM0394 參考手冊中可以找到如下內容:
DFSDM 可以提供一個時鐘用于驅動外部 sigma delta 調制器,并且時鐘來源可以是DFSDM 時鐘或者 Audio 時鐘,其中 Audio 時鐘就是 SAI1 的時鐘。
在處理和時鐘相關的配置問題時,強烈建議使用 CubeMX 的時鐘配置界面進行配置。我們先來看下客戶用于驅動外部數字麥克風的時鐘配置。
從圖中可以看出,DFSDM 的時鐘為 36MHz,來自 PCLK2。SAI1 的時鐘約為 34.29MHz來自 PLLSAI1P。
這是關于 DFSDM 輸出時鐘的代碼片段,可以看到使用了 AUDIO 的時鐘作為輸出,并且使用 17 分頻,那么最終驅動數字麥克風的時鐘為 34.29/17≈2.02MHz。
再來看看濾波器部分參數的設計:
其中,使用了 4 階 SINC 濾波,過采樣參數為 128,那么 2.02MHz/128≈16KHz。也就是說這種配置參數下,可以接近 16KHz 的采樣率來對音頻數據采樣。
客戶想要將麥克風驅動時鐘重新配置為 768K,但只考慮修改 Divider 和 Oversampling 參數是配置不出來的。
3.問題解決
我們可以反過來推,要想獲得 16KHz 采樣率,768KHz 的時鐘,首先需要滿足以下公式:768K/ Oversampling = 16K, 那么 Oversampling=48。Oversampling 這個參數是比較好確定的,而 768K 來自于 CLK_SAI1/Divider, 這兩個參數目前無法確定,其中 CLK_SAI1 又來自于 PLLSAI1P,它由 PLLSAI1_N, PLLSAI1_P 兩個系數決定。也就是說要想獲得 768K 的時鐘,需要把這些參數都配置為合適的值。到這一步,實際上沒有直接的公式可以求下去了,只能自己測試并調整,建議可以先將 Divider 定好,然后通過 CLK_SAI1/Divider=768K 就可以求出CLK_SAI1 的值,將這個值手動輸入到 Cubemx 的時鐘配置界面可以自動求出合適的
PLLSAI1_N, PLLSAI1_P 系數,這樣可以大大減少調整時間。如果無法求出合適的值,CubeMX也會進行提示,那么只能重新換 Divider 來測試了。
最終調試下來的值如下圖所示:
我選擇的 Divider=50,那么可以算出CLK_SAI1=50*768K=38.4MHz,輸入到上圖界面中可以得到 PLLSAI1_N=12, PLLSAI1_P=5。
至此,已經可以正確得到 768KHz 的時鐘驅動麥克風了,但是目前仍然無法獲取到準確的音頻數據。
由于前面修改了 Oversampling,該參數會影響采樣值。在參考手冊中可以找到下表:
從表中可以看到,之前是 FOSR=128,Sinc4,對應的數值為+/-268435456,但是DFSDM 的數據寄存器只有 24bit,2^23<268435456 的,也就是說需要進行移位,只能以損失精度為代價進行轉換。客戶代碼中有以下配置:
數據需要右移 5 位保存到數據寄存器,那么現在我們的 FOSR 修改為了 48,對應上表可以看到數值是比較小的,不需要移位處理,所以改為:
到這里,我們需要修改的內容就全部結束了。將這些修改內容通知客戶,讓其進行測試,測試結果也比較滿意。
小結
DFSDM 在數字音頻應用中比較常見,主要用于將數字麥克風的 PDM 信號轉換為PCM 信號,如果沒有DFSDM 外設,就只能使用軟件庫進行轉化,效率比較低。當然,也可以用于一些模擬信號的采集,需要外部 Sigma Delta 調制器調制好之后再進行濾波,這樣得到的 ADC 精度要比通用的 ADC 精度更高,在要求高精度 ADC 的場合,不失為一種較好的方案。
原文標題:工程師筆記|DFSDM 時鐘配置問題
文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
麥克風
+關注
關注
15文章
632瀏覽量
54766 -
數字濾波器
+關注
關注
4文章
269瀏覽量
46986 -
時鐘
+關注
關注
10文章
1720瀏覽量
131364 -
調制器
+關注
關注
3文章
832瀏覽量
45108
原文標題:工程師筆記|DFSDM 時鐘配置問題
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論