發現論壇里好多都是基于51單片機設計的,分享一下手里關于STM32的設計資料,同時樓主也在學習相關知識
基于STM32F103ZET6數字示波器
設計指標:
主控: STM32F103ZET6
液晶屏: 4.3寸TFT480×272 65K彩色LCD顯示屏 FSMC
AD: 12位1MHz采樣速率
最高實時取樣率: 1Msps 8Bits
取樣緩沖器深度: 5K
垂直靈敏度: 5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;
水平時基范圍:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS
輸入阻抗: ≥1MΩ
最高輸入電壓: 30Vpp
耦合方式: AC/DC
觸發功能: 實現自動、常規、單次觸發方式 ,上升或下降邊沿觸發
參數計算: 頻率、周期、占空比、交流峰-峰值、平均值
觸發電平: 觸發電平高低位置可調,觸發時基位置可調
實現RUN/STOP功能
功能預留:
1、波形發生器:使用STM32一路DA實現正弦,三角波,方波輸出。 任意一種波形幅值在
0-3.3V任意可調、頻率在一定范圍任意可調、方波占空比可調。調節選項
可以通過觸摸屏完成設置。
2、SD卡存儲: SD卡波形存儲輸出,能夠對當前屏幕截屏,以JPG格式存儲在SD卡上。能夠存儲1S內的波形數據,可以隨時調用查看。
3、數據傳輸: 用C#編寫上位機,通過串口完成對下位機的控制。初步功能為:(1)實現STOP/RUN功能(2)輸出波形電壓、時間參數(3)控制截屏(4)控制波形發生器(5)其他
4、圖形接口: 完成UCGUI的移植和使用工作。
5、遠期計劃: 添加FFT等等
1、采樣速率:600Sa/s,6kSa/s ,60kSa/s,600kSa/s ,3MSa/s,,6MSa/s,30MSa/s ,60MSa/s
2、水平掃速:250 ns*、500ns、1μs、5 μs、10μs、50μs、500 μs、5ms 、50ms
3、垂直電壓靈敏度:10mV/div, 20mV/div, 50mV/div, 0.1V/div, 0,2V/div, 0.5V/div, 1V/div,
2V/div, 5V/div
4、被測信號的各種參數屏幕顯示,包括頻率、電壓峰峰值等。
硬件電路
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (20.81 KB, 下載次數: 74)
下載附件
2020-6-20 03:03 上傳
51hei.png (24.84 KB, 下載次數: 78)
下載附件
2020-6-20 03:03 上傳
51hei.png (35.29 KB, 下載次數: 87)
下載附件
2020-6-20 03:03 上傳
51hei.png (10.73 KB, 下載次數: 79)
下載附件
2020-6-20 03:03 上傳
增益計算表
51hei.png (25.63 KB, 下載次數: 77)
下載附件
2020-6-20 03:02 上傳
單片機源程序如下:
- /*------------------------------------------------------------------------------------
- STM32示波器
- 硬件平臺:
- 主控器: STM32F103ZET6 64K RAM 512K ROM
- 屏幕器: SSD1963
- 分辨率: 480x272 16位色
- 觸摸屏: TSC2046
- 模擬電路: OP - TL084
- OP - u741
- SW - CD4051
- CMP - LM311
- PWR - LM7805
- - LM7905
- - MC34063
- - AMS1117-3.3
- DRI - ULN2003
- 繼電器:信號繼電器
- 電源: DC +12V
- 軟件平臺:
- 開發環境: RealView MDK-ARM uVision4.10
- C編譯器 : ARMCC
- ASM編譯器:ARMASM
- 連接器: ARMLINK
- 實時內核: uC/OS-II 2.90實時操作系統
- GUI內核 : uC/GUI 3.90圖形用戶接口
- 底層驅動: 各個外設驅動程序
-
- ROM Size = Code + RO-data +RW-data
- RAM Size = RW-data + ZI-data
- Program Size: Code=56024 RO-data=8272 RW-data=256 ZI-data=29912
-
- BoX編寫于大二上學期
-
-
- -------------------------------------------------------------------------------------*/
- #include "stm32f10x.h"
- #include "ucos_ii.h"
- #include "app.h"
- #include "GUI.h"
- #include "usart1.h"
- #include "pincfg.h"
- #include "delay.h"
- #include "tft_api.h"
- #include "dac.h"
- #include "adc.h"
- #include "iwdg.h"
- #include "timer.h"
- #include "EXTI.H"
- #include "oscilloscope.h"
- #include "indkey.h"
- #include "tsc2046.h"
- #include "task_rtc.h"
- #include "task_gui.h"
- #include "task_sd.h"
- /*-----------------------------------------
- 聲明起始任務棧
- ------------------------------------------*/
- OS_STK Task_Start_Stk[TASK_START_STK_SIZE];
- /*-----------------------------------------
- 因為涉及到對共享資源的訪問,創建互斥信號量
- ------------------------------------------*/
- OS_EVENT *LCD_Buffer_MUTEX;
- OS_EVENT *USART_Buffer_MUTEX;
- OS_EVENT *SDtoRAM_Buffer_MUTEX;
- /*-----------------------------------------
- 主 函 數
- ------------------------------------------*/
- int main(void)
- {
- INT8U err;
- SystemInit(); //初始化RCC時鐘
- OSInit();
-
- LCD_Buffer_MUTEX = OSMutexCreate(4,&err); //創建3個共享資源互斥信號量
- USART_Buffer_MUTEX = OSMutexCreate(4,&err);
- SDtoRAM_Buffer_MUTEX = OSMutexCreate(4,&err);
-
- OSTaskCreate(Task_Start,(void *)0,&Task_Start_Stk[TASK_START_STK_SIZE-1],TASK_START_PRIO); //起始任務
-
- OSStart();
- }
- /*-------------------------------------------------------------------------------
- 函數功能:初始化各種外設
- 說 明:因為跑操作系統,所以外設的初始化應該放在操作系統的初始任務中完成,不能
- 在while(1)循環外部完成外設的初始化工作,否則操作系統可能無法啟動.
- 本函數在app.c中被調用
- -------------------------------------------------------------------------------*/
- void BSP_Init(void)
- {
- OS_CPU_SR cpu_sr = 0u;
- OS_ENTER_CRITICAL();
- DelayInit(); //初始化延時
- PinCfg(); //外部器件控制配置
- FSMC_LCD_Init(); //FSMC總線配置
- GUI_Init(); //初始化UCGUI界面
- TSC2046_Config(); //初始化觸摸控制器
- USART1_Config(); //初始化串口
- DAC_Config(); //初始化DAC1
- ADC1_Init(); //初始化ADC1
- EXTI_Config(); //初始化外部中斷
- Key_EXTI_Config(); //初始化按鍵中斷
- TIM5_Config(1999,71); //TIM5以1MHz頻率計數,每2ms溢出中斷
- // TIM4_Config(59999,71); //TIM4以1MHz頻率計數,每60ms溢出中斷
- RTC_Init(); //初始化RTC
- // SD_Init();
- JDQ_ACDC = 1; //交流耦合
- ManualGainScan(3); //調試用
- IWDG_Init(4,625); //喂狗時間為1000ms
- OS_EXIT_CRITICAL();
- }
復制代碼
51hei.png (3.73 KB, 下載次數: 77)
下載附件
2020-6-20 03:06 上傳
所有資料51hei提供下載:
STM32示波器.7z
(8.2 MB, 下載次數: 95)
2020-6-20 03:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|