当前位置: 首页 > article >正文

NUCLEO-F446RE测试板验证DS100示波器功能

目录

概述

1 NUCLEO-F446RE开发板

1.1 认识NUCLEO-F446RE

1.2 功能介绍

2 STM32Cube配置工程

2.1 基本参数配置

2.2 配置PWM接口

2.2.1 配置PWM_CH2参数

 2.2.2 配置TIMER-4: PWM_CH1参数

 3.3 STM32Cube生成项目

3 PWM功能实现

 3.1 代码介绍

3.2 测试代码

3.3 源代码文件

4  测试

5 结论 


概述

本文主要介绍使用NUCLEO-F446RE测试板生成PWM波形,分别使用逻辑分析仪和示波器测试该波形的参数,验证DS100参数的准确性。

1 NUCLEO-F446RE开发板

1.1 认识NUCLEO-F446RE

STM32 Nucleo-64板为用户提供了一种经济实惠且灵活的方式,通过选择STM32微控制器提供的各种性能和功耗功能组合来尝试新概念和构建原型。对于兼容的单板,内置或外置SMPS在Run模式下可显著降低功耗。

ARDUINO®Uno V3连接支持和ST morpho头允许STM32 Nucleo开放开发平台的功能轻松扩展,具有广泛的专业屏蔽选择。

STM32 Nucleo-64板不需要任何单独的探头,因为它集成了ST-LINK调试器/编程器。
STM32 Nucleo-64板附带STM32全面的免费软件库和示例,可与STM32Cube MCU包一起使用。

1.2 功能介绍

MCU相关信息:

-
LQFP64或LQFP48封装中的STM32微控制器
1个用户LED与ARDUINO®共享
1个用户和1个复位按钮
32.768 kHz晶体振荡器

-
板连接器:

-
ARDUINO®Uno V3扩展连接器
用于完全访问所有STM32 I/ o的ST morpho扩展引脚头
灵活的电源选择:ST-LINK USB VBUS或外部电源
全面的免费软件库和示例可与STM32Cube MCU包
支持多种集成开发环境(ide),包括IAR嵌入式工作台®,MDK-ARM和STM32CubeIDE
 

-调试接口:

-
板载ST-LINK (STLINK/V2-1, STLINK- v3e, STLINK- v2ec或STLINK- v3ec)调试器/编程器,具有USB重新枚举功能:大容量存储,虚拟COM端口和调试端口

2 STM32Cube配置工程

2.1 基本参数配置

在Board Selector中选择板卡,系统会对硬件资源进行配置,包括:LED,按键,调试接口,UART接口,晶振等。

 配置完成后会看见如下信息:

2.2 配置PWM接口

1) 配置定时器的时钟

 系统定时器对应的时钟参数为: 85M Hz

 2)选择PWM输出端口

PC7          -----------------------      TIMER-3:   PWM-CH2

-

PB6          -----------------------      TIMER-4:   PWM-CH1 

其在MCU上的对应位置如下:

 

2.2.1 配置PWM_CH2参数

step-1: 选择端口和时钟

step-2: 配置参数

 IO端口参数:

 2.2.2 配置TIMER-4: PWM_CH1参数

step-1: 选择端口和时钟

 step-2: 配置参数

 IO端口配置

 3.3 STM32Cube生成项目

3 PWM功能实现

 3.1 代码介绍

设置TIMER-3 PWM的通道号和占空比

设置TIMER-4 PWM的通道号和占空比

 

3.2 测试代码

代码63行:启动定时器3

代码64行:启动定时器3对应的PWM

代码66行:启动定时器4

代码67行:启动定时器4对应的PWM

代码69行:设置定时器-3对应的PWM占空比

代码70行:设置定时器-4对应的PWM占空比

3.3 源代码文件

/* USER CODE BEGIN Header */
/**
 ******************************************************************************
 * File Name        :  user_pwm.h
 * Description      :  pwm driver base on stm32f446
 ******************************************************************************
 * @attention
 *
* COPYRIGHT:    Copyright (c) 2024  tangminfei2013@126.com

* DATE:         JUL 05th, 2024

 ******************************************************************************
 */
