關于stm32的示波器,網(wǎng)上以經(jīng)有很多了。這里還是想把自己的設計思想發(fā)表出來。這個項目已經(jīng)準備了很久。這里首先要感謝以前的團隊,非常感覺陳師和覃總兩位經(jīng)驗豐富的嵌入式工程師,獲得了不少多方面的考慮。如果不是工作調(diào)整等原因,很有可能會出產(chǎn)品。但最后沒有做完深感遺憾。這里發(fā)表下我的設計流程,希望能給做示波器的朋友有一定的幫助。也是讓自己對此項目的一個總結。
本示波器有效測量頻率0.1 ~ 100KHz
雙通道
集成信號發(fā)生器
時間軸每格 1,2,5遞增范圍:2us ~ 1s
時間軸每屏12格
硬件結構:主芯 stm32zet6
觸摸屏 SSD1289 320*240 RGB565
AD: STM32內(nèi)部ADC 1MHz采樣率
雙通道。
(設計擴展外部高速AD,上述原因沒能得以完成)
DA:內(nèi)部DAC 20K以內(nèi)正弦波,鋸齒波和方波。
平臺:uCOSIII,
圖形:uCGUI
軟件設計:設計思想整個的數(shù)據(jù)流程如下:
數(shù)據(jù)采樣分為三個部分:
高速采樣(2us ~ 20us 包括20us);
在這之間以20us為例:
20us每格 * 12格 = 240us每屏。
采樣率為1m也就是1us只可以采樣到1個數(shù)據(jù),上面提到了屏是320寬。
所以在這種情況下,1個數(shù)據(jù)在顯示屏會對應1個或幾個點。
因此在2~20us之間都用最大采樣率1MHz采樣。
采用連續(xù)采樣模式。
中速采樣(50us ~ 20ms 包括20ms);
在這之間的時間段中,只要采樣周期調(diào)整和所選時間軸相同,就可以采樣點與屏上的點一一對應。
采用定時器觸發(fā)采樣模式。
低速采樣(大于等于50ms時)。
參考了海太科等品牌的示波器,在這種低速情況下在屏上循環(huán)顯示(顯示屏收尾相接)。
同樣采用定時器觸發(fā)采樣模式。
數(shù)據(jù)解析:
波形參數(shù):周期,占空比,最大值,最小值等等。
在獲得采樣數(shù)據(jù)后的數(shù)據(jù)參數(shù)的獲得就比較簡單了。
這里需要提的就是采樣點與顯示點的對應關系:
在中速,低速采樣:
采樣點顯示點一一對應。
在高速采樣時:
不管時間軸為多少采樣周期都是1us;
采樣點與顯示點的對應關系為 (320屏寬)/(時間軸 * 12格 / 1us)
尋找觸發(fā)點:
低速采樣不進行觸發(fā),因為是循環(huán)顯示。
在高速和中速采樣 三倍屏幕的數(shù)據(jù),與觸發(fā)線比較獲得匹配的一段數(shù)據(jù)進行顯示。
信號發(fā)生器:
這部分就很簡單了,先計算出一個周期的波形放在數(shù)組中,用DMA循環(huán)更新DA就可以了。
顯示:
這部分就直接上圖吧: