TMS320F280049C 学习笔记16 比较器子系统(CMPSS)
文章目录
- 概述
- 关键模块
- 1. 参考DAC
- 2. 斜坡发生器
- 3. 数字滤波器
- 例程
- CMPSS Asynchronous Trip
- CMPSS Digital Filter Configuration
- 参考文献
新一代DSP添加的功能,不是很熟悉,先参考手册和例程学习,之后结合具体项目再补充。
概述
比较器子系统(Comparator Subsystem, CMPSS)由模拟比较器和支持电路组成,可用于峰值电流模式控制、开关电源、功率因数校正、电压跳闸监测等应用。
每个CMPSS包含两个比较器、两个12位DAC参考、两个数字滤波器和一个斜坡发生器。比较器在每个模块中表示为“H”或“L”,其中“H”和“L”分别表示高和低。每个比较器产生一个数字输出,指示正输入端的电压是否大于负输入端的电压。比较器的正输入由外部引脚或PGA驱动,负输入可由外部引脚或可编程参考12位DAC驱动。每个比较器输出通过一个可编程的数字滤波器,可以消除假跳闸信号。如果不需要滤波,也可以使用未滤波的输出。一个可选的斜坡发生器电路可用于控制高比较器的12位参考DAC值。
关键模块
1. 参考DAC
每个参考12位DAC都有两组DACxVAL寄存器,即DACxVALA和DACxVAL。DACxVALA是一个只读寄存器,它直接控制12位DAC值。DACxVALS是一个可写的影子寄存器,可以立即加载到DACxVALA中,也可以与下一个EPWMSYNCPER事件同步。高参考12位DAC(DACH)可以选择从斜坡发生器而不是DACHVALS获取其DACHVALA值。
参考12位DAC的工作范围由DACREF和VSSA限定。默认情况下,高压参考电压为VDDA,但可以配置为VDAC。参考12位DAC如图16-3所示。
2. 斜坡发生器
有点复杂,暂时用不到,未来再学。
3. 数字滤波器
数字滤波器在从输入端采集的FIFO采样(SAMPWIN)窗口上工作。滤波器输出为采样窗口内的多数值,其中多数由阈值(THRESH)定义。如果不满足阈值,则滤波器输出保持不变。
THRESH的值必须被设置为大于SAMPWIN/2并且小于或等于SAMPWIN。
预分频(CLKPRESCALE)决定了滤波器的采样率,滤波器的FIFO在每个分频后时钟采样一次。FIFO中的旧数据将被丢弃。
注意,对于SAMPWIN、THRESH和CLKPRESCALE,数字滤波器使用的内部数字在所有情况下都是+1。实际上,samples=SAMPWIN+1,threshold=THRESH+1,prescale=CLKPRESCALE+1。
例程
提供了2个例程,位置在
C:\ti\c2000\C2000Ware_3_01_00_00\driverlib\f28004x\examples\cmpss
CMPSS Asynchronous Trip
此示例启用CMPSS1 COMPH比较器,并将异步CTRIPOUTH信号馈送至GPIO14/OUTPUTXBAR3引脚,CTRIPH馈送至GPIO15/EPWM8B。CMPSS配置为生成跳闸信号以跳闸EPWM信号。CMPIN1P用于提供正输入,内部DAC配置为提供负输入。内部DAC配置为在VDD/2上提供信号。EPWM信号在GPIO15处生成,配置为由CTRIPOUTH触发。
- 当向CMPIN1P提供低输入(VSS)时,跳闸信号(GPIO14)输出为低;
- 当向CMPIN1P提供高输入(高于VDD/2)时,跳闸信号(GPIO14)输出变为高,PWM8B(GPIO15)被跳闸,并输出高。
外部连接:向CMPIN1P提供模拟输入电平,该引脚与ADCINB6共享;用示波器观察GPIO14和GPIO15的输出。
这段代码的配置用到了ePWM的DC模块,先做记录,过几天再看。
#include "driverlib.h"
#include "device.h"//
// Function Prototypes
//
void initCMPSS(void);
void initEPWM(void);//
// Main
//
void main(void)
{//// Initialize device clock and peripherals//Device_init();//// Disable pin locks and enable internal pullups.//Device_initGPIO();//// Initialize PIE and clear PIE registers. Disables CPU interrupts.//Interrupt_initModule();//// Initialize the PIE vector table with pointers to the shell Interrupt// Service Routines (ISR).//Interrupt_initVectorTable();//// Set up COMP1H//initCMPSS();//// Set up ePWM8 to take CTRIPH as TRIP4 for its DC trip input//initEPWM();//// Configure GPIO14 to output CTRIPOUT1H (routed through XBAROUTPUT3) and// GPIO15 to output CTRIPH (routed through ePWM TRIP4 and ePWM8)//GPIO_setPinConfig(GPIO_14_OUTPUTXBAR3);GPIO_setPinConfig(GPIO_15_EPWM8B);//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;//// Loop indefinitely//while(1){//// Trip flag is set when CTRIP signal is asserted//if((EPWM_getTripZoneFlagStatus(EPWM8_BASE) &EPWM_TZ_FLAG_OST) != 0U){//// Wait for comparator CTRIP to de-assert//while((CMPSS_getStatus(CMPSS1_BASE) & CMPSS_STS_HI_FILTOUT) != 0U){;}//// Clear trip flags//EPWM_clearTripZoneFlag(EPWM8_BASE, EPWM_TZ_INTERRUPT |EPWM_TZ_FLAG_OST);}}
}// 初始化CMPSS 设置CMPSS1的高侧比较器
void initCMPSS(void)
{// 使能CMPSS,设置负输入为DACCMPSS_enableModule(CMPSS1_BASE);CMPSS_configHighComparator(CMPSS1_BASE, CMPSS_INSRC_DAC);// 使用VDDA作为DAC的参考值,并将参考值设置为一半CMPSS_configDAC(CMPSS1_BASE, CMPSS_DACREF_VDDA | CMPSS_DACVAL_SYSCLK |CMPSS_DACSRC_SHDW);CMPSS_setDACValueHigh(CMPSS1_BASE, 2048);// 设置输出信号,CTRIPH 和 CTRIPOUTH 都将由异步比较器输出CMPSS_configOutputsHigh(CMPSS1_BASE, CMPSS_TRIP_ASYNC_COMP |CMPSS_TRIPOUT_ASYNC_COMP);// 设置输出X-Bar: CTRIPOUTH on OUTPUTXBAR3XBAR_setOutputMuxConfig(XBAR_OUTPUT3, XBAR_OUT_MUX00_CMPSS1_CTRIPOUTH);XBAR_enableOutputMux(XBAR_OUTPUT3, XBAR_MUX00);
}//
// initEPWM - Function to configure ePWM8 and the ePWM X-BAR to take CTRIPH as
// the DC trip input
//
void initEPWM(void)
{// 在设置模块之前关闭ePWM时钟SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);//// 设置时钟预分频为 /1//EPWM_setClockPrescaler(EPWM8_BASE, EPWM_CLOCK_DIVIDER_1,EPWM_HSCLOCK_DIVIDER_1);// 为ePWM计数器赋初值EPWM_setTimeBaseCounter(EPWM8_BASE, 0);EPWM_setTimeBasePeriod(EPWM8_BASE, 0xFFFF);// 设置比较器值EPWM_setCounterCompareValue(EPWM8_BASE, EPWM_COUNTER_COMPARE_B, 0x8000);// 设置动作EPWM_setActionQualifierAction(EPWM8_BASE,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_HIGH,EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);EPWM_setActionQualifierAction(EPWM8_BASE,EPWM_AQ_OUTPUT_B,EPWM_AQ_OUTPUT_LOW,EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);// 设置ePWM8B在TZB事件时输出高EPWM_setTripZoneAction(EPWM8_BASE, EPWM_TZ_ACTION_EVENT_TZB,EPWM_TZ_ACTION_HIGH);// 当DCNH为高时触发的事件// Trigger event when DCBH is highEPWM_setTripZoneDigitalCompareEventCondition(EPWM8_BASE,EPWM_TZ_DC_OUTPUT_B1,EPWM_TZ_EVENT_DCXH_HIGH);// 设置TRIP4作为DCBH的输入EPWM_enableDigitalCompareTripCombinationInput(EPWM8_BASE,EPWM_DC_COMBINATIONAL_TRIPIN4,EPWM_DC_TYPE_DCBH);// 设置DCB为一次性的 OSTEPWM_enableTripZoneSignals(EPWM8_BASE, EPWM_TZ_SIGNAL_DCBEVT1);// 设置DCB的路径为异步非滤波EPWM_setDigitalCompareEventSource(EPWM8_BASE,EPWM_DC_MODULE_B,EPWM_DC_EVENT_1,EPWM_DC_EVENT_SOURCE_ORIG_SIGNAL);// 同步ePWM时基SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);// 设置TRIP4 为 CTRIP1H,使用ePWM X-BarXBAR_setEPWMMuxConfig(XBAR_TRIP4, XBAR_EPWM_MUX00_CMPSS1_CTRIPH);XBAR_enableEPWMMux(XBAR_TRIP4, XBAR_MUX00);// 清除trip标志位EPWM_clearTripZoneFlag(EPWM8_BASE, EPWM_TZ_INTERRUPT |EPWM_TZ_FLAG_OST);// 增计数模式EPWM_setTimeBaseCounterMode(EPWM8_BASE, EPWM_COUNTER_MODE_UP);
}
CMPSS Digital Filter Configuration
此示例启用CMPSS1 COMPH比较器,并将输出通过数字滤波器馈送到GPIO14/OUTPUTXBAR3引脚。CMPIN1P用于提供正输入,内部DAC配置为提供负输入。内部DAC配置为在VDD/2上提供信号。
- 当向CMPIN1P提供低输入(VSS)时,跳闸信号(GPIO14)输出为低;
- 当向CMPIN1P提供高输入(高于VDD/2)时,跳闸信号(GPIO14)输出变为高,
参考文献
- DSP TMS320F280049之模拟比较器CMPSS(寄存器版)
- CMPSS(模拟比较器)模块学习
TMS320F280049C 学习笔记16 比较器子系统(CMPSS)相关推荐
- TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置
文章目录 CLB tool 简介 CLB配置过程概述 软件安装 GNU Compiler Install the Simulation Viewer 使用CLB tool 导入空CLB工程 更新变量路 ...
- cocos2d-x学习笔记16:记录存储1:CCUserDefault
cocos2d-x学习笔记16:记录存储1:CCUserDefault 一.简述 CCUserDefalt作为NSUserDefalt类的cocos2d-x实现版本,承担了cocos2d-x引擎的记录 ...
- SpringBoot学习笔记(16)----SpringBoot整合Swagger2
Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...
- Hadoop学习笔记—16.Pig框架学习
Hadoop学习笔记-16.Pig框架学习 一.关于Pig:别以为猪不能干活 1.1 Pig的简介 Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin, ...
- 台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding
台大李宏毅Machine Learning 2017Fall学习笔记 (16)Unsupervised Learning:Neighbor Embedding
- Linux 学习笔记16 信号量
Linux 学习笔记16 信号量Semaphore 信号量概念 信号量(或信号灯)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语. 信号量是控制进程(或线程)同步(谁先执行,谁后执行 ...
- Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)
Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析_2020.06.25) 前言: Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一 ...
- TMS320F280049C 学习笔记31 控制率加速器 CLA 学习随笔
文章目录 前言 文献阅读记录 整数比较时的注意点 参考文献 前言 去年在入门DSP的时候曾对控制率加速器(Control Law Accelerator, CLA)做过初步的学习[1][2],但后来的 ...
- 区块链学习笔记16——ETH交易树和收据树
区块链学习笔记16--ETH交易树和收据树 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 交易树和 ...
- TMS320F280049学习笔记3_CMPSS 比较器子模块
目录 简介 构成 特性 CMPSS模块系统框图 比较器 参考DAC 斜坡发生器 斜坡发生器概述 斜坡发生器特性 数字滤波器 参考文献 简介 比较器子系统(CMPSS)由模拟比较器和支持电路组成,被用于 ...
最新文章
- docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle
- 收藏!超全机器学习资料合集!(附下载)
- 如何在BIOS里设置定时关机?
- 散列(哈希 hash)
- CountDownLatch、CyclicBarrier、Semaphore的区别,你知道吗?
- wxWidgets:wxWebView 示例
- Qt Creator使用3D材质
- 【渝粤教育】电大中专电子商务网站建设与维护 (21)作业 题库
- python进程池:multiprocessing.pool
- jitter单位_产生jitter的原因
- 查询表中id相同的记录mysql_mysql – 从两个表中的ID相同的两个表中选择数据
- python做路径图_python实现生成图片路径和对应标签
- springboot 整合 ftps
- s3c2440汇编语言,S3C2440-裸机篇-03 | GPIO的使用(点亮LED、按键检测)
- 如何使用Markdown语言编写文档
- freemarker中local和assign标签区别
- Mybatis如何进行分页的
- Css3引用外部字体样式---博客园老牛大讲堂
- 协同过滤系统基于用户的评分预测
- 为什么Windows电脑开机速度会变得越来越慢?由原先的几秒到了几十秒。了解这些方法将会助你杜绝卡顿(推荐适合电脑小白使用的杀毒软件)