simulink仿真adc采样和epwm输出基础知识讲解

2023-11-20

F28027

在这里插入图片描述
12位ADC
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2的y次方,tbclk 计数时钟的频率
在这里插入图片描述
tprd 一个周期内记得个数 ÷ 1/tbclk 每次计一个数的时间 =一个pwm周期的时间
pwm的周期
在这里插入图片描述
时基计数器 CRT---------计数时钟由系统时钟分频来的,
比较寄存器 CMR-------------决定占空比
周期寄存器 PRD
载波+基准波
载波-------是指寄存器工作模式 up down up-down
计数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

epwm实现spwm输出


       F2802X 的EPWM 模块内部由8 个小模块组成,这8 个模块可以相互配合,
       产生符合要求的PWM波形。其实,但是只需要利用TB(Time—base)、
       CC(Counter-compare)、AQ(Action-qualifier)
        这三个子模块就能产生实验所需要的PWM 波形。
       先给初学者回顾一下SPWM:所谓SPWM,就是在PWM 的基础上改变了调制脉冲方式,
       脉冲占空比在时间轴上按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输出。
       它广泛用于直流交流逆变器、电机细分等。具体实现方法为,
       用软件计算出按正弦规律变换的值,
       比如计算出64 个点的值,定时向CMPA 发送计算出来的变化值,
       发送完64 次后,完成了一个周期的正弦波输出,定时发送的时间由TBPRD 决定
       。那计算出来的正弦波周期为TBPRD*64。

#include "DSP28x_Project.h"   
#define PWM1_INT_ENABLE  1    
/**Description  ** 全局变量定义*/
volatile Uint16 temp;
int16 *sin_ptr = (int16 *)0x3fe001;//
//解释"int16 *sin_ptr = (int16 *)0x3fe001;"在 F2802X 的ROM 区域中,包含有产生正弦波和余弦波各512 点的数据表,存储空间 0X3FE000 开始,具体的存储空间可以参考它的数据手册。
/*Description  ** 函数定义*/
void InitEPwmTimer(void);              // EPWM模块初始化程序
void update_compare(void);             // 比较值定义
interrupt void epwm1_timer_isr(void);  // 中断服务程序

void main(void)
{
   InitSysCtrl();                      // 系统初始化函数
   InitEPwm1Gpio();                    // EPWM端口初始化
   DINT;                               // 关闭CPU中断
   InitPieCtrl();                      // PIE中断控制
   IER = 0x0000;                       // 关闭中断使能
   IFR = 0x0000;                       // 清除中断标志位
   InitPieVectTable();
   EALLOW;  
   PieVectTable.EPWM1_INT = &epwm1_timer_isr;//中断函数入口
   EDIS;                               // 赋值中断函数地址
   InitEPwmTimer();                    // 初始化EPWM模块

   IER |= M_INT3;                      // 使能CPU级第三组中断
   PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE;
                                       // 使能PIE3.1
   EINT;                                // 使能全局中断
   ERTM;                                // 
   for(;;)
   {
       asm("          NOP");
   }
}

/*EPWM模块初始化函数*/
void InitEPwmTimer()
{
   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;        // 停止TB计数
   EDIS;
   EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;  
   EPwm1Regs.TBCTR = 0x0000;                     // 清除TB计数器
   EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;      // 系统时钟分频
   EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
   EPwm1Regs.TBCTL.bit.PHSEN = 0;
   EPwm1Regs.TBPHS.half.TBPHS = 0;
  
   EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
   EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
   EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
  
   EPwm1Regs.CMPA.half.CMPA = 0;                 // 
   EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;            // 
   EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;          // 
   EPwm1Regs.TBPRD = 512;
   EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;    // 增计数模式
   EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;     // 中断使能选择
   EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE;  // 使能中断
   EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;           // 

   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;         // TB时钟计数
   EDIS;

}


