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

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

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

2 e4 ]2 Z1 ]# a/ U+ m$ I, t' |; a6 ]
手头正好有电机控制方面的项目,准备选型一款合适的MCU,而G4系列典型应用之一正是电机控制,不巧的是收到开发板时订购的BLDC评估板一时半会还到不了手,临时改变评测项目,已经量产的工业仪器MCU替换为G474,看功能和性能方面是否可以达到或超越现有的MCU。

" M1 C2 [) p8 A' W到手的Nucleo-G474开发板,先来张特写。
  g, X) B, [5 @( j9 n5 M% Q1 Z 1.jpg 1 Z* r7 n! e# ]+ {
Nucleo-G474的板载烧写器MCU已经不是传统的STM32F103了,而是升级到了STM32F723,唯一遗憾的是烧写器和主板是一体的了,不是传统的间断连接方式,不能和主板分离,成为一个单独的烧写器。

; D( ]5 H1 t& ~  I为方便测试,且最大限度保护好Nucleo-G474原板,不直接在原板上焊接连线,特地打了1片专用测试板。这里要感谢下深圳某创PCB专业制造公司,速度快,还便宜,只要5块钱,且SF包邮(前提是尺寸不能超过10X10CM)。测试板上包括本次评测要用的外围电路,包括指示灯、RS232串口、DA、AD、CAN-FD,其中CAN-FD将放在后期测试。; S1 |+ D* P4 M* @8 @7 G) P# h# D
首先测试传统的点灯,板载Led和自制Led交替点亮。用CubeMX配置好硬件资源,keil5编译程序,然后将程序下载到Nucleo-G474开发板,注意初次擦除烧写会报错,解决方法是从官网下载STSW-LINK007升级,就可以下载程序了。
5 g3 Z. _) h' Z
程序运行效果如下所示:4 \1 {1 c: M1 \+ f* f8 m
2.jpg
8 q  y# \2 x9 B% M4 ~" w; u2 w$ ?
3.jpg
, W2 I( W4 k; N, p6 ]
接下来就是测试最主要的部分,手头已量产的产品是专用的传感器,MCU通过DA模块输出控制电压(电压大小需根据不同的环境可调),AD模块采集不同的被检测对象所对应的模拟量大小并转换成数字量,主控程序根据采集到的数字量大小,输出对应的控制。

& F' @# H, @, s' L3 s" Y' ?, H
4.jpg
2 ~* M% N1 _0 z2 X
CubeMX配置G474的资源如下图所示:% k/ D( ?. N5 ~% @
5.jpg

) N$ g  E) h  O% g
6.jpg
/ ^8 E% Q7 g$ Q2 K1 H( q! a
Main主程序:* ?" E: ?2 E2 e" D' b
9 s5 W; Q5 u0 c: G/ L3 C, m, Q7 ~3 ~
int main(void); l$ u1 t7 t0 g, ~) H0 ^, }: m$ b- _
{ 4 r- w1 K) O$ e
/* USER CODE BEGIN 1 */  
) }% f2 v+ z; v! j6 x1 c- [* i& g4 C/ D button_no = 0; ) |! k8 W. p/ R: n4 {2 G
/* USER CODE END 1 */ " i2 Q* l2 a. f3 P. m

+ _9 P& o0 S4 g
/ H1 H6 y$ |& J6 j" y3 v6 o, ] /* MCU Configuration--------------------------------------------------------*/
0 m( G/ i0 P! f/ ^4 w
4 t0 ~/ s6 X5 x$ O  f* Z. i /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
) j2 Y9 S% X8 U7 e
! E! K" ]" m, p0 V) a9 Z0 uHAL_Init();
* [8 c6 w6 @- M  i
9 ~4 m  g; N2 k. W9 ~  i# i3 t! N5 c9 q& U+ s
/* USER CODE BEGIN Init */
- a( i3 X0 A, D3 k/ j  s+ G$ m. A' F6 E
/* USER CODE END Init *// F- |: p% A+ T9 O0 H

: n0 l$ L0 @5 d# {8 O5 j /* Configure the system clock */   s. J2 k% T% k: s
# h3 Q% f& ^* l9 e
SystemClock_Config();" T' k7 }  B+ l$ ~1 T, c- _

/ ^. K( g: R: ]) f: j- h
; f. I% \: I: @6 Y( ]* y' v( ` /* USER CODE BEGIN SysInit */) i! s; k" x- C( p, A  {

) @( S  m8 M. P: L1 V+ H /* USER CODE END SysInit */
/ h3 k# a+ V- Y! L
/ e$ X+ k2 D0 ?: q! J4 u' k6 O0 D /* Initialize all configured peripherals */
! ]% B8 Z3 t3 S+ r; X6 g. T7 A9 vMX_GPIO_Init(); 0 @8 c  H7 K6 ^2 _- j/ T4 h! i8 W
MX_TIM3_Init(); ( O1 ]' L6 d: S
MX_UART4_Init(); 1 y, S5 i( K" N# F6 ]# @4 J7 Z
MX_ADC2_Init();
% r. b# Z* v+ z8 j( Z! I* RMX_DAC2_Init(); # i8 W- `/ |; j7 d! M% m
/* USER CODE BEGIN 2 */
4 Z4 l1 S$ P8 i. b( _" N9 b' @  C: ]* o. v7 P
if (HAL_DAC_Start(&hdac2, DAC_CHANNEL_1) != HAL_OK) 8 h, v# X" |  C. ~# F
{   Error_Handler(); }- [9 w  c& a4 I5 o

5 }% V( k1 |* {8 L4 D, h* k' S if (HAL_DAC_SetValue(&hdac2, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 1024) != HAL_OK)
$ e; D$ y. N! E. A# w4 N$ Q7 ^ {   Error_Handler(); }
: A) w, ^" O0 ~/ k$ l! Z* e
4 R- R$ E0 p$ Z8 Q* X  d if (HAL_ADC_Start(&hadc2) != HAL_OK)
* W" q6 @$ R  l1 m% I8 b; Q8 O{   Error_Handler(); }3 B4 a; R9 c: p* `5 L. u

' ^& m9 |- c8 i: U+ e# m
0 N7 J" H# Y" M5 M( l  \9 y" } AD_Sample = 0;
, y  n  X; A  ?3 p* `AD_Sample = HAL_ADC_GetValue(&hadc2); 0 c3 l4 P5 D7 K6 D, ~1 p
__HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);
+ s8 x% p" ]/ U3 }# ?
2 X! _0 q$ n. I5 p5 I. }7 C, P
* h* t5 Q& h# b" L, A /* USER CODE END 2 */
- w& h/ R, @' ~! \9 x7 y, @
. |, H5 g9 u; X1 T: q /* Infinite loop */8 g. b: Q% G. U' v
/* USER CODE BEGIN WHILE */ 1 N& w7 t! d$ j6 _1 B- M6 L( ]
while (1)
: |+ ]& |6 X3 K0 \/ p2 ]{
( W! u4 K3 o5 D. f' d" a   /* USER CODE END WHILE */+ Z2 @4 y5 N  x& h/ C" r9 ?" B
. b& i3 X+ H5 X0 w

0 |5 V/ ?+ O4 _. z! j   /* USER CODE BEGIN 3 */1 ~, A/ b# Q/ U  N
   if (HAL_GPIO_ReadPin(B2_GPIO_Port, B2_Pin) == 0x01U)- c, q9 H' C! _
   {
; U' X3 }- V/ U4 j       button_no = 0x01U;
9 Z1 K% s; U9 Z   }
4 e. M% F) P0 g/ \/ ~   else( _2 x& ^9 k& w+ k" f. I3 B
      button_no = 0x00U;; G( ~5 C$ J) H$ I* \$ M% z, Z+ i9 E
   HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);9 c5 H$ @$ r1 R0 h' m' t7 v
   HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin); 9 [7 }" X6 b+ w* C& p5 z1 K4 [
if (HAL_ADC_Start(&hadc2) != HAL_OK)
! y  b* n3 d) L8 {: [2 `5 M{   Error_Handler(); }+ R' G0 G. i' s# C" w# r& ^# |; I
   HAL_Delay(50);$ J" X* d- X0 U5 j5 [$ K, z
   AD_Sample = 0;
5 N% S% I9 H: _# e  V5 T   if (HAL_ADC_PollForConversion(&hadc2, 10) == HAL_OK)1 h1 |% O( Q' I* c% ~: ^0 P8 m
   {8 R7 g4 r6 Q* Z, ?* g
     AD_Sample = HAL_ADC_GetValue(&hadc2);
; [0 D$ u- s2 b0 q- {7 \# s) V  U# I0 T* F

$ p5 r% M$ u# ^: q     sprintf(aTxBuffer,"AD value = %5d     ",AD_Sample);2 K- n) O5 }- K# _( N& a$ ?
     if (HAL_UART_Transmit(&huart4, (uint8_t *)aTxBuffer, 26, 5000) != HAL_OK). W0 `+ U6 {; k
     {4 s5 R  J" P0 V9 g
       Error_Handler();
/ t8 L4 o2 x5 e- m2 v8 f) i1 F     }
8 ?  {; Y4 w; T3 e, p9 h5 D     __HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);# R5 J( _& `) m* Y. d. \; x  H
     /* Insert delay 100 ms */
3 {* `4 c8 ]: \ if (HAL_ADC_Stop(&hadc2) != HAL_OK)
2 O4 D. J% ^3 h1 A5 [ {   Error_Handler(); }
: @4 J: m; a$ i/ p& n     if (button_no == 0x00U)
8 f* R' \9 |2 H& {0 V+ W6 o0 _         HAL_Delay(2000);$ {; [, B! z% t! k) K
     else
. m) j' ?8 j2 I2 a         HAL_Delay(100);
7 x! @, g* X" n   }. }, G" T1 Y7 p
} ( g' H9 L+ k9 w" x
/* USER CODE END 3 */, `' m' w3 f7 N! N
}1 ~7 t8 ^) T6 o
4 W! O1 e5 E$ m, K
7 }, `: D# X: e
测试结果:* E! U9 f: }5 M' x& r- [+ ~1 j
下图为传感器中没有被检测对象时采集到的数据:
, O; j/ m/ \' V0 M' Q" n+ T
7.jpg

8 L0 A% q8 ^1 D8 t  S  d' G检测较小物体时采集到的数据:
; |. L9 B9 Z# S  R2 K+ G
8.jpg
6 x, O  V# p' ^; u* k7 m
检测较大物体时采集到的数据:
7 e% b& R0 [+ t; \9 Q. Z- o
9.jpg
! @" q5 K* |& {) ]8 o3 T6 B
以上所有检测数据为每秒采集一次,通过RS232串口传输到PC显示,该数据为AD模块的原始数据,分辨率12bit,未经任何算术平均以及数字滤波处理。从采集的结果看,AD模块的精度完全满足项目的需要。
1 n' T& u$ E/ u& ~8 l
由于时间不是很充裕,G474的很多优异性能尚未加以测试,尤其项目中要用的CAN总线,由于G4系列的CAN已升级为CAN-FD,手头尚没有对应的带CAN-FD的上位机进行测试,只能留待后期硬件条件具备时再做进一步测试。
4 W& u( D  Q# [& ^& d

评分

参与人数 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版