keil怎么看数据波形

//www.58yuanyou.com

keil怎么看数据波形

我在之前的微文中有提到基于MDK自带逻辑分析仪输出波形的信息。发现有人对使用MDK自带逻辑分析仪实现波形输出比较感兴趣。下面使用STM32F334DAC模块,输出一任意波形,并通过ARM MDK IDE自带的逻辑分析仪将波形显示出来。我尽量就整个过程描述得详细点。

keil怎么看数据波形

我这里使用TIM6的更新事件触发DMA,DMA将我事先准备好的内存数据传输到DAC通道1数据保持寄存器【DAC1->DHR12R1】。然后,我在TIM6的中断里将DAC数据输出寄存器【DOR】的内容读到一个全局变量【DAC_Out】,将来作为逻辑分析仪里原由网的一个模拟量并输出该信号。

同时,我将DAC的输出端接到ADC1模块的通道1作为其输入,将DAC过来的原由网信号进行AD转换,并通过DMA将ADC结果存放到另一个内存空间。我利用TIM3更新事件周期性触发ADC,并在TIM3更新中断里将最新ADC数据赋给另一个全局变量【ADC_Res】,作为MDK_IDE逻辑分析仪的另外一路模拟量,也将输出波形。

一、下面开始使用STM32CubeMx做图形化配置

1、DAC的配置如下。配置很简单,只是开启了DAC通道1的输出使能,至于输出缓冲可根据具体情况来配置,这里将其使能了。

keil怎么看数据波形

2、配置TIM6。主要是使用它的更新事件触发DMA,将数据从内存传输到DAC的寄存器。

keil怎么看数据波形

3、ADC的配置。这里仅开启一个通道,TIM3更新事件作为ADC启动触发事件。ADC转换完成事件触发DMA传输,将ADC结果取走。

keil怎么看数据波形

4、TIM3的配置。它的配置也很简单,给定适当时基参数,使能更新中断。

keil怎么看数据波形

外设配置主要就上面这些,其它有关DMARCC的配置就不再贴图了。

二、配置完成后,生成初始化文件,然后添加用户代码

1、数据准备。因为要借助DAC输出一任意波形,可以借助其它工具模拟一下输出波形。最便捷的就是使用EXCEL的数学函数功能模拟相关波形。这里使用几个三角函数叠加而成一个新的函数。基于该函数生成一个数据序列用于DAC输出。

keil怎么看数据波形

2、添加用户代码。

要添加的用户代码就是下面几行,意思都很明确了,无须过多解释。其中length是宏定义过的一个常量,代表数据个数。下面代码基于STM32Cube库。

keil怎么看数据波形

3、中断函数处理。

TIM6的更新中断里加入如下代码,实时获取DAC输出数据。

DAC_Out= DAC1->DOR1原由网;

TIM3的更新中断里加入如下代码,实时读取ADC结果。

ADC_Res=(uint16_t)Adc_Valu原由网e[Length-DMA1_Channel1->CNDTR];

三、针对MDK逻辑分析仪的配置

keil怎么看数据波形

这里提醒下,那个Core_clock一定要跟你芯片配置的系统时钟一致。另外Trace Enable一定要勾选上。联机进入调试状态后,继续进行对逻辑分析仪的配置。下图中的红色数字1/2/3表示操作顺序。

keil怎么看数据波形

点击箭头处添加我们之前准备好的全局变量并做适当配置。这里添加的两个变量都是模拟量,所以显示类型选Analog,显示颜色根据个人喜好。注意模拟量有最值的设定问题,太大、太小都不合适,这个不难理解。屏蔽处的配置根据要显示的数据范围来指定,本实验数据不会超过0xfff所以就按图中配置了。

四、查看结果

下面的第一幅截图就是通过MDK自带的逻辑分析仪输出的两路波形。红色曲线是DAC输出的波形图,蓝色曲线是ADC转换后得到的实时结果波形图。

不难看出,两路波形是一致的周期性输出,但ADC的输出与DAC的输出存在相差,因为ADC的结果是对DAC输出进行采样转换后所得的结果,所以时序上存在滞后。第二幅图是调整时间观测宽度后的截图。

keil怎么看数据波形

keil怎么看数据波形

好,关于用MDK自带逻辑分析仪进行任意波形的输出就介绍到这里,顺便也简单介绍了STM32 ADC/DAC的一些配置与应用。

关于MDK自带的这个工具,如果会用了,有时还是会给我们的调试带来些方便。使用起来不难,有兴趣的话不妨试试

================================

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: keil怎么看数据波形

文章地址: www.58yuanyou.com/jiqiao/342097.html

相关推荐