stm32f103zet6示波器,pwm+adc控制采样频率,FFT

作者是一位不懂模数电学生,麻烦不用较劲,以下节选为报告内容,具体可以用网盘下载,并且qq咨询,这个是在学习stm32过程中第一个搭积木搭建而成的一个小小项目,主要乐于分享,热爱和高手们讨论。

  1. PWM+ADC+DMA搭配使用:

PWM:通过编程控制定时器内部时基单元输出宽度可调制的脉冲,可以选择脉冲宽度(基于多少个时钟周期),其定时器通道引脚需要查找定义

DMA:DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器(通过配置结构体参数)来协调各个DMA请求的优先权。 在此工作原理中,ADC采样完成结束后,可以形成一个采样完成标志位,产生DMA请求(所以ADCDMA是同步运行的)

ADC:12ADC是一种逐次逼近型模拟数字转换器。A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在数据寄存器DR中,且ADC获取模拟信号转换为数字信号为0~4095;


2、TIM3输入捕获:输入捕获模式下,当通道引脚出现电平变化的时候(类似于外部中断,向CPU发送信号申请,控制相应电路),会让CNT计数值锁存到CCR寄存器中。可用于测量波形的频率,占空比。TIM_PWMIConfig函数可以快捷的把电路配置成PWMI模式的标准结构

3、FFT算法(官方提供的dsp库):通过将ADC采样得来的数据进行左移16位,作为输入数组inbuf有1024个数据,经过fft变换,所出来的数组outbuf为512。是因为当信号通过采样过程从模拟域转换到数字域时,根据奈奎斯特采样定理,采样频率必须至少是信号最高频率的两倍,以避免混叠现象。这个要求确保了采样后的信号能够无歧义地代表原始信号。而且FFT得到的频谱是对称的,并且以采样频率的一半为中心,所以我的采样频率必须是外来信号频率的2倍以上才能保证数据精确。


4、TFT屏幕绘制波形逻辑:通过一次DMA中断,在中断函数里面,通过getpowermag函数(放在同一个for循环下面,以减少运算时间),在512个数组里面进行波形绘制并且反复比较大小,以获得电压最大值和最小值,之后再进行LCD_Shownum处理显示。


 

采用方案:

  1. 使用TIM-PWM+ADC+DMA循环模式可调采样频率进行采样,并且通过处理运算测出电压峰峰值、最大值、最小值。
  2. 利用输入捕获,获得低频率的频率以及测量占空比。
  3. 使用EXIT开启按键中断控制key_1控制降低采样频率,key_0控制升高采样频率,采样频率OSR范围781.25hz~1600Khz,且是2倍增长调控,key_up控制暂停,外部按键控制自动生成好看波形。
  4. 使用FFT算法将时域信号转化为频域信号,再利用求模值获取最大的频率所在1024 个数组的下标为多少. 

在Free模式下,根据获取频率信息得到的采集频率值大约是3倍的外部输入频率

在Aoto模式下,我设置好看波形,调整Pre的值

舍弃方案:

与采用方案区别在于测频率方案不同

将测高低频率分开,使用ETR外部触发定时器时基单元。实际效果频繁进入DMA中断,开启四个定时器(TIM2:PWM,TIM4:ETR计数,TIM5:开启中断定时取用TIM4定时器cnt值,TIM3进行输入捕获测低频。)


未采用原因:1、定时器使用资源过多,被DMA占用时间过长,失能定时器误差过大,学 习能力不足,调配各个外设合理利用的能力不够。

  1. 定时器的计数器CNT取值不能大于65535,若使CNT大于65535,则

开起TIM4定时器中断加1*65535,又需要开启一个中断配置。



 

