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

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

[复制链接]
fengye5340 发布时间:2015-1-8 14:39
本帖最后由 fengye5340 于 2015-1-8 14:44 编辑
! Q* n0 D* Y0 A& ^! k$ y9 Q5 d' ^6 h2 A/ X* {! Z3 Y
      LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 LabVIEW软件是NI设计平台的核心,也是开发测量或控制系统的理想选择。LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。' ?& W( c& ]6 @) q0 z, {
这 一篇文章讲解一下利用Labview软件实现和STM32-NUCLEO-072RB开发平台的通信,并实现一个简易数据采集系统。文章第一部分讲解 labview串口通信VI函数的实现。第二部分讲解一下STM32F0 ADC模块和库函数介绍,第三部分讲解一下MCU端代码软件的实现。
  k% Y- m1 N- Z' C, l( v" v' |7 ]一、labview串口通信VI函数' o. q5 `( S/ T" c1 {
要想实现一个完整的MCU和PC端Labview的软件串口通信,必须要打通一个串口的“通道”!也就是:
; V6 O1 z* E. F9 ]  [8 h6 A) D下位机:也就是MCU程序中要实现串口收发的底层驱动 4 O7 T! p. a" z7 e4 U& P7 O6 o# {3 h4 V1 `
中间通信线:提供了一个MCU串口到电脑串口的硬件连接:3条线
1 J5 U+ B1 J' x7 ~/ L* j. K$ y上位机:labview软件开发串口通信程序
* ]; l1 z: C1 a+ Blabview 里面实现串口通信有两种方法:一种是采用软件自带的VISA串口通信VI函数实现,另外一种是借助MSComm控件实现。第一种方法简单易用,便于快速掌握,第二种控制支持查询和事件驱动,功能好用,可以支持像 VB/VC++/delhpi这样的开发环境中使用!1 W0 L( {# B3 r9 R% `, p: G
Labview软件的控件在labview软件的如下位置:
7 r# w) z% i+ B' p 1.jpg
4 B% ?% j- y. J; y% a
8 F# ~% D5 a8 a5 _" Dlabview串口函数内容:$ X5 Y  L- t# P4 _
2.jpg
/ T5 C6 h8 [. l
- V3 S5 R6 E0 A; [4 B0 z有了这些函数,实现串口VI就不难了,下面是一个串口VI的后面板程序图:
  K7 V% _. _9 L, Y: ` 3.jpg
8 S: e5 o( m: N& |* }- n8 p& i* C) A
通过串口接收到非空字符后,将2个8位数据合成一个16位数据,然后将放大后的整数除以1000倍,送到波形图中显示出来,在循环里面没有增加延时,这样会占用计算机内存较多。
3 L  `9 h4 s5 M' ^/ d二、STM32F0的ADC模块及库函数STM32F0ADC特性8 J0 K  ]: m9 D" B7 n
1、12位精度下转换速度可高达1MHz
$ T2 [  ~' }3 W1 D  ]; d2、可配置的转换精度:6位,8位,10位,12位
3 y9 N, o2 a) U) J5 F% j3、转换电压范围:0 ~ 3.6V,VSSA ~ VDDA
/ n; m5 p+ f. J' M4、供电范围:2.4V ~ 3.6V
2 v0 Z* b  N( C4 g9 ~8 A5、19个转换通道,其中16个外部通道和3个内部通道(温度传感器内部电压参考§电池供电监测)
9 m+ L0 s* l3 S6、采样时间可配置 . T2 {- P2 k+ K0 d$ [+ K
7、ADC模块自校准
# u) k9 @6 P( v& ^8 T8、扫描方向可配置
+ Z* Z5 o5 G$ m0 m+ x9 d7 t/ t/ f 9、专用14MHZRC时钟或者内部时钟分频
/ e9 J3 Z% f7 j 10、多种转换模式:单通道单次,单通道连续,多通道单次,多通道连续、间隔 - [1 y2 E4 `! J6 k
11、数据存放对齐方式可配置:左对齐,右对齐
. @3 y/ G1 }" n6 x' } 12、启动转换方式可配置:软件触发,硬件触发
& R" A* Y4 h7 d2 e( V. Z8 l+ Q13、可设置上下门限的模拟看门狗
+ |! P9 E  v4 |14、DMA功能
! K( y# ?9 r( m) Z+ B' }15、自动延迟转换模式; H$ ]5 w3 n+ m/ g! K
16、自动节电模式 & n1 }9 z3 g  Y/ O0 b! U  q9 l' N
17、多种中断源:(ADC模块就绪、转换结束、转换序列结束、采样阶段结束、模拟看门狗报警、溢出错误 )3 `1 Z6 N6 }$ |# q! ~$ ?; S1 `
STM32F0ADC采集通道引脚# B& V/ `& K# R6 S* I
4.jpg
; P7 N$ Y' w. X% T, ]/ r" u3 T* E3 o$ l" |' p7 A8 B
这里用的是PB1通道* u5 Z8 c5 q8 S+ {2 o0 f
5.jpg
8 @7 [9 x% t# ?# K) ]/ I2 i
4 K& M% u5 k  k0 @. I5 ISTM32F0ADC部分库函数介绍ADC结构体定义ADC_InitTypeDef
& C* T5 w& E  w) R: c7 j4 }
6.jpg   k7 {1 {  G' c' K5 ]" D4 I
7.jpg ; ~+ s2 P  u5 _; q
8.jpg / u, j+ o) b! k; a* k- g
" ^4 b/ W# R" X/ S/ J
例程用到的ADC库函数$ E) c0 i2 I8 W0 L* P
ADC_Init();4 k' F1 k8 G  @# Z, ]  I& K
ADC_StructInit();
; Z# k! H2 Q9 C! B8 J
ADC_Cmd();
+ L" D  u- h- D( sADC_ChannelConfig();$ G! d  g/ [3 F7 `+ B* H  R
ADC_GetCalibrationFactor();9 e/ f* N! y- b  h
ADC_DMACmd();
7 C7 d+ G2 \/ ?$ e9 G+ VADC_StartOfConversion();  J% E7 ~7 C6 t8 t; Q6 P
ADC_GetITStatus();; m& Y4 j! i" K* g6 G
DMA_Init();2 A& ?3 P. m/ A/ G
DMA_ITConfig();) y% T2 ]) R/ U9 m4 f0 U7 \7 h: Z
DMA_Cmd();
# u- @6 \9 g, G/ Z
ADC_DMARequestModeConfig()
& o7 H$ m  C  u$ b  \! S
DMA_GetFlagStatus()/DMA_ClearFlag 有了这些代码,看一下具体的代码实现:! l3 S% o2 l# u
三、DMA方式下单通道数据采集代码实现1、Keil-mdk工程模板中加入ADC.C文件, 在includes.h文件中加入ADC.H头文件( {6 u9 N+ E! K' K/ S: y2 D; m

+ w& V$ X* {  v: g; U8 ^8 P. o
9.jpg 3 V7 k1 g& F3 y, @1 x# V  a
, R9 u7 d! M$ V; y4 @$ M  i) ~; _* j
7 E) L# [+ V5 ?" _7 N
2、在ADC.H头文件宏定义
" n/ d/ z0 K9 d& p6 | 10.jpg 8 i- h/ ], I8 `
9 e2 W) t$ @8 D0 N" A9 J
3、采用DMA方式的ADC_DMA_Init()代码实现
0 r: L+ r( a+ x$ F
11.jpg
' u% X  f0 k3 x5 N 12.jpg
/ ?6 \7 r: t4 z- F/ f
  Z2 ~7 B: L1 E/ S4、向labview发送2个字符函数ADC_Value_Send()实现
& D& J( J, p# g' j8 M
    13.jpg 6 u; I9 y7 h! E! C0 F$ d
; j5 ^$ p+ l, ^* Y! y* L6 J
5、DMA中断优先级及服务函数实现
: f: [& l" `7 P$ A! g+ {, B 14.jpg 0 ^  G* c& z% @. T& }3 _  R+ n# _8 W0 @
2 x1 ^. g6 z5 U$ @
6、main.c函数代码实现0 _6 [8 `2 s2 `7 t. o
15.jpg ; e2 `) r4 Q6 M) h  j

' U7 q1 c0 q. `1 J2 F$ h7、实验现象硬件连线图:7 L8 x6 _. y+ t4 X4 `/ y5 [% `* C
16.jpg
0 `: h! \+ G3 @' I
/ J" Y4 h5 c1 I, _; sLabviewvi运行界面
3 k3 i+ a2 R1 G9 U* V
17.jpg , u- r/ w2 l, T/ n
/ m8 w$ N( P2 ?" X5 s& Z! z' p
5 m! [3 {( m- ]
5 {1 _3 C& I' ?3 K3 P0 o
代码地址链接http://www.eeboard.com/bbs/thread-39696-1-1.html
3 a+ \1 ?& D) ?: I9 S1 h* v摩尔吧视频地址链接
https://www.moore8.com/courses/306: R2 v& M; ?2 B

2 d& U1 _$ z% D* v# l) a" Z" n9 ]' d# f8 [7 C( o
  \* |* m% ^/ ~* `

2 E+ X; o7 i8 T6 C( s- J" _" I/ U8 n+ h! V2 c! N
5 e7 B5 a+ T+ C+ B6 N* _* P
( O( Y) |  a/ q  b* G1 B) V5 K

. E/ E/ X, O8 P% }% {3 x2 T  S8 E% [3 _
赞 收藏 1 评论29 发布时间:2015-1-8 14:39

举报

29个回答
fengye5340 回答时间:2015-2-28 20:10:15
yinyue01 发表于 2015-2-17 13:490 Q, @" u8 p( f+ ~) m2 m; Y1 H& v8 R8 v
LABVIEW程序可以再优化一下,做成状态机,也可以加个消费者循环来存储和显示 ...
" e! O$ Y2 e; Z0 C: O
做成产品的话就要那样,需要花费时间精雕细刻,确保程序稳定性
fengye5340 回答时间:2015-1-9 13:07:12
pythonworld 发表于 2015-1-9 13:056 v: Z# x1 ^( x  [4 E0 ?
上位机除了用labview,还能用什么软件?
* [. O9 S8 S2 x: k+ U% c& w
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:528 r! H2 Z& C' O  ?: l: _
这个不就是你的那套视频里的第八章吗?怎么单独拿出来了
) y% S! Q/ C/ ?$ P% c0 v
分享给社区的更多人吧
wamcncn 回答时间:2015-1-8 21:45:45
学习了,元老级别的
fengye5340 回答时间:2015-1-9 09:10:47
wambob 发表于 2015-1-8 21:458 U) o. B' f8 T+ x' C0 X
学习了,元老级别的
9 q4 B8 f! {+ o) \- r  H; j
感谢支持
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# ~" {0 \# r9 m$ `$ q" e
cool,labview有个比较恶心的地方就是要买板卡。

3 K, k; ^, ]( _: m, }6 S. f可以不用买的,自己做个就可以,现在好多第三方支持,比如常见的研华数据采集卡等
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版