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





