STM32簡易示波器開發總結

2021-10-03 06:04:26 字數 1158 閱讀 4314

一.stm32內部da作為訊號源

二.stm23內部ad不間斷取樣

匯流排72mhz,6分頻,55.5個週期的取樣時間,大概有160khz的取樣頻率(不知道現在數字示波器還是不是和模擬的一樣用掃瞄訊號,沒有仔細去找相關資料,但是感覺完全可以用足夠的取樣率和儲存深度恢復波形)

三.dma匯流排傳輸(單次、不迴圈)

總共傳輸1024個資料,可以設定更多點,不過本次用的是32內部的sram,如果想做更多點的使用外掛程式ram不知道速度夠不夠

四.處理資料

1.觸發:設定了倆種,(1)達到觸發電平觸發、(2)達到觸發電平且為上公升沿觸發。t_point為觸發位置,adc_convertedvalue為dma傳輸的資料,t_value觸發電平。

電平觸發

int

trigger()

}return t_point;

}

上公升沿觸發

int

trigger()

}return t_point;

}

2.時域波形顯示、擦除

計算一下畫素點在顯示區域的高度位置就行,擦除時不要清屏,直接用本次的資料設定成和背景色相同的顏色可以快很多。下一步打算可以做到更改x軸刻度,初步設想是更改顯示ad取樣資料的間隔就行。還有暫停之後可以左右移動波形,同樣更改ad取樣資料的位置即可。

3.fft

採用官方的庫,注意修改一下頭檔案。顯示擦除和時域波形同理。

4.資料測量

最大值最小值平均值很好做,頻率測量採用的是fft的資料。

5.畫座標線

注:3.4.運算量較大,在時域波形顯示100幀後更新一次,擦除波形時會覆蓋座標線,所以重新畫的步驟跟在擦除之後

五.dma重新傳輸下一幀的資料點,重複資料處理

不知道是為什麼顯示的時域波形總有相位不連續的點,所以波形還是不太穩,現在也不敢肯定是不是da的問題,等回學校了拿示波器和訊號發生器看看吧

等這陣忙完了打算先把輸入端的電路做了,現在還沒辦法採集負電壓,之後把該用中斷的用上,可以試一試把這個搬上作業系統的開發,或者做高速ad和fpga組合,盡量增大頻寬。

檔案:提取碼:zlvp

STM32山外示波器程式

給串列埠傳送1位元組 void usart1 send char u8 c 給串列埠傳送指定長度的資料 void usart1 putbuff u8 buff,u32 len 山外傳輸協議 void vcan sendware u8 wareaddr,u32 waresize u8 cmdr 2 u...

STM32的GPIO開發總結

gpio開發總結 gpio模式 a 浮空輸入 in floating b 帶上拉輸入 ipu in push up c 帶下拉輸入 ipd in push down d 模擬輸入 ain anolog in e 開漏輸出 out pd od 代表開漏,既open drain,oc代表開集,open ...

STM32示波器 訊號發生器

關於stm32的示波器,網上以經有很多了。這裡還是想把自己的設計思想發表出來。這個專案已經準備了很久。這裡首先要感謝以前的團隊,非常感覺陳師和覃總兩位經驗豐富的嵌入式工程師,獲得了不少多方面的考慮。如果不是工作調整等原因,很有可能會出產品。但最後沒有做完深感遺憾。這裡發表下我的設計流程,希望能給做示...