【E2434】STM32F407信号发生器设计

2021-11-24 00:33:04      索炜达电子      551     

项目编号:E2434

文件大小:573K

源码说明:带中文注释

开发环境:C编译器

简要概述

内容:在显示屏上通过按键产生正弦波、三角波、矩形波、锯齿波,并且能通过按键来暂停波形,显示静态波形,并且显示波形电压的峰峰值。


一、波形图显示

生成正弦波、三角波、矩形波、锯齿波数据

将这些数据显示到 TFT 2.4 寸液晶屏上

思路:用数组 1,2,3,4 分别保存正弦波、三角波、矩形波、锯齿波数据,写按键函数分别打印不同的数组内容,然后再将数组内容打印到 TFT 液晶屏上。


二、峰峰值显示

从数组中采集最大和最小值,然后做差求得峰峰值,显示到 TFT 液晶屏上。

优化:使用 DMA 来减轻 CPU 的负担,提高数据传输速度。

STM32 使用 DMA+DAC+TIMER 输出正弦波

那么对于使用 DMA+DAC+TIMER 产生正弦波的原理或过程,我有这样一个简单的理解:先将一个可以生成正弦波的数据表保存在静态内存中,然后在 DAC 以及这块内存中间使用 DMA 建立一个通道,经过以上步骤之后,DAC 模块就可以通过 DMA 通道拿取静态内存中可以生成正弦波的数据,拿取数据,然后经过数模准换,在引脚进行输出就可以得到正弦波了。那么当然,这个速度是非常快的,如果没有一定的延时,那么得到的估计就是一个变化很快的模拟量。所以这个时候就需要使用定时器 TIMER 了。DAC 在初始化的时候,可以设置成使用定时器触发,这就意味着,当定时器溢满的时候,就会触发 DAC 工作。这样一来,就可以通过改变定时器的定时时间来改变正弦波的周期了。电压大小的显示用 DAC 来处理。(PA4 和 PA5 短接,DAC 与 ADC 结合。)

目录│文件列表:

 └ stm32f407-oscilloscope

    ├ CORE

    │  │ core_cm4.h

    │  │ core_cm4_simd.h

    │  │ core_cmFunc.h

    │  │ core_cmInstr.h

    │  └ startup_stm32f40_41xxx.s

    ├ FWLIB

    │  ├ inc

    │  │  │ misc.h

    │  │  │ stm32f4xx_adc.h

    │  │  │ stm32f4xx_can.h

    │  │  │ stm32f4xx_crc.h

    │  │  │ stm32f4xx_cryp.h

    │  │  │ stm32f4xx_dac.h

    │  │  │ stm32f4xx_dbgmcu.h

    │  │  │ stm32f4xx_dcmi.h

    │  │  │ stm32f4xx_dma.h

    │  │  │ stm32f4xx_dma2d.h

    │  │  │ stm32f4xx_exti.h

    │  │  │ stm32f4xx_flash.h

    │  │  │ stm32f4xx_flash_ramfunc.h

    │  │  │ stm32f4xx_fmc.h

    │  │  │ stm32f4xx_fsmc.h

    │  │  │ stm32f4xx_gpio.h

    │  │  │ stm32f4xx_hash.h

    │  │  │ stm32f4xx_i2c.h

    │  │  │ stm32f4xx_iwdg.h

    │  │  │ stm32f4xx_ltdc.h

    │  │  │ stm32f4xx_pwr.h

    │  │  │ stm32f4xx_rcc.h

    │  │  │ stm32f4xx_rng.h

    │  │  │ stm32f4xx_rtc.h

    │  │  │ stm32f4xx_sai.h

    │  │  │ stm32f4xx_sdio.h

    │  │  │ stm32f4xx_spi.h

    │  │  │ stm32f4xx_syscfg.h

    │  │  │ stm32f4xx_tim.h

    │  │  │ stm32f4xx_usart.h

    │  │  └ stm32f4xx_wwdg.h

    │  └ src

    │     │ misc.c

    │     │ stm32f4xx_adc.c

    │     │ stm32f4xx_can.c

    │     │ stm32f4xx_crc.c

    │     │ stm32f4xx_cryp.c

    │     │ stm32f4xx_cryp_aes.c

    │     │ stm32f4xx_cryp_des.c

    │     │ stm32f4xx_cryp_tdes.c

    │     │ stm32f4xx_dac.c

    │     │ stm32f4xx_dbgmcu.c

    │     │ stm32f4xx_dcmi.c

    │     │ stm32f4xx_dma.c

    │     │ stm32f4xx_dma2d.c

    │     │ stm32f4xx_exti.c

    │     │ stm32f4xx_flash.c

    │     │ stm32f4xx_flash_ramfunc.c

    │     │ stm32f4xx_fmc.c

    │     │ stm32f4xx_fsmc.c

    │     │ stm32f4xx_gpio.c

    │     │ stm32f4xx_hash.c

    │     │ stm32f4xx_hash_md5.c

    │     │ stm32f4xx_hash_sha1.c

    │     │ stm32f4xx_i2c.c

    │     │ stm32f4xx_iwdg.c

    │     │ stm32f4xx_ltdc.c

    │     │ stm32f4xx_pwr.c

    │     │ stm32f4xx_rcc.c

    │     │ stm32f4xx_rng.c

    │     │ stm32f4xx_rtc.c

    │     │ stm32f4xx_sai.c

    │     │ stm32f4xx_sdio.c

    │     │ stm32f4xx_spi.c

    │     │ stm32f4xx_syscfg.c

    │     │ stm32f4xx_tim.c

    │     │ stm32f4xx_usart.c

    │     └ stm32f4xx_wwdg.c

    ├ HARDWARE

    │  ├ ADC

    │  │  │ adc.c

    │  │  └ adc.h

    │  ├ BEEP

    │  │  │ beep.c

    │  │  └ beep.h

    │  ├ DAC

    │  │  │ dac.c

    │  │  └ dac.h

    │  ├ KEY

    │  │  │ key.c

    │  │  └ key.h

    │  ├ LCD

    │  │  │ FONT.H

    │  │  │ lcd.c

    │  │  └ lcd.h

    │  ├ LED

    │  │  │ led.c

    │  │  └ led.h

    │  ├ TIMER

    │  │  │ timer.c

    │  │  └ timer.h

    │  └ TOUCH

    │     │ rtouch.c

    │     └ rtouch.h

    ├ OBJ

    │  └ LCD.hex

    ├ SYSTEM

    │  ├ delay

    │  │  │ delay.c

    │  │  └ delay.h

    │  ├ sys

    │  │  │ sys.c

    │  │  └ sys.h

    │  └ usart

    │     │ usart.c

    │     └ usart.h

    └ USER

       │ JLinkSettings.ini

       │ LCD.uvoptx

       │ LCD.uvprojx

       │ main.c

       │ stm32f4xx.h

       │ stm32f4xx_conf.h

       │ stm32f4xx_it.c

       │ stm32f4xx_it.h

       │ system_stm32f4xx.c

       │ system_stm32f4xx.h

       │ waveform.c

       └ waveform.h

TAG信号发生器
  • 7 次
  • 20 分