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

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

[复制链接]
fengye5340 发布时间:2015-1-8 14:39
本帖最后由 fengye5340 于 2015-1-8 14:44 编辑 . k  K6 F5 g0 B$ ^

2 s/ {# f0 G0 c* ^8 @2 u0 a      LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
0 J2 Q7 C/ k7 h这 一篇文章讲解一下利用Labview软件实现和STM32-NUCLEO-072RB开发平台的通信,并实现一个简易数据采集系统。文章第一部分讲解 labview串口通信VI函数的实现。第二部分讲解一下STM32F0 ADC模块和库函数介绍,第三部分讲解一下MCU端代码软件的实现。
  N$ I) ?  M. H6 ~( f, k一、labview串口通信VI函数
% ^6 ?, x, y0 g) \要想实现一个完整的MCU和PC端Labview的软件串口通信,必须要打通一个串口的“通道”!也就是:# @6 |. q" v7 h; Q& ~" `
下位机:也就是MCU程序中要实现串口收发的底层驱动 & d4 T, U/ R9 A" u6 J
中间通信线:提供了一个MCU串口到电脑串口的硬件连接:3条线 * j- g6 }& p/ O
上位机:labview软件开发串口通信程序+ r6 G5 ~7 a, D
labview 里面实现串口通信有两种方法:一种是采用软件自带的VISA串口通信VI函数实现,另外一种是借助MSComm控件实现。第一种方法简单易用,便于快速掌握,第二种控制支持查询和事件驱动,功能好用,可以支持像 VB/VC++/delhpi这样的开发环境中使用!
9 O7 L) }+ H" m, W! \Labview软件的控件在labview软件的如下位置:" z. u9 e$ H8 W& G
1.jpg ( z/ l- u* g. \! v. A

2 ~2 }2 S1 E' F0 ?8 Flabview串口函数内容:
& T8 e; k1 X+ O" B 2.jpg - U# q( r% p: W* O' g, n) M0 L+ r
3 j6 c+ x1 q& H7 V
有了这些函数,实现串口VI就不难了,下面是一个串口VI的后面板程序图:# _2 M, a) c* g) `; A* Y2 I* p
3.jpg
$ U' p) G  x& q" V0 _/ s6 L# r9 ^1 l' n0 X, e0 p
通过串口接收到非空字符后,将2个8位数据合成一个16位数据,然后将放大后的整数除以1000倍,送到波形图中显示出来,在循环里面没有增加延时,这样会占用计算机内存较多。
$ @6 h% W4 i5 M' c1 @8 F9 x二、STM32F0的ADC模块及库函数STM32F0ADC特性4 W( A- A  o3 O% f1 u5 X
1、12位精度下转换速度可高达1MHz
2 f" s: \8 g! C2 Y6 _, q2、可配置的转换精度:6位,8位,10位,12位 ; P: {1 E- S/ _4 \  ?; w  T- G
3、转换电压范围:0 ~ 3.6V,VSSA ~ VDDA
$ W6 `! n; c0 w' R4、供电范围:2.4V ~ 3.6V: B& q5 M1 N, L0 w
5、19个转换通道,其中16个外部通道和3个内部通道(温度传感器内部电压参考§电池供电监测)4 X$ j) u9 [+ O6 r- J9 ~6 f% g& A# a
6、采样时间可配置
- }: z2 H7 ^0 b, t% `% P2 M" J7、ADC模块自校准 / e6 I5 q, z6 J; J3 ?$ _* {% N0 \) M
8、扫描方向可配置
; U0 r' F; t- m( G 9、专用14MHZRC时钟或者内部时钟分频6 q: n7 ^. q7 h
10、多种转换模式:单通道单次,单通道连续,多通道单次,多通道连续、间隔
5 G' z6 G5 ~4 J1 F) a2 f: y11、数据存放对齐方式可配置:左对齐,右对齐+ e/ g- D  W) ?9 s
12、启动转换方式可配置:软件触发,硬件触发
8 c- R2 G( o! Z8 ?; M* G13、可设置上下门限的模拟看门狗
( x* g0 d7 G7 @) t6 [8 o' I# j14、DMA功能
$ T. F" Y8 M5 {- A, w0 F' X5 \$ F15、自动延迟转换模式; L4 H9 ^) B0 P: T) v0 c9 B
16、自动节电模式 " C$ ~3 \7 ^6 [7 h* ?! I$ B+ ]" `
17、多种中断源:(ADC模块就绪、转换结束、转换序列结束、采样阶段结束、模拟看门狗报警、溢出错误 )
( E  U3 R8 B% `; Y: X, ^" YSTM32F0ADC采集通道引脚
( a: M2 f: M, ~3 F* i; Y8 l
4.jpg
. B3 n  a( D9 Y7 V) K6 i+ O2 j( Q: H* {0 v; b2 ]2 t% Q+ Z' t/ U& G
这里用的是PB1通道0 g- U6 [1 Y( n+ A" W7 \; j# P
5.jpg
2 n  |1 \4 E4 I% _: {+ Y8 j- n
8 n) _$ d) q) D1 tSTM32F0ADC部分库函数介绍ADC结构体定义ADC_InitTypeDef
# G  S# h1 `! F6 g0 y3 t
6.jpg . l  z! r  N$ d( a9 N2 H8 }& j
7.jpg ' \) S) r7 O8 X* F& r0 S& j5 O
8.jpg
: c& L2 T0 l" C0 X$ g  y: Q
) E1 F5 y; M( @6 G3 c* E" Q) J例程用到的ADC库函数, L% D2 p0 ]7 |# r
ADC_Init();; W% ?: U0 [# e
ADC_StructInit();2 o4 t% t% V4 X. V( @
ADC_Cmd();$ H. E! O  y4 m2 G. n. t- b& W
ADC_ChannelConfig();+ E# h4 J. r5 ?. M1 g5 A
ADC_GetCalibrationFactor();
+ t6 _4 y6 S  h3 J! j9 ]: c
ADC_DMACmd();
/ A5 r- m- Z) |1 S  x& MADC_StartOfConversion();
$ H6 Z8 G/ O/ y3 W
ADC_GetITStatus();
- G) _4 G2 x5 i3 b2 R
DMA_Init();
0 K2 G) M- m5 j9 A. D6 E: DDMA_ITConfig();
  ^$ n% A' W3 {4 q" R# U; E
DMA_Cmd();
) I6 ?( f/ \' d3 K. |8 W2 \1 C
ADC_DMARequestModeConfig()% N, |/ x7 o; a, H
DMA_GetFlagStatus()/DMA_ClearFlag 有了这些代码,看一下具体的代码实现:
2 }; B" J1 {) G2 W9 q- L, E
三、DMA方式下单通道数据采集代码实现1、Keil-mdk工程模板中加入ADC.C文件, 在includes.h文件中加入ADC.H头文件2 O7 w2 i1 ]* X9 E/ s0 C
  n8 i3 w- k: t