/*sina值更新函数*/
//主要更新CPMA的值
void update_compare()
{
       temp =   (((Uint16)((*sin_ptr)+16384))>>6);
    EPwm1Regs.CMPA.half.CMPA = temp; 
    if(temp > 1024)
    {
         asm("   ESTOP0");
    }  
                   
    sin_ptr += 8;
    if(sin_ptr >= (int16 *)0x3fe401) 
    {
      sin_ptr = (int16 *)0x3fe001;
    }
}


/*epwm1中断服务程序*/
//c2000的中断函数都要用“inerrupt”申明
interrupt void epwm1_timer_isr(void)
{
   update_compare();
   EPwm1Regs.ETCLR.bit.INT = 1;
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

simulink仿真adc采样和epwm输出基础知识讲解 的相关文章

  • vue3.0删除node_modules 无用的依赖

    安装插件 npm i depcheck 查看无用的插件 npx depcheck 对应删除 npm uninstall kd layout
  • C++/C++11中变长参数的使用

    C C 11中的变长参数可以应用在宏 函数 模板中 1 宏 在C99标准中 程序员可以使用变长参数的宏定义 变长参数的宏定义是指在宏定义中参数列表的最后一个参数为省略号 而预定义宏 VA ARGS 则可以在宏定义的实现部分替换省略号所代表的
  • docker 安装tomcat遇到问题

    docker 安装 tomcat 启动 tomcat docker pull tomcat 8 默认启动 docker run d p 7788 8080 tomcat 8 进入容器 docker exec it 541d6c30c295
  • Spring源码分析refresh()第二篇

    invokeBeanFactoryPostProcessors方法 这个方法比较重要 实例化和调用所有已注册的BeanFactoryPostProcessor bean 如果有已经注入的BeanFactoryPostProcessor 则优
  • JavaScript 高级应用第一弹

    文章目录 Gorit 带你学全栈 JavaScript 高级应用 第一弹 一 数组篇 1 1 展开表达式 1 2 返回一个新数组 1 2 1 map 1 2 2 filter 1 2 3 concat 1 3 索引相关问题 1 4 返回 b
  • Qt 中遇到QLabel::setPixmap() 设置图片不起作用(图片被替换后还是显示替换前的图片)解决方法

    1 问题 当使用下面的命令设置图片后 第一次会成功显示图片 当我删除当前图片后并且用另一张图片重命名成先前删除的图片时 再次刷新显示还是先前删除的图片资源 重启软件又正常显示修改后的图片 ui gt label gt setPixmap Q
  • 3.[mybatis]的查询源码分析(执行流程、缓存、整合spring要点)

    目录 1 装饰器模式 2 sqlSession的创建 open 2 1 newExecutor 3 selectOne分析 3 1 二级缓存 3 2 一级缓存 4 数据库查询核心分析 queryFromDatabase 4 1 Simple
  • Wave x Incredibuild

    Wave 公司简介 Wave 是一家虚拟娱乐公司 致力于帮助艺术家和粉丝通过协作创造出世界上最具互动性的现场表演体验 Wave 整合了最顶尖的现场音乐 游戏和广播技术 将现场音乐表演转化为沉浸式虚拟体验 便于观众通过 YouTube Twi
  • java 模拟库存管理系统

    本案例要求编写一个程序 模拟库存管理系统 该系统内容主要包括 商品入库 商品显示 和删除商品功能 此程序用手机举例 此管理系统分别为两个类Phone 和Test类 Phone类 确定四个变量 类 1 生成空参数构造方法 2 全部参数的构造方
  • 经典的期货量化交易策略大全(含源代码)

    1 双均线策略 期货 双均线策略是简单移动平均线策略的加强版 移动平均线目的是过滤掉时间序列中的高频扰动 保留有用的低频趋势 它以滞后性的代价获得了平滑性 比如 在一轮牛市行情后 只有当价格出现大幅度的回撤之后才会在移动平均线上有所体现 而
  • 引介

    转载自 https ethfans org posts rlp encode and decode RLP编码和解码 RLP Recursive Length Prefix 递归的长度前缀 是一种编码规则 可用于编码任意嵌套的二进制数组数据
  • sqli-labs第26~28关

    第26关 查看源码 黑名单 过滤了 or and 空格 s 代表正则表达式中的一个空白字符 可能是空格 制表符 其他空白 即 s 用于匹配空白字符 我们常见的绕过空格的就是多行注释 但这里过滤了 不太行啊 将空格 or and 等各种符号过
  • [设计模式]模板方法模式(Template Method)

    1 意图 定义一个操作中的算法的骨架 而将一些步骤延迟到子类中 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 2 动机 其实就是如意图所描述的 算法的骨架是一样的 就是有些特殊步骤不一样 就可以
  • java一行代码实现RESTFul接口

    一 介绍spring data rest Spring Data REST是基于Spring Data的repository之上 可以把 repository 自动输出为REST资源 目前支持 Spring Data JPA Spring
  • vue3 vue-router 钩子函数

    全局路由守卫 vue router4 0中将next取消了 可写可不写 return false取消导航 undefined或者是return true验证导航通过 router beforeEach to from gt next是可选参
  • 大数据案例--电信日志分析系统

    目录 一 项目概述 1 概述 二 字段解释分析 1 数据字段 2 应用大类 3 应用小类 三 项目架构 四 数据收集清洗 1 数据收集 2 数据清洗 五 Sqoop使用 1 简介 2 Sqoop安装步骤 3 Sqoop的基本命令 六 数据导
  • 静态时序分析的三种分析模式(简述)

    经过跟行业前辈的探讨和参考一些书籍 本文中的 个人理解 部分有误 即 个人理解 在一个库中 尽管电路器件单元已经被综合映射 但是工具可以通过改变周围的环境来得到不同的单元延时 所以即使是同一个库 调用工艺参数不一样的情况下 其单元延时是不同

随机推荐

  • 黑客零基础入门方法有哪些?如何自学黑客技术?

    大家经常问我一个问题 黑客零基础入门方法有哪些 以及如何自学黑客技术 首先要说的是世界上大部分的网络黑客都是自学成才的 这与黑客这门技术有很大的原因 黑客是一个靠兴趣驱动的技术 大部分成为黑客的人一开始都是被黑客的酷炫身份所吸引从而成为黑客
  • PyTorch中nn.Module类简介

    torch nn Module类是所有神经网络模块 modules 的基类 它的实现在torch nn modules module py中 你的模型也应该继承这个类 主要重载 init forward和extra repr函数 Modul
  • 数理统计知识整理——回归分析与方差分析

    题记 时值我的北科研究生第一年下 选学 统计优化 课程 备考促学 成此笔记 以谨记 1 线性回归 1 1 原理分析 要研究最大积雪深度x与灌溉面积y之间的关系 测试得到近10年的数据如下表 使用线性回归的方法可以估计x与y之间的线性关系 线
  • 9.用python写网络爬虫,完结

    前言 这是python网络爬虫的最后一篇给大家做个总结 且看且珍惜把 截止到目前 前几章本书介绍的爬虫技术都应用于一个定制网站 这样可以帮助我们更加专注于学习特定技巧 而在本章中 我们将分析几个真实网站 来看看这些技巧是如何应用的 首先我们
  • 使用Gradle命令查看项目中库的依赖关系

    在Terminal中 可以通过 gradle 的命令查看项目中所使用库的版本 并且可以更加直观看到库之间的依赖关系 同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题 Building Android apps dependencies
  • P1719 Let‘s play a game!

    include
  • 海外SD-WAN服务商助力企业快速发展

    随着全球化的推进 越来越多的企业开始涉足海外市场 面临着跨国网络建设的挑战 在这个过程中 SD WAN Software Defined Wide Area Network 技术得到了广泛应用 SD WAN通过软件定义网络和云技术 可以实现
  • SQL太慢如何进行优化

    1 慢SQL优化思路 慢查询日志记录慢SQL explain分析SQL的执行计划 profile 分析执行耗时 Optimizer Trace分析详情 确定问题并采用相应的措施 1 1 慢查询日志记录慢SQL 如何定位慢SQL呢 我们可以通
  • 大数据工具软件安装失败问题是怎么解决的

    大数据所要安装的软件 python 可以在python的官网下载最新的python程序 pycharm 很好用的一款python编译工具 Anaconda3 集成了很多的大数据工具在里边 出现的问题 不能成功安装python 提示缺少win
  • python 随机生成不重复的6位数_随机生成6位数、随机生成不重复的6位数

    随机生成一个几位数 这种比较常见的操作今天我们来看一下 例如随机生成6位数 直接来简单明了的吧 int num int Math random 9 1 100000 最终num就是需要的6位随机数 同理要是想得到随机的五位数和七位数呢 随机
  • 非常详尽的 Linux 中 WEB服务器配置与管理 (通过例子来讲解)

    Apache服务器的安装与启动 检查是否已经安装了APACHE并启动它 这是已安装好的状态 root root rpm qa grep httpd httpd tools 2 2 15 53 el6 x86 64 httpd 2 2 15
  • Blender相关学习笔记

    blender m idea mm 0 1 2 5 0 4 10 0 24 6 1 环选 alt 左键 2 分离 V 3 从两个边中创建面 选择两条 或多条 边 然后按F 4 复制 shift D 复制某一个模型 或部分 到另一个图层 编辑
  • 国际软件项目经理的七大素质

    国际软件项目经理的七大素质 1 在一个或多个应用领域内使用整合了道德 法律和经济问题的工程方法来设计合适的解决方案 2 懂得确定客户需求并将其转换成软件需求的过程 3 履行项目经理的职责 善于处理技术和管理方面的事务 4 懂得并使用有用的项
  • 人脸特征点检测

    CVPR2016刚刚落下帷幕 本文对面部特征点定位的论文做一个简单总结 让大家快速了解该领域最新的研究进展 希望能给读者们带来启发 CVPR2016相关的文章大致可以分为三大类 处理大姿态问题 处理表情问题 处理遮挡问题 1 姿态鲁棒的人脸
  • 描述性能测试工作中的完整过程?

    有简单接触 采用的工具是Jmeter 进行轻量级的压力测试 1 确定好压力测试的功能模块 首先用Jmeter录制脚本 然后对脚本进行优化 2 对一些数据进行参数化 利用CSV导入存在txt文档里面的数据 3 设计测试场景 4 执行压力测试
  • 如何在windows的DOS窗口中正常显示中文(UTF-8字符)

    打开CMD exe命令行窗口 通过 chcp命令改变代码页 UTF 8的代码页为65001 ANSI OEM 简体中文 GBK为936 window default OEM 美国为437 如果chcp命令得到437 那么一定不能显示中文 此
  • 无法安装vmnet8虚拟网络适配器、vmware network editor未响应、注册失败,请检查账号数据库配置是否正确的解决

    文章目录 虚拟网络适配器安装 vmware network editor未响应 注册失败 请检查账号数据库配置是否正确的解决 关于第一次安装虚拟机的 全文约 423 字 预计阅读时长 2分钟 虚拟网络适配器安装 vmware network
  • rol/ror in c++

    template
  • 20天拿下华为OD笔试之【BFS】2023Q1A-微服务的集成测试【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解

    BFS 2023Q1A 微服务的集成测试 题目描述与示例 题目描述 现在有 n 个容器服务 服务的启动可能有一定的依赖性 有些服务启动没有依赖 其次服务自身启动加载会消耗一些时间 给你一个 nxn 的二维矩阵 useTime 其中 useT
  • simulink仿真adc采样和epwm输出基础知识讲解

    F28027 12位ADC 2的y次方 tbclk 计数时钟的频率 tprd 一个周期内记得个数 1 tbclk 每次计一个数的时间 一个pwm周期的时间 pwm的周期 时基计数器 CRT 计数时钟由系统时钟分频来的 比较寄存器 CMR 决