/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/

#include "user_pwm.h"
#include "tim.h"

#define  PWM3_BASE_TIME  htim3
#define  PWM4_BASE_TIME  htim4  


static void HAL_TIM3_SetPWM_Pulse( uint32_t Pulse, uint32_t Channel)
{
  TIM_OC_InitTypeDef sConfigOC = {0};
  
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = Pulse;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  if (HAL_TIM_PWM_ConfigChannel(&PWM3_BASE_TIME, &sConfigOC, Channel) != HAL_OK)
  {
    Error_Handler();
  }
}

static void HAL_TIM4_SetPWM_Pulse( uint32_t Pulse, uint32_t Channel)
{
  TIM_OC_InitTypeDef sConfigOC = {0};
  
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = Pulse;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  if (HAL_TIM_PWM_ConfigChannel(&PWM4_BASE_TIME, &sConfigOC, Channel) != HAL_OK)
  {
    Error_Handler(); 
  }
}


void pwm_ctrl_Init( void )
{
    HAL_TIM_Base_Start( &PWM3_BASE_TIME );
    HAL_TIM_PWM_Start( &PWM3_BASE_TIME, TIM_CHANNEL_2);    // PC7
    
    HAL_TIM_Base_Start( &PWM4_BASE_TIME );
    HAL_TIM_PWM_Start( &PWM4_BASE_TIME, TIM_CHANNEL_1);    // PB6
     
    HAL_TIM3_SetPWM_Pulse( 500, TIM_CHANNEL_2);
    HAL_TIM4_SetPWM_Pulse( 500, TIM_CHANNEL_1);
    
}




/* End of this file */

4  测试

硬件测试环境如下:

编译代码,下载到板卡中,运行代码。

1) 使用逻辑分析仪捕捉波形,并验证其周期

波形参数如下:

1)占空比: 49.95%

2)频率:1.016k Hz

2) 使用DS100测试波形

波形参数如下:

1)占空比: 49.9%

2)频率:1.02k Hz

5 结论 

通过使用逻辑分析仪和示波器分别测试PWM的波形参数,比较二者参数可得:DS100的测试精度还是可以的,其作为入门级的仪器还是能胜任的。


http://www.kler.cn/a/451953.html

相关文章:

  • 源码分析之Openlayers中GeometryCollection类
  • 活着就好20241226
  • 如何查看pad的console输出,以便我们更好的进行调试,查看并了解实际可能的问题。
  • Mac系统下 IDEA配置Maven本地仓库
  • Linux搭建TRELLIS详细流程
  • 软件测试之测试用例
  • 【视觉惯性SLAM:编译及编译工具】
  • 2024.8 设计可解释的 ML 系统以增强对医疗保健的信任:对提出的负责任的临床医生-AI 协作框架的系统评价
  • wordpress调用指定ID分类下浏览最多的内容
  • 印度软件业的发展能给中国软件行业什么样的启示和借鉴
  • C语言-基因序列转换独热码(one-hot code)
  • 开关电源特点、分类、工作方式
  • 【开源免费】基于SpringBoot+Vue.JS在线宠物用品交易网站(JAVA毕业设计)
  • 网络下载ts流媒体
  • JVM简介—1.Java内存区域
  • VBA实现遍历Excel文件将指定的单元格内容拷贝到当前工作簿
  • whisper.cpp: PC端测试 -- 电脑端部署音频大模型
  • 图像处理-Ch6-彩色图像处理
  • 修改输出资源的名称和路径、自动清空上次打包资源
  • 【C 语言】内存节省机制
  • 深入理解.NET内存回收机制
  • 【论文复现】进行不同视角图像的拼接
  • python如何求欧几里得
  • VMware虚拟机中CentOS系统/dev/mapper/centos-home分区扩容指南
  • 稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
  • 2024年12月25日Github流行趋势