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

基于Labview上位机界面的NUCLEO-072RB数据采集系统 精华  

[复制链接]
fengye5340 发布时间:2015-1-8 14:39
本帖最后由 fengye5340 于 2015-1-8 14:44 编辑
8 s8 y6 D+ Z3 ]! k  v7 Y; y# r/ t% v+ J; |# z1 L6 W+ k
      LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。+ i* h, V8 {0 {  e
这 一篇文章讲解一下利用Labview软件实现和STM32-NUCLEO-072RB开发平台的通信,并实现一个简易数据采集系统。文章第一部分讲解 labview串口通信VI函数的实现。第二部分讲解一下STM32F0 ADC模块和库函数介绍,第三部分讲解一下MCU端代码软件的实现。
" @; S: ]- y1 ]$ X; ~# ~一、labview串口通信VI函数
" E2 @, [4 ~& w. ]( M2 w要想实现一个完整的MCU和PC端Labview的软件串口通信,必须要打通一个串口的“通道”!也就是:  W3 x/ \* `8 \, }6 ^8 R# L) A
下位机:也就是MCU程序中要实现串口收发的底层驱动
! p! d. P+ G2 k+ h0 a; N中间通信线:提供了一个MCU串口到电脑串口的硬件连接:3条线 , ?! n) w( X0 Y1 [. w9 T
上位机:labview软件开发串口通信程序" c% N$ e8 K/ x7 }
labview 里面实现串口通信有两种方法:一种是采用软件自带的VISA串口通信VI函数实现,另外一种是借助MSComm控件实现。第一种方法简单易用,便于快速掌握,第二种控制支持查询和事件驱动,功能好用,可以支持像 VB/VC++/delhpi这样的开发环境中使用!0 Q% T+ s6 z9 W# `" T' U
Labview软件的控件在labview软件的如下位置:0 l& i: |' k; R. q
1.jpg
8 y+ w. Y7 g1 r  t5 t
7 k5 A3 e$ A' V2 Tlabview串口函数内容:! h0 j1 @4 ^; Z4 f  H3 g7 X+ k. T
2.jpg . @! @2 E- V3 k9 q1 O; t$ J+ b
& e5 Q- M& Q9 ^* i. U
有了这些函数,实现串口VI就不难了,下面是一个串口VI的后面板程序图:5 y2 x& Y- i( \5 X* F
3.jpg + A9 P# n9 x4 _
+ A( K( g$ c- x; [7 ^
通过串口接收到非空字符后,将2个8位数据合成一个16位数据,然后将放大后的整数除以1000倍,送到波形图中显示出来,在循环里面没有增加延时,这样会占用计算机内存较多。
) _8 m# G8 R/ ?) R二、STM32F0的ADC模块及库函数STM32F0ADC特性
/ A! L" k. k% O7 B/ f$ Y3 E( g
1、12位精度下转换速度可高达1MHz) u8 X& q8 Q7 `! f% q
2、可配置的转换精度:6位,8位,10位,12位
5 _- [' U" N- W4 k6 C3 ?. V8 [* @$ X3、转换电压范围:0 ~ 3.6V,VSSA ~ VDDA& _5 Y( m# h- P" D+ [
4、供电范围:2.4V ~ 3.6V
4 m* D4 m% A7 c$ N, _5、19个转换通道,其中16个外部通道和3个内部通道(温度传感器内部电压参考§电池供电监测)
) {1 Y9 _" E6 K6、采样时间可配置 8 F" q7 P& J4 G2 X: |
7、ADC模块自校准
! ?5 w0 y  s  S* l7 N2 t8、扫描方向可配置+ b9 o. h% j2 t8 V( B6 A$ _
9、专用14MHZRC时钟或者内部时钟分频: C9 Y' O% w! K+ \0 N
10、多种转换模式:单通道单次,单通道连续,多通道单次,多通道连续、间隔 + t( C" Z" w5 P$ l# O
11、数据存放对齐方式可配置:左对齐,右对齐& k1 N# W* {' g+ a& _
12、启动转换方式可配置:软件触发,硬件触发
* A" P: L3 W/ D( _- _% r  d& ~13、可设置上下门限的模拟看门狗 ; q2 U. O5 d- H8 |% p8 V7 J" |
14、DMA功能
' q4 a. r8 ~1 `  L) i15、自动延迟转换模式
5 ~1 Y& P  O- I& } 16、自动节电模式
3 ~( s6 S' T' L; ^$ s7 G4 F17、多种中断源:(ADC模块就绪、转换结束、转换序列结束、采样阶段结束、模拟看门狗报警、溢出错误 )
. i" ~, b# |0 Y9 W8 xSTM32F0ADC采集通道引脚) I( |8 o8 e/ z. ~2 g/ C* O; e- n
4.jpg 6 W6 R" k4 r1 E$ A

1 n% c0 k) `* Z* K& ?这里用的是PB1通道
: R" |0 c+ w0 l0 ?
5.jpg 0 f$ E5 v2 o1 J. d: z9 H, ]

( C2 j6 D' F  ?) ESTM32F0ADC部分库函数介绍ADC结构体定义ADC_InitTypeDef1 S! C( O5 D4 b
6.jpg - q* _/ p; V- _: Y5 @: c& C
7.jpg
& O4 U- k. z# Y& W. O 8.jpg
( P) M% i1 J! p" E7 t+ M0 U* r; Y- R- l& c  L3 n( n
例程用到的ADC库函数. [: h5 v0 a* T: c2 T
ADC_Init();
. x* b2 }& c0 L$ ~
ADC_StructInit();
+ C! k& V( c) q6 i
ADC_Cmd();0 v6 e' ~: m1 e
ADC_ChannelConfig();4 ?" r6 i' o5 z: G. k( M
ADC_GetCalibrationFactor();: q- `  \. i; {) P1 W4 G% l
ADC_DMACmd();
. V4 R0 c- g8 Q+ ZADC_StartOfConversion();
, k0 b) K$ [, ~; j, a2 s6 K  k& P
ADC_GetITStatus();
0 p: b; o- G" e+ V
DMA_Init();
$ ^4 I& Q* |# M" x" fDMA_ITConfig();
$ U  L& n6 H5 i- C1 p( [9 }
DMA_Cmd();) k1 u! D4 L$ ~; a2 p) ~1 u
ADC_DMARequestModeConfig()
. H: p/ t( \, M) r: c, _3 _
DMA_GetFlagStatus()/DMA_ClearFlag 有了这些代码,看一下具体的代码实现:
- ~  L% D9 ~5 _+ Y! }* s
三、DMA方式下单通道数据采集代码实现1、Keil-mdk工程模板中加入ADC.C文件, 在includes.h文件中加入ADC.H头文件: }: h9 C0 c- ]2 Z4 j
; Q+ E( \9 M2 ^& ?, l6 `
9.jpg ) B- r( `% l1 x" [5 p. W5 K

" r" o& A  P6 [; O' w" j1 d( l9 }4 i
2、在ADC.H头文件宏定义
+ Q/ N, t& K( Y$ o9 y0 o 10.jpg 0 ?. e, ]; E4 t' A8 X9 q

# _5 Q8 q4 K1 P/ j3、采用DMA方式的ADC_DMA_Init()代码实现9 R! y: a( q1 V# n$ b) k
11.jpg
- o: }7 u8 i+ b) Y& i9 n- p! o$ B 12.jpg
- o- C! k+ ~" ~8 L: \3 \+ S# E! I3 V. n- f2 J& c6 o: Q
4、向labview发送2个字符函数ADC_Value_Send()实现
9 D% C& P' }  B
    13.jpg
  h2 Q3 S% W; v- s1 X* j" C2 d* g# V* ~, e' V
