STM32F407HAL库输出互补PWM波以及死区时间计算

互补PWM波配置

STM32F407VET6的高级定时器TIM1、TIM8可以生成互补的PWM波,用HAL库配置非常方便。

我们使用高级定时器TIM1,选择一个通道(我这里选择通道二),然后选择PWM Generation CH2 CH2N。这里N的意思是互补,CH2N是与CH2的PWM互补的。

此时我们可以看到CH2输出以及其互补通道输出PWM波的IO口。

我的时钟主频配置的是100Mhz,当你配置的时候要注意自己的始终主频,涉及后面的PWM波的频率计算、死区时间计算。

时钟源选择Internal Clock。选择不分频(Prescaler=1),由于我需要配置100Khz频率的PWM波,所以我的Counter Period值填写的是999(ARR=999)。

pwm波的周期:

T1=\frac{1}{f}=\frac{1}{1000000}=0.00001s=10us

而主频为100Mhz,其周期为:

T0=\frac{1}{f}=\frac{1}{100000000}=10ns

所以Counter Period值应该为:

Counter Period=\frac{T1}{T0}-1=\frac{10us}{10ns}-1=1000-1 

同理:如果要配置10Khz频率的PWM波,则ARR的值应该为9999.

死区时间计算

我们可以看到有一个Dead Time的值需要我们填写。

其计算规则如下图所示。

乍一看很复杂,我来解释一下计算步骤。

首先,我们需要确定时钟的主频,上图为8Mhz,所以其时钟周期T0为:

T0=\frac{1}{8Mhz}=125ns

第二步,又要分为4种情况:

1)步长为T0(125ns),乘数范围是0-127,此时得出的范围是:步长 x 乘数

0-127*T0 即 0-15.875us.

2)步长为2T0(125ns),乘数范围是64-127,此时得出的范围是:步长 x 乘数

128-254*T0 即16us-31.75us.

3)步长为8T0(125ns),乘数范围是32-63,此时得出的范围是:步长 x 乘数

256-504*T0 即 32us-63us.

4)步长为16T0(125ns),乘数范围是0-127,此时得出的范围是:步长 x 乘数

512-1008*T0 即 64us-126us.

需要配置的死区时间在哪种情况的范围内,则是哪一种情况。

第三步,

1)如果是情况1,可以直接用需要配置的死区时间除以步长T0,就是需要填入DeadTime那一栏的DTG寄存器的值.

因为情况1的步长值为0,乘数位置为DGT[6:0],那么其合在一起还是看DGT[6:0]的大小,所以可以直接使用需要配置的死区时间除以步长T0。

DTG = \frac{Dead Time}{T0}

2)如果是情况二,其步长值为二进制10

公式为:(64+DTG[5:0])\otimes 2T0=DeadTime(此处的DeadTime和配置处需要填入的不一样,配置处填入的是寄存器数值,这里的是期望的死区时间)

解出DTG[5:0]的值,将其转化为二进制,与 前面的步长值10拼在一起。

例如DTG[5:0]为31,其二进制就是011111,合在一起后就是10011111即159.

所以需要填入DeadTime的值就是159,就是这一栏Dead Time所需要填入的数值。

3)如果是情况三,其步长值为二进制110

同理,解出DTG[4:0]的值,将其转化为二进制,与 前面的步长值110拼在一起。

公式为:(32+DTG[4:0])\otimes 8T0=DeadTime

4)如果是情况四,其步长值为二进制111

同理,解出DTG[4:0]的值,将其转化为二进制,与 前面的步长值111拼在一起。

公式为:(32+DTG[4:0])\otimes 16T0=DeadTime

主要思想就是把DTG寄存器拆成两部分,前面的部分决定步长(取0、10、110、111),后面的部分为DTG的值,两者拼在一起就是DeadTime处需要填入的数值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/434790.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串逆序

字符串逆序,面试常考点,由于实现思路很容易,面试官也通常会让你使用多种解法实现,并手写c伪代码,其中每种解法的时空复杂度都要很清楚,能够分析,尤其是最后一种递归实现属于比较进阶的思维了&am…

基于Python大数据的B站热门视频的数据分析及可视化系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

遗传算法与深度学习实战——使用进化策略实现EvoLisa

遗传算法与深度学习实战——使用进化策略实现EvoLisa 0. 前言1. 使用进化策略实现 EvoLisa2. 运行结果相关链接 0. 前言 我们已经学习了进化策略 (Evolutionary Strategies, ES) 的基本原理,并且尝试使用 ES 解决了函数逼近问题。函数逼近是一个很好的基准问题&…

【Git】克隆主项目,并同时克隆所有子模块

子模块 带有箭头的文件夹(relaxed_ik_core)通常表示这是一个 Git 子模块(submodule)。Git 子模块是一种嵌入式的 Git 仓库,它允许你在一个仓库中引用其他的 Git 仓库。换句话说,relaxed_ik_core 不是这个项…