9.jpg
: n* w) }& Q+ w, B. _7 h  I2 t4 {# y2 _6 ]# e. p' ^( Z
8 V9 K2 q' L+ x3 M
2、在ADC.H头文件宏定义
6 k4 w: E, N+ }; I$ d 10.jpg
1 r9 X$ u; j1 w
5 F8 C, L# P+ d2 {3、采用DMA方式的ADC_DMA_Init()代码实现
! I& f0 [! x+ B; S
11.jpg 7 Z# M' U# ~; G  T, P6 d
12.jpg
, t0 g' v: u. C6 ^0 H& c3 G. N5 g: V0 @  n* I" i2 s
4、向labview发送2个字符函数ADC_Value_Send()实现
6 N1 J; o' `5 t  E% X8 x4 A( Q9 m
    13.jpg * P) `% D/ ]/ w3 z' v$ a- B3 a
6 o1 q1 S2 G0 u
5、DMA中断优先级及服务函数实现
0 [+ q; W: a, ]2 d4 _, b 14.jpg
$ W1 [; B7 i0 f8 U) y4 _0 P) p
" k& t  ^% J, S9 f8 \4 L  Q: ~+ b6、main.c函数代码实现0 Y3 B3 y: T2 v9 ?  |
15.jpg
* y+ k+ L5 x2 L' R' |8 I1 E
) O' d8 Q% m& H+ z7 J- F: X2 n7、实验现象硬件连线图:
, u4 d; Q( I$ D! I
16.jpg " h8 N$ w2 y' b+ [1 G

; _- S) J* ~3 j7 h* L. eLabviewvi运行界面
; S4 R* ^' @5 }2 Q
17.jpg
, F* Z! b( M" j+ L3 v7 X  W) N( z, r- ~5 d4 q
  g9 k% ]5 W4 O7 {4 n6 h

3 G( O: r; P3 `6 e7 I) W代码地址链接http://www.eeboard.com/bbs/thread-39696-1-1.html! M, Z+ X+ ]1 W5 K" s4 G8 N" P- |
摩尔吧视频地址链接
https://www.moore8.com/courses/306, |  N1 O5 J, u3 E9 D3 n5 s

5 p. {$ W: b( m, P
6 b8 c" a2 i6 g4 Q4 s/ I( p" y3 |' @% C  R& m6 D5 h: f
4 N  A0 s6 m7 g8 i% b. t/ N, b

7 B2 n5 a: `" F( x+ P: B, U1 K( v( |+ d
% S* U4 N4 E8 ~+ q7 r5 C8 Z% ]
( s% {$ x( d. K0 \) A3 A! P1 D$ B
4 W* L  L% @7 s3 z' a  A0 h. W; S
收藏 1 评论29 发布时间:2015-1-8 14:39

举报

29个回答
fengye5340 回答时间:2015-2-28 20:10:15
yinyue01 发表于 2015-2-17 13:49
% i$ D. c6 U# w; _/ I% oLABVIEW程序可以再优化一下,做成状态机,也可以加个消费者循环来存储和显示 ...

. q) T2 j" ?/ \6 b做成产品的话就要那样,需要花费时间精雕细刻,确保程序稳定性
fengye5340 回答时间:2015-1-9 13:07:12
pythonworld 发表于 2015-1-9 13:05
. R/ J" f% ^# {上位机除了用labview,还能用什么软件?

( B$ b- p! k% ?' p6 ]% N% JVB 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:520 O1 [# e' H) V% x
这个不就是你的那套视频里的第八章吗?怎么单独拿出来了
  G7 |% L: Q2 b1 {( s* u& L% B
分享给社区的更多人吧
wamcncn 回答时间:2015-1-8 21:45:45
学习了,元老级别的
fengye5340 回答时间:2015-1-9 09:10:47
wambob 发表于 2015-1-8 21:45' _( z) C# g4 u2 q' T/ ~) w9 f
学习了,元老级别的
' F! G; q) t4 C+ ~
感谢支持
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:346 {; x% c/ u! A+ h
cool,labview有个比较恶心的地方就是要买板卡。
) a( W0 m: q0 j7 K2 V1 b7 _
可以不用买的,自己做个就可以,现在好多第三方支持,比如常见的研华数据采集卡等
12下一页

所属标签

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