链接:https://pan.baidu.com/s/1irU51yWirk9tLYbxiBYniA 
提取码:zcx6

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: STM32F103ZET6是一款常用的ARM Cortex-M3微控制器,具有高性能和低功耗的特点。示波器是一种测量电信号波形的工具,可以用于调试和验证电路设计,其中包括STM32芯片。本文介绍如何使用示波器显示STM32F103ZET6的波形。 首先,需要准备以下材料: - STM32F103ZET6开发板 - 示波器 - 外部信号源 接着,连接外部信号源到STM32开发板的ADC输入引脚。编程时需要确保ADC输入引脚设置正确,以便将采样值发送到示波器。 接下来,在STM32上编写代码来读取ADC输入引脚的模拟值。此处有多个方法,包括使用STM32的内置ADC模块或使用外部ADC芯片。选择哪个方式将取决于具体的应用需求和示波器的采样要求。需要注意的是,要注意时序和采样周期等参数。 一旦STM32可以读取ADC采样值,可以使用串行通信接口(如UART或SPI)将数据传输到示波器。然后,示波器可以将这些采样值解码为波形并显示在屏幕上。 需要注意的是,确保示波器STM32之间的通信接口正确连接和配置,以便正确发送和接收数据。 通过以上步骤,就能够实现将STM32F103ZET6的波形显示在示波器上了。在实际应用中,需要根据具体需求进行细节调整和优化。 ### 回答2: STM32F103ZET6是一种基于ARM Cortex-M3架构的微控制器,它具有高性能、低功耗和丰富的外设资源,特别适用于嵌入式系统设计。使用示波器来显示波形可以有效地调试和测试STM32F103ZET6开发板的各种应用场景。 首先,在配置STM32F103ZET6开发板之前,我们需要安装和配置示波器软件。常用的示波器软件有PC端和单片机端两种类型。PC端软件主要包括Oscilloscope、LabVIEW和Matlab等,单片机端软件主要包括ADC采样和UART通信等方式。在选择示波器软件时,需要根据具体应用场景和需求进行选择。 其次,在进行示波器的连接和配置时,需要注意以下几个方面。首先,需要正确连接开发板和示波器的通信线路,包括地线、信号线和电源线等。其次,需要设置好示波器的采样率和触发方式,根据具体应用场景和波形特征进行选择。最后,需要编写相应的程序代码,将STM32F103ZET6的数据传输到示波器上进行显示。 使用示波器来显示波形可以应用于各种实际应用场景中,如教育、研究、工程设计和产品测试等。对于STM32F103ZET6开发板而言,示波器可以用于检测和调试各种外设资源的工作情况,例如液晶屏、蜂鸣器、LED灯和电机等,并且可以通过波形分析和诊断来找到潜在的故障和问题。 总之,STM32F103ZET6利用示波器显示波形具有重要的应用价值和实用性,可以帮助工程师和技术人员更加容易地开发和调试STM32F103ZET6开发板及相关应用。 ### 回答3: STM32F103ZET6是一款性能强大的ARM Cortex-M3内核微处理器,适合在各种电子设备中使用。示波器是一种电子测试仪器,用于显示信号波形的形状和各种特征,可以检测电路中的信号是否符合设计要求。 想要利用示波器STM32F103ZET6上显示波形,我们需要进行以下几个步骤: 1. 准备示波器:首先需要确定所用示波器的通信协议,常用的通信协议有UART、SPI和I2C等。一般示波器都有提供相应的通信协议,我们需要按照示波器的说明文档连接示波器STM32F103ZET6,并且正确设置通信协议和参数。 2. 配置STM32F103ZET6:在STM32F103ZET6上显示波形,我们还需要进行STM32F103ZET6的配置工作。这里我们需要用到STM32F103ZET6开发板自带的开发环境,例如Keil等。操作步骤如下: (1)在开发环境中创建一个新项目,并选择STM32F103ZET6作为芯片,配置芯片的时钟、GPIO等参数; (2)编写程序,使用相应的通信协议与示波器进行通信,获取示波器采集的波形数据; (3)对波形数据进行处理,调整幅值和时序等参数; 3. 显示波形:当获取处理好波形数据之后,我们可以选择将波形数据通过串口等方式输出,或者使用LCD、OLED等显示屏直接显示,这样我们就可以得到所需的波形图了。 需要注意的是,在这个过程中,由于不同示波器的通信方式和协议不同,所以具体的操作步骤和参数也可能会有所不同,需要仔细阅读示波器的说明文档和数据手册,并按照说明进行操作。同时,在STM32F103ZET6的配置过程中,也需要确保程序的正确性和稳定性,避免出现程序运行错误或崩溃等问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值