5、DMA中断优先级及服务函数实现
0 s! _: h8 o2 f0 O2 e3 x: M  i  y 14.jpg # ~/ o2 B- V1 B7 P& s
& d) ]  q/ e: a8 ]) r* D
6、main.c函数代码实现9 F5 R6 s# d/ }" D0 L
15.jpg ! q+ p- Q, h& m" G2 V( V

9 z; Q, [) W) F- e0 }& q# v7、实验现象硬件连线图:: X* X/ r! r& k' s4 x4 [3 H
16.jpg
; g% E* h9 ]8 R0 i9 Z
8 D- u: k1 D- g- \, CLabviewvi运行界面6 e8 W1 Z; G' q% M
17.jpg
' H0 l9 B6 u+ N6 N  z# j8 K+ h0 k: H

& c; [0 G; K- V9 P2 ^' h+ E" k* u& g8 o* s5 f
代码地址链接http://www.eeboard.com/bbs/thread-39696-1-1.html
' F. H. L! G& V摩尔吧视频地址链接
https://www.moore8.com/courses/306
" w4 Q4 i* q  P' H$ T
+ V5 k$ c: w5 F
' I& u  a$ H8 Y, c& i' V$ U, }4 J) I. Q6 K3 I$ U
: @, i8 i' J6 F4 c5 h: p" S; g
; j) y; J2 r8 X3 ^

