關於stm32的示波器,網上以經有很多了。這裡還是想把自己的設計思想發表出來。這個專案已經準備了很久。這裡首先要感謝以前的團隊,非常感覺陳師和覃總兩位經驗豐富的嵌入式工程師,獲得了不少多方面的考慮。如果不是工作調整等原因,很有可能會出產品。但最後沒有做完深感遺憾。這裡發表下我的設計流程,希望能給做示波器的朋友有一定的幫助。也是讓自己對此專案的乙個總結。
本示波器有效測量頻率0.1 ~ 100khz
雙通道整合訊號發生器
時間軸每格 1,2,5遞增範圍:2us ~ 1s
時間軸每屏12格
主芯 stm32zet6
觸控螢幕 ssd1289 320*240 rgb565
ad: stm32內部adc 1mhz取樣率
雙通道。
(設計擴充套件外部高速ad,上述原因沒能得以完成)
da:內部dac 20k以內正弦波,鋸齒波和方波。
平台:ucosiii,
圖形:ucgui
整個的資料流程如下:
資料取樣分為三個部分:
高速取樣(2us ~ 20us 包括20us);
在這之間以20us為例:
20us每格 * 12格 = 240us每屏。
取樣率為1m也就是1us只可以取樣到1個資料,上面提到了屏是320寬。
所以在這種情況下,1個資料在顯示屏會對應1個或幾個點。
因此在2~20us之間都用最大取樣率1mhz取樣。
採用連續取樣模式。
中速取樣(50us ~ 20ms 包括20ms);
在這之間的時間段中,只要取樣週期調整和所選時間軸相同,就可以取樣點與屏上的點一一對應。
採用定時器觸發取樣模式。
低速取樣(大於等於50ms時)。
參考了海太科等品牌的示波器,在這種低速情況下在屏上迴圈顯示(顯示屏收尾相接)。
同樣採用定時器觸發取樣模式。
資料解析:
波形引數:週期,占空比,最大值,最小值等等。
在獲得取樣資料後的資料引數的獲得就比較簡單了。
這裡需要提的就是取樣點與顯示點的對應關係:
在中速,低速取樣:
取樣點顯示點一一對應。
在高速取樣時:
不管時間軸為多少取樣週期都是1us;
取樣點與顯示點的對應關係為 (320屏寬)/(時間軸 * 12格 / 1us)
尋找觸發點:
低速取樣不進行觸發,因為是迴圈顯示。
在高速和中速取樣 三倍螢幕的資料,與觸發線比較獲得匹配的一段資料進行顯示。
訊號發生器:
這部分就很簡單了,先計算出乙個週期的波形放在陣列中,用dma迴圈更新da就可以了。
顯示:
這部分就直接上圖吧:
這裡兩段視屏:
STM32 基DMA的DAC波形發生器
dac是stm32系列的乙個基本外設,可以將數碼訊號轉化成模擬訊號,這次我將使用dac來輸出乙個特定波形。首先確定工作方法,由於我目前在做的簡易示波器在輸出波形的同時還需要顯示輸入訊號,所以不能占用太多cpu時間,於是就選用了基於dma的adc。使用dma只需告訴dma外設它要怎麼搬移資料就可以處理...
音訊訊號發生器 發生器電路
以下三種電路比較簡單,很好理解!用的晶元不一樣,也可以設計出同種型別的電路。前面用閘電路實驗組成多諧報蕩器,它可以驅動發光二極體發出變化無窮的彩色閃光,用多諧振盪器輸出的脈衝驅動可以使揚聲器發出聲響,用一種頻率的訊號源可以使揚聲器發出單一頻率的聲響 如果用幾種頻率的訊號源混合後可以發出各種不同的聲響...
STM32簡易示波器開發總結
一.stm32內部da作為訊號源 二.stm23內部ad不間斷取樣 匯流排72mhz,6分頻,55.5個週期的取樣時間,大概有160khz的取樣頻率 不知道現在數字示波器還是不是和模擬的一樣用掃瞄訊號,沒有仔細去找相關資料,但是感覺完全可以用足夠的取樣率和儲存深度恢復波形 三.dma匯流排傳輸 單次...