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

测试篇——STM32G474之AD/DA模拟性能测试

[复制链接]
eefishing 发布时间:2020-1-10 01:03
有幸参加了ST最新的G4系列MCU的测评。之所以会选择参加G4系列MCU的测评,是看中了G4系列优越的性能和较高的性价比,G4作为F3的升级系列,主频高达170MHz,内嵌了数学运算加速器,具有丰富的内置数模外设,运放、比较器、DA、AD等,硬件加密使用的是AES-256,带有双安全存储区域。

3 W) `  j5 D& w+ a8 T, `6 g
手头正好有电机控制方面的项目,准备选型一款合适的MCU,而G4系列典型应用之一正是电机控制,不巧的是收到开发板时订购的BLDC评估板一时半会还到不了手,临时改变评测项目,已经量产的工业仪器MCU替换为G474,看功能和性能方面是否可以达到或超越现有的MCU。
: g2 Q1 [5 M+ e+ m
到手的Nucleo-G474开发板,先来张特写。
3 S1 h8 ~+ p6 I 1.jpg * x$ `% Q, _3 Y# ^" t2 {
Nucleo-G474的板载烧写器MCU已经不是传统的STM32F103了,而是升级到了STM32F723,唯一遗憾的是烧写器和主板是一体的了,不是传统的间断连接方式,不能和主板分离,成为一个单独的烧写器。
5 c' o: I, x+ F$ ^& h) T" e
为方便测试,且最大限度保护好Nucleo-G474原板,不直接在原板上焊接连线,特地打了1片专用测试板。这里要感谢下深圳某创PCB专业制造公司,速度快,还便宜,只要5块钱,且SF包邮(前提是尺寸不能超过10X10CM)。测试板上包括本次评测要用的外围电路,包括指示灯、RS232串口、DA、AD、CAN-FD,其中CAN-FD将放在后期测试。- A* p) g; p6 q* D
首先测试传统的点灯,板载Led和自制Led交替点亮。用CubeMX配置好硬件资源,keil5编译程序,然后将程序下载到Nucleo-G474开发板,注意初次擦除烧写会报错,解决方法是从官网下载STSW-LINK007升级,就可以下载程序了。  e7 P, a# f: J2 j& K3 t
程序运行效果如下所示:+ u& @+ t: R4 r4 }( t
2.jpg
- \% i+ S- m, B$ A! D" e/ r9 D6 @7 M
3.jpg
6 k8 I2 A8 a& e2 p+ }$ Q
接下来就是测试最主要的部分,手头已量产的产品是专用的传感器,MCU通过DA模块输出控制电压(电压大小需根据不同的环境可调),AD模块采集不同的被检测对象所对应的模拟量大小并转换成数字量,主控程序根据采集到的数字量大小,输出对应的控制。

& A, O: |. B+ Z2 p
4.jpg
, v: N( H1 K& y1 |% V
CubeMX配置G474的资源如下图所示:
9 c8 J- a" e0 Y
5.jpg
" U8 g2 F( S; ~7 j" N
6.jpg
5 `2 M1 j5 [( S8 A5 r/ I
Main主程序:3 y5 {, S! n; @% X! ~$ Y6 ?* u

  x  D  _9 K9 l# P- F, L6 _int main(void)2 |3 I4 q0 C; U* i; k
{
' m% Z" M5 L4 i6 c/* USER CODE BEGIN 1 */  % o% w: B5 z2 o/ Y9 }
button_no = 0; , }: y$ x( Z) B3 g
/* USER CODE END 1 */
4 s' h9 h5 p9 X3 m
/ m+ L0 w! \5 W) _3 q% v4 B1 R1 v0 F' o# T/ g1 g/ V
/* MCU Configuration--------------------------------------------------------*/9 C! d% f! |" l; ?" f- q0 r
7 w1 ?* @" w6 q3 v" o9 @+ x
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
! I% w/ v, [% G( Y) `  V
* i1 b3 R2 O3 D, cHAL_Init();) Q3 O) P9 x! ~  P/ U' d6 c5 j* h
( O2 G- P" L8 O# V1 |+ v

+ |6 c; U1 f/ t! j /* USER CODE BEGIN Init */$ |6 i5 Y8 B9 R& x
# \; [7 e: l; l, m; Q
/* USER CODE END Init */
1 `! y5 E1 b7 C- k+ O) c  d& {: f, ^) e/ u, ], m7 m
/* Configure the system clock */
8 {0 I$ Y7 F7 i/ @( x9 G% i! a- E
+ \, ?1 S. y  CSystemClock_Config();: V2 X. _( [4 h
; M' Q" v3 N; M8 E; `8 m  `

$ [+ E8 r0 p  T. E /* USER CODE BEGIN SysInit */
; P; m7 N  g8 H# J% s, b+ v" V' d- {& G6 @4 V5 B8 r
/* USER CODE END SysInit */7 |6 j5 K$ p) @2 L

' ?. ^' ^( E% @$ R9 M9 s$ I8 L /* Initialize all configured peripherals */
* K! d# Z' v1 A) _1 {& d, J; r/ B5 LMX_GPIO_Init();
' q1 g! [* M% f* v9 `& O$ X9 v- UMX_TIM3_Init(); 0 `4 U' s! c6 e) b4 v7 ]/ A8 ~- y
MX_UART4_Init(); ) N) D8 n2 ~/ U: g
MX_ADC2_Init(); 0 m( R5 ~* Q, S* I( P' S/ a- H
MX_DAC2_Init();
6 ?* ]7 v$ `5 f, J% U2 _7 g7 u/* USER CODE BEGIN 2 */
% i& `8 e$ \& U9 C! ]$ L' ~2 j0 k% g& V) a6 u" I! a+ |. B* C, [
if (HAL_DAC_Start(&hdac2, DAC_CHANNEL_1) != HAL_OK) ( }: M& d0 f2 P( h5 ^% w
{   Error_Handler(); }
- N' ?) c) G+ M' n" H1 |
& Z! j6 f) v# t4 F! x) |, r, E if (HAL_DAC_SetValue(&hdac2, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 1024) != HAL_OK)
' {4 G- n0 ]  r8 H" N6 a {   Error_Handler(); }8 T% P# `" S' s6 p
' `  ~0 m: `& }5 [, n
if (HAL_ADC_Start(&hadc2) != HAL_OK)
4 y8 O/ Z3 ^; |, f$ e( j; a{   Error_Handler(); }6 u8 q- ]" X! Y6 U: ^& e

1 U8 J  N1 u' v  V0 o0 u' W1 e$ _0 W7 r3 m, w
AD_Sample = 0;
; ]+ Q2 x5 ^; b* ~. y& VAD_Sample = HAL_ADC_GetValue(&hadc2);
- G/ Z9 ?1 `$ q0 j) T__HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);1 l. U. x2 C3 c7 z
9 {  A7 `% b) e  S) @: G: K9 d: ~
5 E( F& r) l. ~0 ]
/* USER CODE END 2 */
: O# P; I: x, l' l7 f6 n- p; W  V6 a
2 g3 A4 J* B' h( | /* Infinite loop */
. D$ F# W# m$ ?  X9 E9 y* B- v /* USER CODE BEGIN WHILE */
1 k4 @4 e: v( k% i" owhile (1)
' [8 d. R2 C) G8 r+ ^{
. P/ B! U( o8 v   /* USER CODE END WHILE */
# l9 o2 j( v1 J5 F7 F/ _
$ V; |6 |+ j! u; A+ t) W; ^) p4 L( }9 ?) Y
   /* USER CODE BEGIN 3 */
