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