STM32上实现spwm调制原理分析

在STM32微控制器上实现SPWM(正弦脉宽调制,Sinusoidal Pulse Width Modulation)调制的核心是利用高频载波(三角波)与低频基波(正弦波)作比较得出。

那么在STM32里三角波和正弦波分别是什么,从哪里来?

从下图可看出

 三角波是定时器计数值按时间的变化,方波是输出的PWM波。改变CCR就可以改变脉冲宽度,那么当CCR值按正弦变化就实现了SPWM调制。

定时器的计数值就是三角波。正弦波就是按正弦变化的CCR值。

比如我们要一个50HZ的正弦波,三角波频率20KHZ。可以知道一个正弦波里包含400个三角波,而一个三角波要与正弦波比较两次,所以我们需要800个CCR值。当然,我们不追求精度,可以让一个三角波的两次比较值都一样,也就是400个CCR值。甚至可以两次三角波的比较CCR都一样,这样就只需要200个CCR了,当然这么做会损失一些精度。最好的情况当然是三角波频率足够高,比较值也足够多。常见的CCR获取方式有两种,

查表法(空间换时间)
早期的单片机由于运算性能不行,所以是先把这些CCR值存储在ROM里(RAM也行)做正弦波码表。然后这个码表可以在一些软件里生成,如图,也可以自己提前算好。


有了码表,我们只需要每次计数器计到CCR触发中断时把CCR值更新就行了。

定时器中断运算
使用码表是因为运算性能不够,而stm32运算性能足够(使用dsp库,用C库的函数还是算起来有些慢的),可以自己去算正弦值。大致思路就是开一个定时器,每次进定时器中断的时间相同,累加就能得到时间.然后在定时器中断里计算sin(wt)。

总结

调制的过程涉及多个步骤,主要包括生成正弦波表、配置定时器生成PWM信号、以及通过中断或DMA更新PWM占空比。通过以上步骤,可以实现STM32上的SPWM调制,从而产生一个周期性变化的PWM信号,其占空比按照正弦函数变化,最终输出一个平滑的正弦波形。

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

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

相关文章

YzmCMS内核简约风非常不错的博客自媒体主题模板

本次发布的“Eric”主题模版文件中,已移除默认模版中一些非必要的模版,仅保留一些通用模版(首页、频道页、列表页、资源列表页、内容页、关于我/单页等),当前模版主题中提供的模版文件已经能够满足大部分网站使用。 YzmCMS内核简约风非常不错…

Java数据结构4-链表

1. ArrayList的缺陷 由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景…

明明设置允许跨域,为什么还会出现跨域请求的问题

一、问题 在微服务项目中,明明已经设置允许跨域访问: 为什么还会出现跨域请求问题? 二、为什么 仔细查看错误提示信息:When allowCredentials is true, allowedOrigins cannot contain the special value "*" since t…

Cesium如何高性能的实现上万条道路的流光穿梭效果

大家好,我是日拱一卒的攻城师不浪,专注可视化、数字孪生、前端、nodejs、AI学习、GIS等学习沉淀,这是2024年输出的第20/100篇文章; 前言 在智慧城市的项目中,经常会碰到这样一个需求:领导要求将全市的道路…

Jenkins定时构建自动化(二):Jenkins的定时构建

目录 ​编辑 一、 jenkins定时构建语法: 1. 语法规则: 2. 常见用法举例 3. 再次举例 接上一篇:Jenkins定时构建自动化(一):Jenkins下载安装配置:Jenkins定时构建自动化(一):Jenkins下载安装配置-CSDN博客 …

常见的LED显示屏拼接优缺点解析

LED显示屏拼接技术在现代显示技术中占据了重要地位。随着市场需求的不断增长,各种拼接屏技术也不断发展,每种技术都有其独特的优势和不足。本文将详细解析常见的几种拼接屏技术,包括LED显示屏拼接、投影DLP拼接和等离子PDP拼接。 LED显示屏拼…

STM32CubeIDE提示找不到头文件(No such file or directory)的解决办法