; t# q( y: H& x) K# L5 d8 t& {   if (HAL_GPIO_ReadPin(B2_GPIO_Port, B2_Pin) == 0x01U)( [( h  {: O9 a: c
   {+ C* ~! s6 e" g1 E8 K- J% ~
       button_no = 0x01U;- |7 g8 Q: f) p* t4 h+ v- ^+ F" x
   }
. C; m/ i) R1 ^* m/ P% O( A) R" p   else
- ?4 I  I# z; K      button_no = 0x00U;4 e$ d- W" E# ]( ]0 O
   HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);% E; B' h! n8 g2 f/ O5 ]+ ~$ q; O
   HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
2 M% j3 ~* k( J. y" X9 cif (HAL_ADC_Start(&hadc2) != HAL_OK)
  B4 x6 e2 m0 D- q1 v$ G+ `, m- L{   Error_Handler(); }
) M. x. n: ]- H( H* n   HAL_Delay(50);' _5 `. D9 \; r2 q
   AD_Sample = 0;( W& ^  g; v; n
   if (HAL_ADC_PollForConversion(&hadc2, 10) == HAL_OK)
6 ~9 G7 E0 [& [+ m* S" y   {
9 c) y3 n$ D1 \  o; T1 _$ O" A     AD_Sample = HAL_ADC_GetValue(&hadc2);
: N: p- _0 m- Q  W
! Q9 l6 G9 [1 M  \- P
8 ^& S# E9 G9 l' }  [     sprintf(aTxBuffer,"AD value = %5d     ",AD_Sample);
, {7 {% h/ B$ W2 m( ^, D     if (HAL_UART_Transmit(&huart4, (uint8_t *)aTxBuffer, 26, 5000) != HAL_OK)/ A+ ~; E7 w- A! T$ x/ K
     {
: l) ]7 a8 \; S" p8 }% j- K+ ]# x& t       Error_Handler();
5 q' S! d/ t$ ?% d     }7 w% {0 L. Y) y* |* K/ ~1 n
     __HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);
4 @% l* O) w5 R% \7 t6 g& ?     /* Insert delay 100 ms */5 T+ ~2 }8 t/ ~
if (HAL_ADC_Stop(&hadc2) != HAL_OK)
. B5 l9 r0 B3 X4 T% x5 s" U" G& a6 f {   Error_Handler(); }/ t+ n$ n; j( e# P6 N) u5 @" Q+ e
     if (button_no == 0x00U)
# K4 I( |% U% d7 a5 L         HAL_Delay(2000);
) e6 q, _8 F) C/ g3 l     else
$ a  ?% @8 }( b5 C  R$ |         HAL_Delay(100);, {/ m( X4 [1 S. t$ j: }- I
   }- d/ T0 n' l# {4 ~; e
}
6 L7 w6 u2 `) ]+ f; ?/* USER CODE END 3 */! f4 M9 I7 n& \0 r# n* X! x
}* |; O& t& G; f2 a( L. }  d! L) c
3 U4 B- R1 r" i$ w. |" N
; O5 `; _3 C) V2 _: d6 \" a' |8 n+ L& S
测试结果:4 u* G2 n, a0 g. c
下图为传感器中没有被检测对象时采集到的数据:
$ I! X) b7 H$ g' z& C# r
7.jpg

  ^8 ~# |: [' V; V检测较小物体时采集到的数据:
, F/ p: X7 J; f& t; C2 B1 F
8.jpg
% J- K4 s( u6 P* v( u
检测较大物体时采集到的数据:# J# d+ X$ p& Q; k5 e
9.jpg
* w  ^. v2 f; m; \' ^
以上所有检测数据为每秒采集一次,通过RS232串口传输到PC显示,该数据为AD模块的原始数据,分辨率12bit,未经任何算术平均以及数字滤波处理。从采集的结果看,AD模块的精度完全满足项目的需要。

5 ?  z, o! {; R由于时间不是很充裕,G474的很多优异性能尚未加以测试,尤其项目中要用的CAN总线,由于G4系列的CAN已升级为CAN-FD,手头尚没有对应的带CAN-FD的上位机进行测试,只能留待后期硬件条件具备时再做进一步测试。7 L$ x8 p/ T5 a! c, h

评分

参与人数 1 ST金币 +1 收起 理由
wawayaya1 + 1 很给力!

查看全部评分

1 收藏 评论2 发布时间:2020-1-10 01:03

举报

2个回答
李康1202 回答时间:2020-4-20 22:01:40
顶一顶
easyorhard 回答时间:2020-5-2 12:54:22
点赞!!!

所属标签

相似分享

官网相关资源

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