TI DSP TMS320F280025 Note17:CMPSS原理与使用

TMS320F280025 模数转换器(ADC)


`

文章目录

  • TMS320F280025 模数转换器(ADC)
  • CMPSS框图
  • 比较器参考
  • 斜坡发生器
  • 滤波器
  • 比较器应用
    • CMPSSDriver.c
    • CMPSSDriver.h
  • EPWM与CMPSS配合使用信号流程
    • EPWMDriver.c
    • EPWMDriver.h


CMPSS框图

在这里插入图片描述

所谓比较器,正端输入大于负端输入时,输出高;正端输入小于负端输入时,输出低
负端输入通过设置寄存器可选则对应接口,或者内部参考
内部参考可选择是DACHVALS还是斜坡发生器
内部参考电压VDDA或VDAC
负端输入电压为: 内部参考电压 * DACHVALS / 4096
比较器输出可以直接作为CMPSS输出输出,也可以进行滤波/同步再输出
CMPSS模块只是输出一个高或低的信号,这个信号都是通过XBAR模块传输到其他外设的

比较器参考

在这里插入图片描述

内部参考电压VDDA或VDAC
负端输入电压为: 内部参考电压 * DACHVALS / 4096

斜坡发生器

斜坡发送器能让我们的比较器负端输入递减,实现特定需求的功能
在这里插入图片描述

滤波器

滤波器其实就是if else功能
在这里插入图片描述

比较器应用

CMPSSDriver.c

/*
 * CMPSSDriver.c
 *
 *  Created on: 2024年8月13日
 *      Author: Paranoid
 */
#include "main.h"



void CMPSS1Driver_Init(void)
{
   
    EALLOW;
    //
    // Analog PinMux for A2/C9
    // AIO -> Analog mode selected
    GpioCtrlRegs.GPHGMUX1.bit.GPIO224 = 0;
    GpioCtrlRegs.GPHMUX1.bit.GPIO224 = 0;
    GpioCtrlRegs.GPHINV.bit.GPIO224 = 0;
    GpioCtrlRegs.GPHAMSEL.bit.GPIO224 = 1;
    EDIS;


    EALLOW;
    //
    // Select the value for CMP1HPMXSEL./Select the value for CMP1LPMXSEL.
    //

    AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL = 0;
    AnalogSubsysRegs.CMPLPMXSEL.bit.CMP1LPMXSEL = 0;
    EDIS;

    EALLOW;
    //
    // Sets the configuration for the high comparator.
    // Sets the configuration for the low comparator.

    Cmpss1Regs.COMPCTL.bit.COMPHSOURCE = 0;
    Cmpss1Regs.COMPCTL.bit.COMPHINV = 0;
    Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 0;
    Cmpss1Regs.COMPCTL.bit.COMPLSOURCE = 0;
    Cmpss1Regs.COMPCTL.bit.COMPLINV = 0;
    Cmpss1Regs.COMPCTL.bit.ASYNCLEN = 0;
    EDIS;

    //
    // Sets the configuration for the internal comparator DACs.
    EALLOW;
    Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL = 0;
    Cmpss1Regs.COMPDACCTL.bit.SELREF = 0;
    Cmpss1Regs.COMPDACCTL.bit.DACSOURCE = 0;
    EDIS;

    //
    // Sets the value of the internal DAC of the high comparator.
    //Sets the value of the internal DAC of the low comparator.
    EALLOW;
    Cmpss1Regs.DACHVALS.bit.DACVAL = 2048U;
    Cmpss1Regs.DACLVALS.bit.DACVAL = 0U;
    EDIS;

    //
    //  Configures the digital filter of the high comparator.
    //
    EALLOW;
    Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN = 0;
    Cmpss1Regs.CTRIPHFILCTL.bit.THRESH = 0;
    Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0;
    EDIS;

    //
    // Configures the digital filter of the low comparator.
    //
    EALLOW;
    Cmpss1Regs.CTRIPLFILCTL.bit.SAMPWIN = 0;
    Cmpss1Regs.CTRIPLFILCTL.bit.THRESH = 0;
    Cmpss1Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 0;
    EDIS;

    //
    // Sets the output signal configuration for the high comparator.
    //
    EALLOW;
    Cmpss1Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
    Cmpss1Regs.COMPCTL.bit.CTRIPHSEL = 0;
    EDIS;

    //
    // Sets the output signal configuration for the low comparator.
    //
    Cmpss1Regs.COMPCTL.bit.CTRIPOUTLSEL = 0;
    Cmpss1Regs.COMPCTL.bit.CTRIPLSEL = 0;
    EDIS;

    //
    // Sets the comparator hysteresis settings.
    //
    EALLOW;
    Cmpss1Regs.COMPHYSCTL.bit.COMPHYS = 0U;
    EDIS;

    //
    // Configures the comparator subsystem's ramp generator.
    //
    EALLOW;
    Cmpss1Regs.COMPDACCTL.bit.RAMPSOURCE = 0;
    Cmpss1Regs.COMPDACCTL.bit.RAMPLOADSEL = 1;
    Cmpss1Regs.RAMPMAXREFS = 0;
    Cmpss1Regs.RAMPDECVALS = 0;
    Cmpss1Regs.RAMPDLYS.bit.DELAY = 0;
    EDIS;

    //
    // Disables reset of HIGH comparator digital filter output latch on PWMSYNC
    // Disables reset of LOW comparator digital filter output latch on PWMSYNC
    EALLOW;
    Cmpss1Regs.COMPSTSCLR.bit.HSYNCCLREN = 0;
    Cmpss1Regs.COMPSTSCLR.bit.LSYNCCLREN = 0;
    EDIS;

    //
    // Sets the ePWM module blanking signal that holds trip in reset.
    // Disables an ePWM blanking signal from holding trip in reset.
    EALLOW;
    Cmpss1Regs.COMPDACCTL.bit.BLANKSOURCE = 0;
    Cmpss1Regs.COMPDACCTL.bit.BLANKEN = 0;
    EDIS;

    //
    // Configures whether or not the digital filter latches are reset by PWMSYNC
    //
    EALLOW;
    Cmpss1Regs.COMPSTSCLR.bit.HSYNCCLREN = 0;
    Cmpss1Regs.COMPSTSCLR.bit.LSYNCCLREN = 0;
    EDIS;

    //
    // Enables the CMPSS module.
    //
    EALLOW;
    Cmpss1Regs.COMPCTL.bit.COMPDACE = 1;
    EDIS;

    //
    // Delay for CMPSS DAC to power up.
    //
    DEVICE_DELAY_US(500);



    EALLOW;
    GpioCtrlRegs.GPAGMUX2.bit.GPIO24 = 0;
    GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1;
    EDIS;

    EALLOW;
    OutputXbarRegs.OUTPUTLATCHENABLE.bit.OUTPUT1 = 0;
    OutputXbarRegs.OUTPUTINV.bit.OUTPUT1 = 0;
    //
    //Mux configuration
    //
    OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX0 = 1;
    EDIS;


}


void CMPSS2Driver_Init(void)
{
   

    // Analog PinMux for A10/c10
    // AIO -> Analog mode selected
    EALLOW;
    GpioCtrlRegs.GPHGMUX1.bit.GPIO230 = 0;
    GpioCtrlRegs.GPHMUX1.bit.GPIO230 = 0;
    GpioCtrlRegs.GPHINV.bit.GPIO230 = 0;
    GpioCtrlRegs.GPHAMSEL.bit.GPIO230 = 1;
    EDIS;



    //
    // Select the value for CMP1HPMXSEL./Select the value for CMP1LPMXSEL.
    //
    EALLOW;
    AnalogSubsysRegs.CMPHPMXSEL.bit.CMP2HPMXSEL = 3;
    AnalogSubsysRegs.CMPLPMXSEL.bit.CMP2LPMXSEL = 3;
    AnalogSubsysRegs.CMPHNMXSEL.bit.CMP2HNMXSEL = 0;
    AnalogSubsysRegs.CMPLNMXSEL.bit.CMP2LNMXSEL = 0;
//    AnalogSubsysRegs.LOCK.bit.VREGCTL = 1;
    EDIS;


    //
    // Sets the configuration for the high comparator.
    // Sets the configuration for the low comparator.
    EALLOW;
    Cmpss2Regs.COMPCTL.bit.COMPHSOURCE = 0;
    Cmpss2Regs.COMPCTL.bit.COMPHINV = 0;
    Cmpss2Regs.COMPCTL.bit.ASYNCHEN = 0;
    Cmpss2Regs.COMPCTL.bit.COMPLSOURCE = 0;
    Cmpss2Regs.COMPCTL.bit.COMPLINV = 0;
    Cmpss2Regs.COMPCTL.bit.ASYNCLEN = 0;
    EDIS;

    //
    // Sets the configuration for the internal comparator DACs.
    EALLOW;
    Cmpss2Regs.COMPDACCTL.bit.SWLOADSEL = 0;
    Cmpss2Regs.COMPDACCTL.bit.SELREF = 0;
    Cmpss2Regs.COMPDACCTL.bit.DACSOURCE = 0;
    EDIS;

    //
    // Sets the value of the internal DAC of the high comparator.
    //Sets the value of the internal DAC of the low comparator.
    EALLOW;
    Cmpss2Regs.DACHVALS.bit.DACVAL = 2048U;
    Cmpss2Regs.DACLVALS.bit.DACVAL = 0U;
    EDIS;

    //
    //  Configures the digital filter of the high comparator.
    //
    EALLOW;
    Cmpss2Regs.CTRIPHFILCTL.bit.SAMPWIN = 0;
    Cmpss2Regs.CTRIPHFILCTL.bit.THRESH = 0;
    Cmpss2Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0;
    EDIS;

    //
    // Configures the digital filter of the low comparator.
    //
    EALLOW;
    Cmpss2Regs.CTRIPLFILCTL.bit.SAMPWIN = 0;
    Cmpss2Regs.CTRIPLFILCTL.bit.THRESH = 0;
    Cmpss2Regs.CTRIPLFILCLKCTL.bit.CLKPRESCALE = 0;
    EDIS;

    //
    // Sets the output signal configuration for the high comparator.
    //
    EALLOW;
    Cmpss2Regs.COMPCTL.bit.CTRIPOUTHSEL = 0;
    Cmpss2Regs

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

启动 Ntopng 服务前需先启动 redis 服务及 Ntopng 常用参数介绍

启动Ntopng服务之前需要先启动redis服务,因为Ntopng服务依赖于redis服务的键值存储。 服务重启 服务启动 Ntopng常用参数: -d 将 Ntopng 进程放入后台执行。默认情况下,Ntop 在前台运行。 -u 指定启动Ntopng执行的用户,默认为…

基于Hadoop的NBA球员大数据分析及可视化系统

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

Mysql 删除表的所有数据

在 MySQL 中,如果你想要删除一个表中的所有数据,可以使用 TRUNCATE TABLE 命令或者 DELETE 语句。下面是两种方法的对比以及如何使用它们: 使用 TRUNCATE TABLE TRUNCATE TABLE 是一个非常快速的方法来删除表中的所有记录,并且它…

MFU简介

1、缩写 MFU - Mask Field Utilization(光刻掩膜版有效利用比例) GDPW - Gross Die Per Wafer,每张wafer上die的数量 2、什么是MASK 在光刻机中,光源(紫外光、极紫外光)透过mask曝光在晶圆上形成图…

汽车总线之---- LIN总线

Introduction LIN总线的简介,对于传统的这种点对点的连接方式,我们可以看到ECU相关的传感器和执行器是直接连接到ECU的,当传感器和执行器的数量较少时,这样的连接方式是能满足要求的,但是随着汽车电控功能数量的不断增…

Ubuntu开机进入紧急模式处理

文章目录 Ubuntu开机进入紧急模式处理一、问题描述二、解决办法参考 Ubuntu开机进入紧急模式处理 一、问题描述 Ubuntu开机不能够正常启动,自动进入紧急模式(You are in emergency mode)。具体如下所示: 二、解决办法 按CtrlD进…

Ks渲染做汽车动画吗?汽车本地渲染与云渲染成本分析

Keyshot是一款强大的实时光线追踪和全域光渲染软件,它确实可以用于制作汽车动画,包括汽车模型的渲染和动画展示。Keyshot的动画功能允许用户创建相机移动、物体变化等动态效果,非常适合用于汽车动画的制作。 至于汽车动画的渲染成本&#xff…

golang小项目1-家庭收支记账系统

项目地址:golang小项目 参考资料:尚硅谷golang教程P229 家庭收支记账系统 1. 系统简介 1.1 项目背景 在现代社会中,家庭的财务管理显得尤为重要。随着生活成本的不断上升,家庭需要有效地记录和分析收支情况,以确保…

【C++打怪之路Lv4】-- 类和对象(中)

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

权威人工智能行业认证证书——计算机视觉工程师(中级)

随着人工智能技术的快速发展,越来越多的人开始关注并学习人工智能。然而,由于人工智能领域知识的复杂性和多样性,许多人往往会感到困惑,不知道该从何入手。这时,一份权威的人工智能行业证书可以帮助学习者更好地了解人…

利用Puppeteer-Har记录与分析网页抓取中的性能数据

引言 在现代网页抓取中,性能数据的记录与分析是优化抓取效率和质量的重要环节。本文将介绍如何利用Puppeteer-Har工具记录与分析网页抓取中的性能数据,并通过实例展示如何实现这一过程。 Puppeteer-Har简介 Puppeteer是一个Node.js库,提供…

AI大模型技术已是中小企业数字化转型的战略资源

中小企业数字化转型面临资金、技术、数据隐私和安全等多重挑战,大模型技术的崛起为其提供了新的机遇。 大模型技术凭借庞大的参数和数据处理能力,推动行业创新,展现AI技术的巨大潜力。它提供成本效益高的AI服务,降低技术门槛&…

CMake教程(八):添加定制命令和生成的文件

本篇继续 CMake 官网教程的第八篇教程,所用材料是 Step8 目录下的源代码。 本篇教程主要讲解如何通过 CMake 生成一个头文件,该头文件当中包含了 1 到 10 的平方根表格,然后在程序的其它部分包含这个生成的头文件。 出于教学的目的&#xf…

OpenStack Yoga版安装笔记(十四)启动一个实例

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括: 环境安装 (已完成)OpenStack…

三款专业的英文文献翻译工具,翻译论文不在话下

阅读英文论文文献时免不了要借用一些翻译软件来帮助理解,但因为论文文献的特殊性,普通的翻译软件不能很好的翻译一些专业名词和术语,所以这里给大家分享三款可以胜任文献翻译的专业翻译工具,可以快速准确的完成英文文献翻译工作。…

CSS选择器的全面解析与实战应用

CSS选择器的全面解析与实战应用 一、基本选择器1.1 通配符选择器(*)2.标签选择器(div)1.3 类名选择器(.class)4. id选择器(#id) 二、 属性选择器(attr)三、伪…

书生大模型实战(从入门到进阶)L3-彩蛋岛-InternLM 1.8B 模型 Android 端侧部署实践

目录 1 环境准备 1.1 安装rust 1.2 安装Android Studio 1.3 设置环境变量 2 转换模型 2.1 安装mlc-llm 2.2 (可选)转换参数 2.3 (可选)生成配置 2.4 (可选)上传到huggingface 2.5 (可选) 测试转换的模型 3 打包运行 3.1 修改配置文件 3.2 运行打包命令 3.3 创建签…

UEFI EDK2框架学习(三)——protocol

一、Protocol协议 搜索支持特定Protocol的设备&#xff0c;获取其Handle gBS->LocateHandleBuffer 将内存中的Driver绑定到给定的ControllerHandle gBS->OpenProtocol 二、代码实现 Protocol.c #include <Uefi.h> #include <Library/UefiLib.h> #includ…

宠物医院微信小程序源码

文章目录 前言研究背景研究内容一、主要技术&#xff1f;二、项目内容1.整体介绍&#xff08;示范&#xff09;2.系统分析3.数据表信息4.运行截图5.部分代码介绍 总结 前言 随着当代社会科技的迅速发展&#xff0c;计算机网络时代正式拉来帷幕&#xff0c;它颠覆性的影响着社会…

spring模块都有哪些

Spring 框架是一个庞大而灵活的生态系统&#xff0c;它包含了多个模块&#xff0c;每个模块都提供了特定的功能和服务。以下是一些主要的 Spring 模块&#xff1a; Spring Core&#xff1a; 核心容器&#xff0c;提供了 IoC&#xff08;控制反转&#xff09;和 DI&#xff08;…