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

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

[复制链接]
fengye5340 发布时间:2015-1-8 14:39
本帖最后由 fengye5340 于 2015-1-8 14:44 编辑
5 m6 l6 p2 Z  {1 e
0 p5 l7 c7 z5 Q" \      LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
7 z6 _) W* W( m5 K/ e8 }& F; ]这 一篇文章讲解一下利用Labview软件实现和STM32-NUCLEO-072RB开发平台的通信,并实现一个简易数据采集系统。文章第一部分讲解 labview串口通信VI函数的实现。第二部分讲解一下STM32F0 ADC模块和库函数介绍,第三部分讲解一下MCU端代码软件的实现。8 Y2 u8 b) ]1 S. _  {1 U8 c
一、labview串口通信VI函数2 f4 c: E; U" ?& N3 L* n
要想实现一个完整的MCU和PC端Labview的软件串口通信,必须要打通一个串口的“通道”!也就是:7 s+ ^7 v9 `$ L) \
下位机:也就是MCU程序中要实现串口收发的底层驱动
8 F7 ^1 ]5 P5 ~, R中间通信线:提供了一个MCU串口到电脑串口的硬件连接:3条线 ( g$ u- f" r% Z, P7 t9 j: p
上位机:labview软件开发串口通信程序: y! l3 `# b* E) M. Y
labview 里面实现串口通信有两种方法:一种是采用软件自带的VISA串口通信VI函数实现,另外一种是借助MSComm控件实现。第一种方法简单易用,便于快速掌握,第二种控制支持查询和事件驱动,功能好用,可以支持像 VB/VC++/delhpi这样的开发环境中使用!& Q( {) E0 ]. b/ ~% t# s: z7 G+ k- N
Labview软件的控件在labview软件的如下位置:2 o; O2 q0 b$ G# X! c) B6 m
1.jpg , F3 x* ]0 T6 d6 n  d
9 P% h% B/ T& E0 Q5 h
labview串口函数内容:1 E5 y% _1 D- T  z
2.jpg
8 N3 F+ a* r  x* G0 S
9 U% h  E) g1 ?5 \7 \有了这些函数,实现串口VI就不难了,下面是一个串口VI的后面板程序图:2 D+ }8 c4 m" o6 ?. O5 `
3.jpg
3 k. F+ M$ S4 e8 X+ p0 u5 E, S" Z4 u% p$ k$ c2 s. \0 Z/ f
通过串口接收到非空字符后,将2个8位数据合成一个16位数据,然后将放大后的整数除以1000倍,送到波形图中显示出来,在循环里面没有增加延时,这样会占用计算机内存较多。  v1 M: Y- F2 X+ _: |
二、STM32F0的ADC模块及库函数STM32F0ADC特性$ }5 D+ Y9 y8 Z( }
1、12位精度下转换速度可高达1MHz  L/ Z6 f; X/ D
2、可配置的转换精度:6位,8位,10位,12位
3 }  `4 x; K  Y+ K# s  J7 w+ N& D3、转换电压范围:0 ~ 3.6V,VSSA ~ VDDA
  o& ^$ J5 U9 [& P" w) y4、供电范围:2.4V ~ 3.6V7 m) b5 e( `" n: P: i: F1 ~
5、19个转换通道,其中16个外部通道和3个内部通道(温度传感器内部电压参考§电池供电监测)' {" c  r0 X; F# M
6、采样时间可配置
0 a) ?; K+ b2 f9 `, P' P# p7、ADC模块自校准
% Y( Z6 U* e! X5 f8、扫描方向可配置
) f4 [; |6 H  ]$ t/ {  P 9、专用14MHZRC时钟或者内部时钟分频
7 }, p" Q2 q" H8 E( l3 S, p 10、多种转换模式:单通道单次,单通道连续,多通道单次,多通道连续、间隔 + e) l- Q+ W2 G3 ^3 G* W! W
11、数据存放对齐方式可配置:左对齐,右对齐7 M/ f1 Y! p' {- e' R
12、启动转换方式可配置:软件触发,硬件触发 ) |8 C: P( l. i$ R( P2 P* J, E
13、可设置上下门限的模拟看门狗
7 E% J$ s0 R" l: V. [9 ~8 j( y* `. g14、DMA功能
4 E# R" C# |; k. v' c1 x15、自动延迟转换模式" k7 D" Z$ L9 c) ~' ?
16、自动节电模式 4 f$ k, T- }; {2 l9 C) P+ B# _
17、多种中断源:(ADC模块就绪、转换结束、转换序列结束、采样阶段结束、模拟看门狗报警、溢出错误 )' g6 i7 I" Q. C) K+ m
STM32F0ADC采集通道引脚
# P% |) M- T0 _# c
4.jpg
, O) X% c1 D4 a8 ^
* Y) v2 o! R4 K5 T这里用的是PB1通道
5 @, j) V: e) V$ V" X
5.jpg , A" f& D/ R: a/ P6 @
  c7 Z4 C. o, Q% e$ |! K