/ s) Y) [! Z+ Y/ d+ l
* [# U3 O1 C( _. X7 D
8 U$ ]4 U5 E/ x  j
8 a2 A- j& Q, h# }6 }
收藏 1 评论29 发布时间:2015-1-8 14:39

举报

29个回答
fengye5340 回答时间:2015-2-28 20:10:15
yinyue01 发表于 2015-2-17 13:49
7 g- K. F: {: B% Y2 ^LABVIEW程序可以再优化一下,做成状态机,也可以加个消费者循环来存储和显示 ...

4 Z6 W7 W8 B( J& D! o做成产品的话就要那样,需要花费时间精雕细刻,确保程序稳定性
fengye5340 回答时间:2015-1-9 13:07:12
pythonworld 发表于 2015-1-9 13:05
; L( o# ?( W8 S. Q' M1 s" C- T! \上位机除了用labview,还能用什么软件?

2 j" _1 ]- P$ j- `; _VB VC++  delhpi  QT  C#.NET matlab等,你看喜欢哪个可以选择一个
沐紫 回答时间:2015-1-8 14:45:25
谢谢枫叶老师
boyubeiyu 回答时间:2015-1-8 14:54:02
向元老学习下Labview
mmo 回答时间:2015-1-8 15:48:25
好贴,顶一下
奔跑小蜗牛 回答时间:2015-1-8 15:52:55
这个不就是你的那套视频里的第八章吗?怎么单独拿出来了
fengye5340 回答时间:2015-1-8 21:28:54
奔跑小蜗牛 发表于 2015-1-8 15:52
. J$ f" H4 m& d( [$ E3 \2 [这个不就是你的那套视频里的第八章吗?怎么单独拿出来了
4 z5 F- n' V4 o$ }: r: H$ c+ P
分享给社区的更多人吧
wamcncn 回答时间:2015-1-8 21:45:45
学习了,元老级别的
fengye5340 回答时间:2015-1-9 09:10:47
wambob 发表于 2015-1-8 21:45
& g$ m1 E. Z' g3 i! H学习了,元老级别的
, ^4 g0 i/ W$ H! R( _8 t
感谢支持
pythonworld 回答时间:2015-1-9 13:05:23
上位机除了用labview,还能用什么软件?
大秦正声 回答时间:2015-1-9 13:22:09
很好!学习
天好蓝 回答时间:2015-2-10 21:48:10
stm32.jpg
_ilikerome_ 回答时间:2015-2-11 07:34:37
cool,labview有个比较恶心的地方就是要买板卡。
北斗光寒 回答时间:2015-2-11 09:22:04
学习labview  
fengye5340 回答时间:2015-2-11 21:18:54
_ilikerome_ 发表于 2015-2-11 07:34
; A2 W, s$ w9 p5 p; j) W4 m" q' x) Icool,labview有个比较恶心的地方就是要买板卡。

3 p8 p2 ^' V3 q1 g8 R可以不用买的,自己做个就可以,现在好多第三方支持,比如常见的研华数据采集卡等
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版