基于python+spark的外卖餐饮数据分析系统设计与实现(含论文)-Spark毕业设计选题推荐

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

YOLOv8 Windows c++推理

#添加一个**yolov8\_。onx **和/或**yolov5\_。Onnx **模型(s)到ultralytics文件夹。 #编辑**main.cpp**来改变**projectBasePath**来匹配你的用户。#请注意,默认情况下,CMake文件将尝试导入CUDA库以与opencv dnn (cuDNN) GPU推理一起使用。 #如果你的Op…

在matlab中Application Compiler后的软件无法打开

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

怎么给儿童掏耳朵比较安全?5款安全的儿童掏耳勺!

儿童的耳部娇嫩,在为其掏耳朵时需格外谨慎。市面上的传统耳勺存在诸多风险,稍不注意会刮伤儿童的耳道肌肤。在此建议家长们为孩子选用儿童专用可视挖耳勺。这种挖耳勺能够让家长清晰地看到孩子耳道内的情况,从而更加安全、精准地为孩子清理耳…

React 启动时webpack版本冲突报错

报错信息: 解决办法: 找到全局webpack的安装路径并cmd 删除全局webpack 安装所需要的版本

Docker Desktop 安装Centos 7.9 使用yum install不可用问题

安装centos镜像并run之后,使用yum install 命令安装出现如下错误,可使用此命令替换mirror。 报错信息: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archaarch64&repoos&infracontainer error was…

2015年国赛高教杯数学建模B题互联网+时代的出租车资源配置解题全过程文档及程序

2015年国赛高教杯数学建模 B题 互联网时代的出租车资源配置 出租车是市民出行的重要交通工具之一,“打车难”是人们关注的一个社会热点问题。随着“互联网”时代的到来,有多家公司依托移动互联网建立了打车软件服务平台,实现了乘客与出租车司…

Spring-bean实例化的方式

前言 什么是bean的实例化? 通常我们使用spring管理java的对象,一般称这个java对象为一个实例化的bean。bean的实例化方式,实际上就是spring创建并管理java对象实例的方式 bean的实例化方式 在Java和Spring框架的上下文中,Bean的实…

医院安保巡更管理应用二维码无纸化巡更方式

医院安保巡查是维护医院秩序安全的重中之重,在确保医院的安全运行,预防和减少安全事故的发生。通过定期的安全巡查,可以及时发现和解决潜在的安全隐患,保障医护人员和患者的安全。例如:‌安全疏散通道、‌监控设备‌、…

ACDsee简体中文版网盘资源下载(含教程)

如大家所熟悉的,ACDSee是一款集看图、编辑和管理于一体的软件,其凭借着打开速度快、管理功能强、操作界面友好简单等等优势,广受用户的喜欢。目前最新为ACDSee 2024版本。 一、文件管理 ACDSee数据库在文件管理方面表现出色。它可以帮助用户…

四气两尘监测站中空气质量传感器推荐

在快速发展的工业化进程中,空气质量已成为衡量一个地区环境健康水平的重要指标。随着公众环保意识的增强,对空气质量的关注不再局限于直观的蓝天白云,而是深入到更为细微、复杂的污染物层面,其中,“四气两尘”便是这一…

操作平台使用中应每月不少于几次定期检查?

在当今数字化时代,操作平台作为企业与个人日常运营的核心载体,其稳定性和安全性直接关系到业务的高效运行与数据的严密保护。因此,定期进行操作平台的检查与维护,成为了不可忽视的重要环节。特别是,确保每月进行不少于…

JAVA的版本

Java的版本开始还正常:1.0 ->1.1 顺序增加,到了2004年,不知什么原因1.5又有了新的平行名字5,这样Java 1.6对应Java6,一直到Java1.8 对应 Java8,然后到在2017年彻底没了Java1.9,只有Java9了。好吧这可以忍…

【初阶数据结构】排序——选择排序

目录 前言选择排序堆排序 前言 对于常见的排序算法有以下几种: 下面这节我们来看选择排序算法。 选择排序 基本思想:   每一次从待排序的数据元素中遍历选出最大(或最小)的元素放在序列的起始位置,直到全部待排序…

828华为云征文 | 使用 Memtester 对华为云 X 实例进行内存性能测试

目录 前言 1 华为云X实例介绍 2 Memtester 简介 2.1 什么是Memtester 2.2 安装 Memtester 3 测试方案设计 3.1 测试目标 3.2 测试环境 3.3 测试命令 4 测试数据及性能分析 4.1 带宽测试结果 4.2 延迟测试结果 5 性能瓶颈与优化建议 6 总结 前言 在云计算的应用场…

从0学习React(2)

经过上一篇的文章,对index.tsx文件的每行代码进行了一个简单的分析之后,我大概对React有了一个简单的了解。虽然也是一知半解,但是起码在心里已经对React有了一个基本的概念。这篇文章,我就讲一下关于React中index.tsx的大致框架。…