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

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

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

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

到手的Nucleo-G474开发板,先来张特写。
1.jpg
Nucleo-G474的板载烧写器MCU已经不是传统的STM32F103了,而是升级到了STM32F723,唯一遗憾的是烧写器和主板是一体的了,不是传统的间断连接方式,不能和主板分离,成为一个单独的烧写器。

为方便测试,且最大限度保护好Nucleo-G474原板,不直接在原板上焊接连线,特地打了1片专用测试板。这里要感谢下深圳某创PCB专业制造公司,速度快,还便宜,只要5块钱,且SF包邮(前提是尺寸不能超过10X10CM)。测试板上包括本次评测要用的外围电路,包括指示灯、RS232串口、DA、AD、CAN-FD,其中CAN-FD将放在后期测试。
首先测试传统的点灯,板载Led和自制Led交替点亮。用CubeMX配置好硬件资源,keil5编译程序,然后将程序下载到Nucleo-G474开发板,注意初次擦除烧写会报错,解决方法是从官网下载STSW-LINK007升级,就可以下载程序了。
程序运行效果如下所示:
2.jpg

3.jpg
接下来就是测试最主要的部分,手头已量产的产品是专用的传感器,MCU通过DA模块输出控制电压(电压大小需根据不同的环境可调),AD模块采集不同的被检测对象所对应的模拟量大小并转换成数字量,主控程序根据采集到的数字量大小,输出对应的控制。

4.jpg

CubeMX配置G474的资源如下图所示:
5.jpg

6.jpg

Main主程序:

int main(void)
{
/* USER CODE BEGIN 1 */  
button_no = 0;
/* USER CODE END 1 */


/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();


/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();


/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM3_Init();
MX_UART4_Init();
MX_ADC2_Init();
MX_DAC2_Init();
/* USER CODE BEGIN 2 */

if (HAL_DAC_Start(&hdac2, DAC_CHANNEL_1) != HAL_OK)
{   Error_Handler(); }

if (HAL_DAC_SetValue(&hdac2, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 1024) != HAL_OK)
{   Error_Handler(); }

if (HAL_ADC_Start(&hadc2) != HAL_OK)
{   Error_Handler(); }


AD_Sample = 0;
AD_Sample = HAL_ADC_GetValue(&hadc2);
__HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);


/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
   /* USER CODE END WHILE */


   /* USER CODE BEGIN 3 */
   if (HAL_GPIO_ReadPin(B2_GPIO_Port, B2_Pin) == 0x01U)
   {
       button_no = 0x01U;
   }
   else
      button_no = 0x00U;
   HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
   HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
if (HAL_ADC_Start(&hadc2) != HAL_OK)
{   Error_Handler(); }
   HAL_Delay(50);
   AD_Sample = 0;
   if (HAL_ADC_PollForConversion(&hadc2, 10) == HAL_OK)
   {
     AD_Sample = HAL_ADC_GetValue(&hadc2);


     sprintf(aTxBuffer,"AD value = %5d     ",AD_Sample);
     if (HAL_UART_Transmit(&huart4, (uint8_t *)aTxBuffer, 26, 5000) != HAL_OK)
     {
       Error_Handler();
     }
     __HAL_ADC_CLEAR_FLAG(&hadc2, ADC_FLAG_EOS);
     /* Insert delay 100 ms */
if (HAL_ADC_Stop(&hadc2) != HAL_OK)
{   Error_Handler(); }
     if (button_no == 0x00U)
         HAL_Delay(2000);
     else
         HAL_Delay(100);
   }
}
/* USER CODE END 3 */
}


测试结果:
下图为传感器中没有被检测对象时采集到的数据:
7.jpg

检测较小物体时采集到的数据:
8.jpg

检测较大物体时采集到的数据:
9.jpg

以上所有检测数据为每秒采集一次,通过RS232串口传输到PC显示,该数据为AD模块的原始数据,分辨率12bit,未经任何算术平均以及数字滤波处理。从采集的结果看,AD模块的精度完全满足项目的需要。

由于时间不是很充裕,G474的很多优异性能尚未加以测试,尤其项目中要用的CAN总线,由于G4系列的CAN已升级为CAN-FD,手头尚没有对应的带CAN-FD的上位机进行测试,只能留待后期硬件条件具备时再做进一步测试。

评分

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

查看全部评分

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

举报

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

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

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