STM32G474评测—AD/DA模拟性能测试

发布时间:2023-02-23  

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

到手的Nucleo-G474开发板,先来张特写。



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升级,就可以下载程序了。

程序运行效果如下所示:


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



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


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 */

}


测试结果:

下图为传感器中没有被检测对象时采集到的数据:


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


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


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

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>