石孟楠 蔡坤 陳鳴鳩 李光智
【摘要】該文設計了一種基于STM32和DAC8871的可編程函數信號發生器。該裝置由STM32子系統、DA轉換電路、電壓基準電路、Flash存儲電路、波形選擇電路及顯示電路六大部分組成。該裝置采用SPI通信方式,可同時產生六種幅值可調(可達±15V)、頻率可變的不規則波形信號。
【關鍵詞】STM32;DA轉換;不規則波形;函數信號發生器
引言
函數信號發生器是電子測量、電子設備開發及電子工程相關課程實驗必備的儀器設備之一,除供通信,儀表和信號采集處理,自動控制系統測試用外,還廣泛用于其他非電測量領域。不過,現今多數函數信號發生器僅能產生固定的常規波形信號,如:三角波、階梯波、方波及正弦波等。為此,筆者提出一種基于STM32的可編程函數信號發生器的設計方法。該方法以STM32單片機為核心,從Flash芯片讀取波形信息,通過DAC8871進行DA轉換,得到各種非常規波形,并可通過外部中斷口實現不同波形的選擇,而且可通過電壓基準電路調節和末端運放調節輸出信號的增益來實現波形幅度的調節,能滿足產生任意波形的需求。
1.系統總體結構
本裝置的總體結構圖如圖1所示。本系統主要分為STM32子系統、DA轉換電路、電壓基準電路、Flash存儲電路、波形選擇電路以及顯示電路六大部分。首先,系統從Flash芯片中讀取不規則波形數組信息,通過SPI2口傳送入STM32,由外部中斷口檢測波形的選擇,再通過SPI1口將波形數字信號傳送到DAC8871進行DA轉換,經過電壓基準電路以及運放電路對其幅度的調節后,最終輸出不規則的模擬信號波形。
圖1 系統總體結構圖
2.硬件設計
2.1 STM32子系統及Flash存儲電路
STM32子系統及Flash存儲電路圖如圖2所示。STM32子系統以意法半導體(ST)公司生產的32位中容量ARM芯片STM32F103RBT6[1]為核心,結合復位電路、晶振電路、PL2303接口轉換電路及電源電路構成。Flash存儲電路主要由一款8MB存儲容量的Flash芯片W25Q64BVSIG[2]組成,采用SPI串行通信模式。如圖2所示,STM32子系統與Flash存儲電路將通過SPI2口進行通信。圖2中key1—key6分別為波形選擇按鍵,該裝置采用外部中斷觸發方式進行輸出波形的選擇切換。該裝置顯示器采用LCD1602,如圖1中RB[0..7]為數據端,RS、RW、E分別為顯示器讀寫控制端和使能端。
圖2 STM32子系統及Flash存儲電路
2.2 DA轉換電路
DA轉換電路可分為DAC8871[3]轉換電路部分和運算放大器電路部分,如圖3所示。DAC8871是一款由TI公司生產的16位單通道高精度數模轉換芯片,采用SPI串行通信方式。/RST為復位控制端,低電平有效。RSTSEL為上電復位選擇控制端,決定芯片在上電復位后輸出Vout的大小。/CS為片選端,低電平有效,SCLK為DAC8871數據端口時鐘,SDI為串行數據通信口,以幀為單位,16位數據為一幀。/LDAC是很重要的控制引腳,它決定了DAC8871的工作模式,當其為低電平時,DAC8871將處于實時更新數據的狀態;當其為高電平時,必須在/CS置高的前提下,將/LDAC拉低至少30ns才能更新DAC8871寄存器里的數據。Vcc和Vss為DA芯片工作提供±15V的雙電源,Vrefh_F、Vrefh_S、Vrefl_F、Vrefl_S引腳分別接由電壓基準電路輸出的精密正負電壓源,為DAC8871提供數模轉換所需參考電壓。DAC8871為電壓輸出型,輸出阻抗為6.2k?,輸出無緩沖,因此,該DA輸出需要外接外部緩沖放大器。該裝置中,選擇了OPA2604作為DA輸出的外接運放,該運放具有大于1MHz的3dB帶寬,從而增加了輸出的穩定時間。其中,R30為反饋電阻,也為匹配電阻,起到匹配DA芯片輸出阻抗作用。
圖3 DA轉換電路
2.3 電壓基準電路
本方案電壓基準電路是基于L7805數據手冊[4]中一種方案的創新應用,用一款可控精密穩壓源TL431[5]代替其中的L78XX系列芯片,原理圖如圖4所示。三極管Q3、Q4起到開關和電流放大作用,U13為10K電阻器,通過其調節輸出電壓大小。R27、R28為匹配電阻,將決定基準電壓輸出的精密性,因此均需采用大小為4.7k?的色環電阻。末端采用T型LC低通濾波電路,濾除高頻分量。V+、V-分別為正負基準電壓源輸出端,作為DAC8871參考電壓。
圖4 電壓基準電路
3.軟件設計
本方案中,STM32子系統與DA轉換電路及Flash存儲電路分別通過SPI1和SPI2口進行SPI串行通信。時鐘頻率設置為10MHz,SPI1設置為單線單向只發送的主模式,SPI2設置為雙線全雙工模式。非常規波形數據將通過SPI2存入Flash中,進而再通過SPI2調用波形數據,最后通過SPI1傳輸到DAC8871進行數模轉換,輸出信號。
3.1 數據計算
波形數據將以十六進制數組的形式存入Flash芯片中,下述公式可將由MATLAB生成的十進制波形數據轉換成實際DA芯片所能識別讀取的十六進制數據:
[3]
3.2 程序流程圖
圖5 系統程序流程圖
4.實驗結果
如圖6.1和圖6.2所示,分別為信號源產生的兩種非常規波形,由數字示波器測量可得到波形詳細的參數。以圖6.1波形為例,其峰峰值、周期、頻率、占空比分別為:15.8V、1.760ms、568.2Hz、67.4%。信號穩定不失真,且幅度可進行實時調節,最大正電壓值可達+15V。
圖6.1 信號源波形Ⅰ
圖6.2 信號源波形Ⅱ
5.結語
本文以不規則波形信號發生器為研究對象,基于STM32完成了一種操作簡單的可編程函數信號發生器的設計與實現。所設計的函數信號發生器可產生各種常規及非常規波形信號,每周期512個采樣點,信號幅度可調節,在-15V~+15V之間,頻率可調節。是一款實用性強、可調節范圍大、精度高、信號穩定、可編程的函數信號發生器,可用于多種需要信號源的場合。
參考文獻
[1]STMicroelectronics.STM32RB datasheet [EB/OL].http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
[2] Winbond.W25Q64BV datasheet [EB/OL].http://www.winbond.com/NR/rdonlyres/591A37FF-007C-4E99-956C-F7EE4A6D9A8F/0/W25Q64BV.pdf
[3]Texas Instruments.DAC8871 datasheet [EB/OL].http://www.ti.com/lit/ds/symlink/dac8871.pdf
[4]STMicroelectronics.L7805 datasheet [EB/OL].http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00000444.pdf
[5]Texas Instruments.TL431 datasheet [EB/OL].http://www.ti.com/lit/ds/symlink/tl431.pdf
作者簡介:石孟楠(1992—),廣東汕頭人,大學本科,現就讀于華南農業大學。