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.rhkb.cn/news/358011.html

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

相关文章

java实现分类下拉树,点击时对应搜索---后端逻辑

一直想做分类下拉,然后选择后搜索的页面,正好做项目有了明确的需求,查找后发现el-tree的构件可满足需求,数据要求为:{ id:1, label:name, childer:[……] }形式的,于是乎,开搞! 一…

Golang | Leetcode Golang题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; const L 10 var bin map[byte]int{A: 0, C: 1, G: 2, T: 3}func findRepeatedDnaSequences(s string) (ans []string) {n : len(s)if n < L {return}x : 0for _, ch : range s[:L-1] {x x<<2 | bin[byte(ch)]}cnt : map[int]in…

文件创建与查看

touch touch命令用于创建一个新的文件。 语法&#xff1a;touch Linux路径 其中路径可以是相对路径、绝对路径或者特殊路径符都可以。 改图展示了通过 touch test.txt 命令创建了一个 test.txt文件&#xff0c;其中深色的代表文件夹&#xff0c;白色的代表文件。 使用 ls -lh…

[MYSQL] 数据库基础

1.什么是数据库 从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据 以文件形式存储数据的缺点 文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便 为了解决上述问…

汽车IVI中控开发入门及进阶(二十九):i.MX6

前言: i.MX 6双/6Quad处理器集成多媒体应用处理器,是不断增长的多媒体产品系列的一部分,提供高性能处理,并针对最低功耗进行了优化。 i.MX 6Dual/6Quad处理器采用先进的quad-ArmCortex-A9内核,运行速度高达800 MHz,包括2D和3D图形处理器、1080p视频处理和集成电源管理。…

深入分析 Android BroadcastReceiver (六)

文章目录 深入分析 Android BroadcastReceiver (六)1. 广播机制的高级优化策略1.1 使用 Sticky Broadcast&#xff08;粘性广播&#xff09;示例&#xff1a;粘性广播&#xff08;过时&#xff0c;不推荐&#xff09; 1.2 使用 LiveData 和 ViewModel 进行组件通信示例&#xf…

潜艇伟伟迷杂交版植物大战僵尸2024最新免费安卓+ios苹果+iPad分享

嗨&#xff0c;亲爱的游戏迷们&#xff01;今天我要给你们种草一个超有趣的游戏——植物大战僵尸杂交版。这款游戏不仅继承了原有经典游戏的核心玩法&#xff0c;还加入了许多创新元素&#xff0c;让玩家能够体验到前所未有的乐趣。快来跟随我一起探索这个神奇的世界吧&#xf…

Android模拟器linux内核的下载,编译,运行,驱动开发测试

Android模拟器linux内核的下载&#xff0c;编译&#xff0c;运行&#xff0c;内核模块开发 1.下载适合Android模拟器的内核 git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git git branch -a git checkout android-goldfish-4.14-gchips 新建一个目录…

PriorityQueue详解(含动画演示)

目录 PriorityQueue详解1、PriorityQueue简介2、PriorityQueue继承体系3、PriorityQueue数据结构PriorityQueue类属性注释完全二叉树、大顶堆、小顶堆的概念☆PriorityQueue是如何利用数组存储小顶堆的&#xff1f;☆利用数组存储完全二叉树的好处&#xff1f; 4、PriorityQueu…

nvm安装

1、官网下载nvm压缩包 Releases coreybutler/nvm-windows (github.com)https://github.com/coreybutler/nvm-windows/releases 2、安装nvm cmd下查看nvm版本号 nvm version 3、配置镜像 在安装目录下找到settings.txt文件&#xff0c;追加淘宝镜像 node_mirror:https:/…

安卓逆向经典案例-XX谷

H5app逆向——XX谷 这里显示为真&#xff0c;说明app没有禁用WebView调试。 所以调试考虑 反编译出错利用字符串加密或者反射的方式去禁用调试 通过什么方式可以查找自己想frida hook的类&#xff1f; 在使用 Frida 进行逆向工程时&#xff0c;查找你想要 hook 的类和方法是…

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题&#xff1a;无限易pythonGo打开执行的时候报&#xff1a;“没有Qt平台插件可以初始化&#xff0c;请重新安装应用程序。”的错误&#xff0c;点击确定后无限易崩溃闪退。 二、解决问题&#xff1a; 1、重新安装依赖&#xff0c;打开CMD输入pip list&#xff0c;查…

day3-xss漏洞(米斯特web渗透测试)

day3-xss漏洞&#xff08;米斯特web渗透测试&#xff09; XSSXss种类三种反射型1.反射型xss2.存储型xss3.DOM型xss XSS Xss有一部分是前端的有一部分不是前端的&#xff0c;我们来看一下&#xff0c;昨天的HTML注入修复方法应灵活使用。 HTML注入是注入一段HTML&#xff0c;那…

2.超声波测距模块

1.简介 2.超声波的时序图 3.基于51单片机实现的代码 #include "reg52.h" #include "intrins.h" sbit led1P3^7;//小于10&#xff0c;led1亮&#xff0c;led2灭 sbit led2P3^6;//否则&#xff0c;led1灭&#xff0c;led2亮 sbit trigP1^5; sbit echo…

Qt利用Coin3D(OpenInventor)进行3d绘图

文章目录 1.安装1.1.下载coin3d1.2.下载quarter1.3.解压并合并 2.在Qt中使用3.画个网格4.加载wrl模型5.画个锤子并旋转6.加载自定义视口文件 1.安装 1.1.下载coin3d 首先&#xff0c;到官网下载[coin3d/coin] 我是Qt5.15.2vs2019的&#xff0c;因此我选择这个coin-4.0.2-msvc…

视频监控平台:支持交通部行业标准JT/T905协议(即:出租汽车服务管理信息系统)的源代码的函数和功能介绍及分享

目录 一、视频监控平台介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;视频接入能力介绍 &#xff08;三&#xff09;功能介绍 二、JT/T905协议介绍 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;主要内容 1、设备要求 2、业务功能要求…

Pikachu靶场--CRSF

借鉴参考 CSRF跨站请求伪造&#xff08;CTF教程&#xff0c;Web安全渗透入门&#xff09;_bilibili pikachu靶场CSRF之TOKEN绕过_csrf token绕过的原理-CSDN博客 CSRF(get) 发现需要登录 查看提示&#xff0c;获取username和password 选择一个用户进行登录 选择修改个人信息 …

Docker定位具体占用大量存储的容器

监控告警生产环境的服务器磁盘分区使用率大于90%&#xff0c;进入服务器查看Docker 的 overlay2 存储驱动目录中占用很大&#xff0c;很可能是某个容器一直在打印日志&#xff0c;所以需要定位到是哪个容器&#xff0c;然后进行进一步排查。 然后进入到overlay2中查看是哪个目录…

kotlin函数

1、函数定义 // 下边定义了main函数 fun main() {} 2、函数的类型 // foo函数定义 fun foo () {} // 对应无参类型 () -> Unit fun foo (a: Int):String {} // 对应有参类型 (Int) -> String 3、函数的引用 函数的引用类似C语言中的函数指针&#xff0c;可用于函数传…

基于JSP的“塞纳河畔左岸”的咖啡馆管理系统

开头语&#xff1a; 塞纳河畔左岸的咖啡&#xff0c;我手一杯品尝的你美~ 哎哟&#xff0c;不错哦&#xff01;我们今天来介绍一下咖啡馆管理系统&#xff01; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果你对咖啡馆管理系统感兴趣或有相关需求&#xff0c;欢迎联…