完整資料下載:
stm32 keil C程序源碼.zip
(10.07 MB, 售價(jià): 5 E幣)
上位機(jī)源碼C#.zip
(9.84 MB, 售價(jià): 5 E幣)
硬件PCB及模塊電路仿真.zip
(2.77 MB, 售價(jià): 5 E幣)
設(shè)計(jì)文檔.zip
(60.62 KB)
2023-6-17 12:40 上傳
點(diǎn)擊文件名下載附件
設(shè)計(jì)文檔附件內(nèi)容:
STM32示波器通信協(xié)議.xlsx
增益計(jì)算表.xlsx
用四個(gè)字節(jié)十六進(jìn)制數(shù)表示單精度浮點(diǎn)數(shù).docx
示波器時(shí)間表.docx
設(shè)計(jì)指標(biāo).docx
12.jpg (7.59 KB)
下載附件
2021-12-15 15:46 上傳
硬件pcb及模塊電路仿真附件內(nèi)容:
電平平移.ms12
示波器AD板.pdf
示波器AD板最終實(shí)物版圖.PcbDoc
示波器上層板.pdf
示波器上層板最終實(shí)物版圖.PcbDoc
示波器前端電路.ms12
耦合——衰減電路.ms12
11.jpg (9.88 KB)
下載附件
2021-12-15 15:46 上傳
設(shè)計(jì)指標(biāo):
主控:STM32F103ZET6
液晶屏:4.3寸TFT480×272 65K彩色LCD顯示屏 FSMC
AD:12位1MHz采樣率
最高實(shí)時(shí)取樣率:1MSa/s 12Bits
取樣緩沖器深度:5K
垂直靈敏度: 5V,1V,500mV,200mV,100mV,50mV,20mV,10mV;
水平時(shí)基范圍:2S,1S,500mS,200mS,100mS,50mS,20mS,10mS,5mS,2mS,1mS,500uS,200uS,100uS,50uS,20uS,10uS,5uS,2uS,1uS
輸入阻抗: ≥1MΩ
最高輸入電壓: 30Vpp
耦合方式: AC/DC
觸發(fā)功能: 實(shí)現(xiàn)自動(dòng)、常規(guī)、單次觸發(fā)方式 ,上升或下降邊沿觸發(fā)
參數(shù)計(jì)算: 頻率、周期、占空比、交流峰-峰值、平均值、光標(biāo)追蹤顯示
RUN/STOP
功能:
1、波形發(fā)生器:使用STM32一路DA實(shí)現(xiàn)正弦,三角波,方波,白噪聲輸出。 任意一種波形幅值在0-3.3V任意可調(diào)、頻率在一定范圍任意可調(diào)、方波占空比可調(diào)。調(diào)節(jié)選項(xiàng)可以通過(guò)觸摸屏完成設(shè)置。
2、SD卡存儲(chǔ): SD卡波形存儲(chǔ)輸出,能夠?qū)Ξ?dāng)前屏幕截屏,以JPG格式存儲(chǔ)在SD卡上。能夠存儲(chǔ)1S內(nèi)的波形數(shù)據(jù),可以隨時(shí)調(diào)用查看。
3、數(shù)據(jù)傳輸: 用C#編寫上位機(jī),通過(guò)串口完成對(duì)下位機(jī)的控制。(1)實(shí)現(xiàn)STOP/RUN功能(2)輸出波形電壓、時(shí)間參數(shù)(3)控制截屏(4)控制波形發(fā)生器(5)控制完成FFT(6)波形的存儲(chǔ)和顯示
4、圖形接口: UCGUI
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、被測(cè)信號(hào)的各種參數(shù)屏幕顯示,包括頻率、電壓峰峰值等。
1.jpg (106.47 KB)
下載附件
2021-12-15 14:29 上傳
這是上位機(jī)的程序
2.jpg (72.77 KB)
下載附件
2021-12-15 14:35 上傳
測(cè)試時(shí)候的照片
3.jpg (67.07 KB)
下載附件
2021-12-15 14:35 上傳
測(cè)試正弦波
4.jpg (69.07 KB)
下載附件
2021-12-15 14:45 上傳
PCB
6.jpg (66.78 KB)
下載附件
2021-12-15 14:54 上傳
模擬電路板
7.jpg (17.99 KB)
下載附件
2021-12-15 15:06 上傳
側(cè)面的照片
8.jpg (18.59 KB)
下載附件
2021-12-15 15:07 上傳
部分源碼:(完整源碼見相關(guān)附件)
- #include "stm32f10x.h"
- #include "adc.h"
- #include "oscilloscope.h"
- #include "ucos_ii.h"
- #include "tft_api.h"
- /*-----------------------------------------
- 聲明變量
- ------------------------------------------*/
- extern WaveType WaveInfo;
- extern WaveMode WaveCtrl;
- volatile u16 ADCConvertedValue[SAMPDEPTH];//AD轉(zhuǎn)換緩沖區(qū),占用RAM 0.8KB
- /*-----------------------------------------
- ADC1端口初始化
- ------------------------------------------*/
- void ADC1_GPIO_Init(void)
- {
- GPIO_InitTypeDef IO_Init;
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC,ENABLE);
- //C1模擬輸入
- IO_Init.GPIO_Pin = GPIO_Pin_1;
- IO_Init.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOC,&IO_Init);
- }
- /* #define ADC1_DR_Address ((unsigned int)0x40012400+0x4c) */
- /* unsigned short int ADC1_DMA_Value; */
- /*--------------------------------------------------
- 函數(shù)說(shuō)明:配置ADC1完成AD采集,是本示波器最核心的部分.
- 配置方案:ADC1由TIM3提供的觸發(fā)事件進(jìn)行觸發(fā)AD轉(zhuǎn)換,控
- 制TIM3的速率就可以完成采樣率的改變.同時(shí)采
- 用DMA完成數(shù)據(jù)傳輸,注入通道1完成內(nèi)部溫度傳
- 感器AD采集.
- --------------------------------------------------*/
- void ADC1_Mode_Config(void)
- {
- //配置DMA
- DMA_InitTypeDef DMA_csh;
- ADC_InitTypeDef ADC_csh;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- DMA_DeInit(DMA1_Channel1); //DMA復(fù)位,通道1
- DMA_csh.DMA_PeripheralBaseAddr = ADC1_DR_Address; //ADC1地址
- DMA_csh.DMA_MemoryBaseAddr = (unsigned int)ADCConvertedValue; //內(nèi)存地址
- DMA_csh.DMA_DIR = DMA_DIR_PeripheralSRC;
- DMA_csh.DMA_BufferSize = SAMPDEPTH; //緩沖大小為采樣深度
- DMA_csh.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外設(shè)地址固定
- DMA_csh.DMA_MemoryInc = DMA_MemoryInc_Enable; //內(nèi)存地址自增
- DMA_csh.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
- DMA_csh.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
- DMA_csh.DMA_Mode = DMA_Mode_Circular; //循環(huán)傳輸
- DMA_csh.DMA_Priority = DMA_Priority_High; //DMA優(yōu)先級(jí)高
- DMA_csh.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel1,&DMA_csh); //寫入DMA1配置參數(shù)
- DMA_Cmd(DMA1_Channel1,ENABLE); //使能DMA1通道1
- DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE); //使能DMA CH1中斷
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- //配置TIM3工作在18MHz,為AD提供觸發(fā)
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
- TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
- TIM_TimeBaseStructure.TIM_Period = 1;
- TIM_TimeBaseStructure.TIM_Prescaler = 99; //工作在18M,每格最大值時(shí),不至于溢出
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
- TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //使用TIM3事件更新作為ADC觸發(fā)
-
- //配置ADC
- ADC_csh.ADC_Mode = ADC_Mode_Independent; //獨(dú)立ADC模式
- ADC_csh.ADC_ScanConvMode = DISABLE; //關(guān)閉掃描模式
- ADC_csh.ADC_ContinuousConvMode = DISABLE; //連續(xù)AD轉(zhuǎn)換開啟
- ADC_csh.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO; //由TIM3提供的觸發(fā)事件進(jìn)行觸發(fā)AD轉(zhuǎn)換
- ADC_csh.ADC_DataAlign = ADC_DataAlign_Right; //數(shù)據(jù)右對(duì)齊
- ADC_csh.ADC_NbrOfChannel = 1; //要轉(zhuǎn)換的通道數(shù)目1
- ADC_Init(ADC1,&ADC_csh); //寫入ADC1配置參數(shù)
- ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_1Cycles5);//采樣速率1M
- ADC_DMACmd(ADC1,ENABLE); //使能ADC1 DMA
- ADC_ExternalTrigConvCmd(ADC1,ENABLE); //打開ADC1外部觸發(fā)
-
- ADC_InjectedChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5); //配置ADC1通道16為注入通道1
- ADC_ExternalTrigInjectedConvConfig(ADC1,ADC_ExternalTrigInjecConv_None); //軟件觸發(fā)注入通道的轉(zhuǎn)換
- ADC_TempSensorVrefintCmd(ENABLE); //使能溫度傳感器
- ADC_Cmd(ADC1,ENABLE); //使能ADC1
- ADC_ResetCalibration(ADC1); //復(fù)位校準(zhǔn)寄存器
- while(ADC_GetResetCalibrationStatus(ADC1)); //等待校準(zhǔn)寄存器復(fù)位完成
- ADC_StartCalibration(ADC1); //開始校準(zhǔn)
- while(ADC_GetCalibrationStatus(ADC1)); //等待校準(zhǔn)完成
- TIM_Cmd(TIM3,ENABLE);
- }
- /*-----------------------------------------
- 函數(shù)說(shuō)明:通過(guò)注入通道1轉(zhuǎn)換內(nèi)部溫度傳感器
- AD值,讀取10次有效數(shù)據(jù)取平均返回
- ------------------------------------------*/
- u16 GetTempSensor(void)
- {
- u16 temp=0,i,k=0;
- for(i=0; i<10; )
- {
- ADC_SoftwareStartInjectedConvCmd(ADC1,ENABLE); //軟件觸發(fā)注入通道的轉(zhuǎn)換
- k = (0x6EE - ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1)) / 0x05 + 25;
- if(k>0 && k<100)
- {
- temp += k;
- i++;
- }
- }
- temp /= 10;
- return temp;
- }
- /*-----------------------------------------
- 函數(shù)說(shuō)明:ADC1初始化
- ------------------------------------------*/
- void ADC1_Init(void)
- {
- ADC1_GPIO_Init();
- ADC1_Mode_Config();
- }
- /*-----------------------------------------
- 函數(shù)說(shuō)明:ADC傳輸DMA通道1中斷服務(wù)程序
- DMA把AD值傳輸?shù)骄彌_區(qū)完成后關(guān)閉定
- 時(shí)器3(作為觸發(fā)AD轉(zhuǎn)換的定時(shí)器)同時(shí)
- 置更新完成標(biāo)志位為1,開定時(shí)器3在應(yīng)
- 用中開啟.
- ------------------------------------------*/
- void DMA1_Channel1_IRQHandler()
- {
- OSIntNesting++;
- DMA_ClearFlag(DMA1_FLAG_TC1); //清除DMA傳輸完成中斷
- TIM_Cmd(TIM3,DISABLE); //關(guān)閉TIM3
- WaveCtrl.UpdatTrue = 1; //已經(jīng)完成一次波形FIFO,可以批量讀出數(shù)據(jù)
- OSIntExit();
- }
- /*-----------------------------------------
- 函數(shù)說(shuō)明:擦除AD緩沖區(qū)
- ------------------------------------------*/
- void Earse_AD_FIFO(void)
- {
- uint32_t i;
- for(i=0; i<sampdepth; i++)
- {
- ADCConvertedValue[i] = 0;
- }
- }
- ++++++完整密碼詳見附件+++++++
復(fù)制代碼
上位機(jī)支持用visual studio 2022進(jìn)行編譯
9.jpg (151.16 KB)
下載附件
2021-12-15 15:27 上傳
Keil MDK 5編譯無(wú)措
10.jpg (138.93 KB)
下載附件
2021-12-15 15:37 上傳
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會(huì)員個(gè)人意見,與本論壇立場(chǎng)無(wú)關(guān)。2、本站對(duì)所發(fā)內(nèi)容真實(shí)性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對(duì)提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請(qǐng)勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問(wèn)題與本站無(wú)關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來(lái),僅供學(xué)習(xí)用途使用,請(qǐng)務(wù)必下載后兩小時(shí)內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請(qǐng)及時(shí)聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|
|