0 前言 最近在使用STM32CubeIDE时,发现为工程添加了头文件路径,但编译的时候还是报错,提示找不到头文件: 1 解决办法 1.1 为工程添加头文件路径 右键我们的工程,然后添加头文件路径(最好是相对路径&am…

秋招突击——第八弹——Redis是怎么运作的

文章目录 引言正文Redis在内存中是怎么存储的面试重点 Redis是单线程还是多线程面试重点 内存满了怎么办?面试重点 持久化介绍面试重点 RDB持久化面试重点 AOF日志面试重点 总结 引言 差不多花了两天把redis给过了,早上也只背了一半,完成回去…

如何发现Redis热Key,有哪些解决方案?

什么是 hotkey? 如果一个 key 的访问次数比较多且明显多于其他 key 的话,那这个 key 就可以看作是 hotkey(热 Key)。例如在 Redis 实例的每秒处理请求达到 5000 次,而其中某个 key 的每秒访问量就高达 2000 次&#x…

Linux基础二

目录 一,tail查看文件尾部指令 二,date显示日期指令 三,cal查看日历指令 四,find搜索指令 五,grep 查找指令 六,> 和>> 重定向输出指令 七, | 管道指令 八,&&逻辑控…

Android开发神器:OkHttp框架源码解析

NetworkInterceptors CallServiceInterceptor 1.RealInterceptorChain.proceed() 2.EventListener.callStart()也是在RealCall.execute()嵌入到Request调用过程, EventListener.callEnd()位于StreamAllocation中调用 3.Request.Builder url (String/URL/HttpUrl) header …

Linux常用

很早以前的 ls: 查看文件夹内所有文件 rz: windows的文件传到linux服务器 sz filename: 将文件下载到windows本地 ctrlinsert:复制 shiftinsert:粘贴 ctrlD:退出spark-shell 运行脚本并输出日志 nohup sh filename.sh > log.log 2>&1 & 查看日…

STM32玩转物联网07-WIFI实验

前言 上一节我们学习了串口的简单使用,本节我们增加难度,做一个demo通过AT指令控制ESP8266,使用DMA方式接收ESP8266发来的数据,后续我们便开始通过ESP8266连接物联网云平台,敬请关注。 一、准备 1. ESP8266硬件准备 准…

在C++中,构造器(Builder)模式的思考(《C++20设计模式》及常规设计模式对比)

文章目录 一、前言二、为什么需要Builder Pattern,Builder Pattern到底解决了什么实际问题?为什么不用set()方法?2.1 初学者有那些对象的属性初始化方法呢?2.1.1 构造函数的弊端2.1.1.1 对于属性的初始化只能是固定的顺序 2.1.2 用set()函数初…

兰州理工大学24计算机考研情况,好多专业都接受调剂,只有计算机专硕不接收调剂,复试线为283分!

兰州理工大学(Lanzhou University of Technology),位于甘肃省兰州市,是甘肃省人民政府、教育部、国家国防科技工业局共建高校,甘肃省高水平大学和“一流学科”建设高校;入选国家“中西部高校基础能力建设工…

redis主从复制、哨兵、集群

在实际的生活环境中,如果只使用一个redis进行读写操作,那么面对庞大的访问人群是崩溃的,所以可以有几个redis,一个用来做主机,提供修改数据操作,而这个主机用来控制其他redis,即将更新的发送&am…

Windows程序设计课程作业-3(文件并发下载)

目录 目录 1.作业内容 2.作业要求 3.主要思路 1)窗体和组件初始化 2)下载管理器实例化 3)按钮点击事件处理 4)窗体加载事件处理 5)下载消息处理 4.主要难点 1)多线程管理: 2&#xff09…

材料科学SCI期刊,中科院3区,收稿范围广,易录用

一、期刊名称 International Journal of Material Forming 二、期刊简介概况 期刊类型:SCI 学科领域:材料科学 影响因子:2.4 中科院分区:3区 三、期刊征稿范围 该杂志发表和传播材料成型领域的原创研究。该研究应构成对材料…

理解广角镜头的视野和畸变

为什么广角镜头的视野会比长焦镜头的视野大呢? 我之前用等光程解释了景深,也解释了为什么焦距越远,成像越大,但是从来没有提到过视野范围这个概念。实际上在我之前建立的数学模型中,物曲面S是无限大的,像曲…

Chromium 调试指南2024 - 远程开发(下)

1. 引言 在《Chromium 调试指南2024 - 远程开发(上)》中,我们探讨了远程开发的基本概念、优势以及如何选择合适的远程开发模式。掌握了这些基础知识后,接下来我们将深入了解如何在远程环境中高效地进行Chromium项目的调试工作。 …