STM32F0ADC部分库函数介绍ADC结构体定义ADC_InitTypeDef
2 O, r5 A( k; \( G3 K! y/ I2 R
6.jpg
; H  n, V( [1 K0 f 7.jpg " i3 b5 ]: T- o2 @, ?8 l
8.jpg ; k- F$ @4 d' q" x0 ]  s
% m$ W- N' j/ m
例程用到的ADC库函数
; K( v  u" F: E
ADC_Init();
+ I6 F6 M& v* K1 ]# H: i4 P
ADC_StructInit();+ C+ [" }* p/ y' d
ADC_Cmd();, k: n2 D% a" M8 w
ADC_ChannelConfig();' J& K2 @6 M0 d. G1 N( `
ADC_GetCalibrationFactor();
1 u0 _& j  _2 b
ADC_DMACmd();
) ^0 L2 s9 Q8 j5 J3 QADC_StartOfConversion();
7 i, i5 A) Y- ~1 e3 k
ADC_GetITStatus();$ n2 C  u/ p& k% K. ?% I
DMA_Init();0 t' K0 U$ J  B- c. j
DMA_ITConfig();
) t$ M" ?3 |$ d4 L( @  D
DMA_Cmd();
; H8 ]* J# o3 l+ d3 I/ i, o- [1 c6 S
ADC_DMARequestModeConfig()0 z2 U- Q+ ~2 [& d% Z( o! Q
DMA_GetFlagStatus()/DMA_ClearFlag 有了这些代码,看一下具体的代码实现:
8 u8 P: U$ Z; W$ Q0 D- k
三、DMA方式下单通道数据采集代码实现1、Keil-mdk工程模板中加入ADC.C文件, 在includes.h文件中加入ADC.H头文件" W1 l! y% r$ {+ @( ]7 Q

. e( S* H' q: d7 H3 N. p* i
9.jpg . Q, r6 c! K. \3 n) {) c
8 D: G0 n6 A, p, J
7 {" c+ W$ R3 x; O% T+ S" _
2、在ADC.H头文件宏定义
7 a& }" o. L4 }4 x1 l 10.jpg ; |' K) f6 F8 F* U' g, h

% y4 W6 U- \: ?( {6 `+ u3 i3、采用DMA方式的ADC_DMA_Init()代码实现- Z, b' H+ D4 l; O. C" q; R. M
11.jpg
+ L0 }) T( S; Q$ F/ E4 H6 I 12.jpg
5 x+ V1 w2 f' @9 I: b7 O
1 ~, P7 w6 r( {5 ~% ]" c7 m4、向labview发送2个字符函数ADC_Value_Send()实现
0 D& b/ d& Z8 ?6 I1 t( C% s" x
    13.jpg
$ r' T9 }% o0 d* [( x( b
, i( |$ G7 ?! j; l* r5、DMA中断优先级及服务函数实现
5 _& c" E% V- W! o  `9 g+ [& r 14.jpg
4 K1 W+ j$ H( q; j9 s  l. m$ D
, m5 M% }+ @6 Z1 x6、main.c函数代码实现9 w8 O8 l% _$ Z' `: F/ [
15.jpg
& h# Y# k9 V6 v/ r7 ?# c. t  G" f+ n- B) O6 _, }' w
7、实验现象硬件连线图:7 X" u8 ?' c* }/ G- W2 N4 E
16.jpg ( |8 i/ k. `% Z0 u

" c! P6 l) m+ `0 o' E# A0 y- ?) uLabviewvi运行界面! h& M0 p# r. ~$ _+ A( X
17.jpg
! i) ^" G0 K& {1 l2 s( A8 h
6 W. D6 A6 ~- o" u' w
2 r0 b, o. u) X$ W  r
4 P: O: b, F, w( ?" h- P1 ^' H代码地址链接http://www.eeboard.com/bbs/thread-39696-1-1.html
2 n6 C: u4 {" I# E) X摩尔吧视频地址链接
https://www.moore8.com/courses/306
( }( e  P7 k: g7 s
' f" ?1 U, u$ Z. X
+ A$ R9 I0 ~6 k
4 T! j0 U& L" V# j: k$ h3 W$ _! a  {0 `7 j$ s* d8 J. G3 L

" G% a. g5 E' d. [3 V. `/ h9 X4 k( a
8 J3 j/ b3 r/ w: i* D. r5 Q% m5 H. C) V, J( o7 S# W6 l
7 G( l6 c- G1 M+ o, U

0 U: }0 ?6 L) e7 L' Z0 [* F- B1 H* X
赞 收藏 1 评论29 发布时间:2015-1-8 14:39

举报

29个回答
fengye5340 回答时间:2015-2-28 20:10:15
yinyue01 发表于 2015-2-17 13:49
0 r9 |5 X) [4 _; U9 ^/ @LABVIEW程序可以再优化一下,做成状态机,也可以加个消费者循环来存储和显示 ...
; o2 w6 C& o0 J2 S  H3 E% _) I1 M
做成产品的话就要那样,需要花费时间精雕细刻,确保程序稳定性
fengye5340 回答时间:2015-1-9 13:07:12
pythonworld 发表于 2015-1-9 13:055 \7 S' E' _4 m' S: D4 x
上位机除了用labview,还能用什么软件?
7 ]$ `2 ?; N4 _
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, u( ?" @0 g3 X" w, B
这个不就是你的那套视频里的第八章吗?怎么单独拿出来了
3 Z' i* U# K9 ]$ |7 X' J
分享给社区的更多人吧
wamcncn 回答时间:2015-1-8 21:45:45
学习了,元老级别的
fengye5340 回答时间:2015-1-9 09:10:47
wambob 发表于 2015-1-8 21:45
4 u% Z1 a/ X4 S, P" A3 z学习了,元老级别的
9 V; p1 L# ~  S5 d
感谢支持
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:345 J' P4 r6 L, a, P; q; R
cool,labview有个比较恶心的地方就是要买板卡。
) _- b* A) P7 Z$ X; h
可以不用买的,自己做个就可以,现在好多第三方支持,比如常见的研华数据采集卡等
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版