你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用MDK 自带逻辑分析仪显示任意波形

[复制链接]
fightingboon 发布时间:2019-10-31 13:04
发现有人对使用MDK自带逻辑分析仪实现波形输出比较感兴趣。下面使用STM32F334的DAC模块,输出一任意波形,并通过ARM MDK IDE自带的逻辑分析仪将波形显示出来。我尽量就整个过程描述得详细点。

/ X9 ]6 R8 M, R  I7 `# |
11.png
' O/ H6 I% Y, |. k
我这里使用TIM6的更新事件触发DMA,让DMA将我事先准备好的内存数据传输到DAC通道1数据保持寄存器【DAC1->DHR12R1】。然后,我在TIM6的中断里将DAC数据输出寄存器【DOR】的内容读到一个全局变量【DAC_Out】,将来作为逻辑分析仪里的一个模拟量并输出该信号。

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

5 v( E& E: R) }/ {
一、下面开始使用STM32CubeMx做图形化配置

0 {9 ?! ]) h% Y, s2 T  ^( n/ V
1、DAC的配置如下。配置很简单,只是开启了DAC通道1的输出使能,至于输出缓冲可根据具体情况来配置,这里将其使能了。

5 z8 b6 ^/ ^) d9 U
22.png

$ C; ?5 L0 }% l5 P! H
2、配置TIM6。主要是使用它的更新事件触发DMA,将数据从内存传输到DAC的寄存器。
1 R6 M- l. K8 m
33.jpg
8 t2 N- Y! O. P& g/ K
3、ADC的配置。这里仅开启一个通道,TIM3更新事件作为ADC启动触发事件。ADC转换完成事件触发DMA传输,将ADC结果取走。

% K7 n- r0 b& b9 m2 |. b# h
44.jpg

1 w( e) y# J' h/ X' r) A6 U3 L
4、TIM3的配置。它的配置也很简单,给定适当时基参数,使能更新中断。
3 m) K* c! n' d! U) \" |
55.png
" b+ a9 T6 ~, q9 A) A
外设配置主要就上面这些,其它有关DMA、RCC的配置就不再贴图了。

: s9 ^7 B; x5 ~7 Q" A; H+ J' z
二、配置完成后,生成初始化文件,然后添加用户代码

* \8 _& B- c. l1 k) H- Q
1、数据准备。因为要借助DAC输出一任意波形,可以先借助其它工具模拟一下输出波形。最便捷的就是使用EXCEL的数学函数功能模拟相关波形。这里使用几个三角函数叠加而成一个新的函数。基于该函数生成一个数据序列用于DAC输出。
0 m) f! s8 w" ]
66.png

, p4 E# n9 o' w$ E4 n
2、添加用户代码。
要添加的用户代码就是下面几行,意思都很明确了,无须过多解释。其中length是宏定义过的一个常量,代表数据个数。下面代码基于STM32Cube库。

3 U9 f" `; N' z7 a5 ?" t; r
77.png
2 w- Y& {8 n3 G- X. X
3、中断函数处理。
在TIM6的更新中断里加入如下代码,实时获取DAC输出数据。
DAC_Out=DAC1->DOR1;
在TIM3的更新中断里加入如下代码,实时读取ADC结果。
ADC_Res=(uint16_t)Adc_Value[Length-DMA1_Channel1->CNDTR];

3 B$ O1 n! F7 S- ?
三、针对MDK逻辑分析仪的配置

: ?6 y0 _/ }( n2 l
88.jpg
: y$ Z! h8 ~2 h- {2 L1 X
这里提醒下,那个Core_clock一定要跟你芯片配置的系统时钟一致。另外Trace Enable一定要勾选上。联机进入调试状态后,继续进行对逻辑分析仪的配置。下图中的红色数字1/2/3表示操作顺序。
: Z1 {& \) @: ]% g  m
99.png

! W- P0 b. [- r# c. T4 H# o- D
点击箭头处添加我们之前准备好的全局变量并做适当配置。这里添加的两个变量都是模拟量,所以显示类型选Analog,显示颜色根据个人喜好。注意模拟量有最值的设定问题,太大、太小都不合适,这个不难理解。屏蔽处的配置根据要显示的数据范围来指定,本实验数据不会超过0xfff,所以就按图中配置了。
- ?5 D% k6 X) Y1 K6 O' Y
四、查看结果

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

" q$ n7 t: m! b: l+ }' V5 V
不难看出,两路波形是一致的周期性输出,但ADC的输出与DAC的输出存在相差,因为ADC的结果是对DAC输出进行采样转换后所得的结果,所以时序上存在滞后。第二幅图是调整时间观测宽度后的截图。
. E1 y1 U2 L* m4 Q
10.jpg
0 C! b& b" G( r9 Y8 M% ?6 y; g

! d4 k0 k( Q" \. d6 p( H" l: O
111.jpg

5 U" F2 M, B' X, w
好,关于用MDK自带逻辑分析仪进行任意波形的输出就介绍到这里,顺便也简单介绍了STM32 ADC/DAC的一些配置与应用。
关于MDK自带的这个工具,如果会用了,有时还是会给我们的调试带来些方便。使用起来不难,有兴趣的话不妨试试。
2 ?: L% G# e( W0 t( _! C: l5 e
6 ~4 Z. I3 [+ B/ L

) J: y7 _2 K! u, N2 n) @/ c

7 B& @/ J5 }7 Z. O/ C  I! d
2 j7 q9 _$ d% i# G, q
, w! a$ B, l) H
/ `. r; [( Q- \1 I' Q6 d% C
赞 收藏 8 评论6 发布时间:2019-10-31 13:04

举报

6个回答
goyhuan 回答时间:2019-10-31 15:54:34
七哥 回答时间:2019-10-31 17:40:58
不赖
w014017 回答时间:2019-10-31 19:58:10
wyxy163@126.com 回答时间:2019-10-31 20:10:21
提示: 作者被禁止或删除 内容自动屏蔽
飞之天之飞 回答时间:2019-10-31 20:41:47
不错
KEY1 回答时间:2019-11-1 00:06:52
非常好
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版