This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C:关于 CMPSS 数字滤波器初始化

Guru**** 2796425 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1598244/tms320f280039c-about-cmpss-digital-filter-initialization

器件型号: TMS320F280039C

您好:

我尝试使用 CMPSS 进行过流保护。 要初始化 CMPSS 的数字滤波器、我是否应该切换位“FILIINIT_" 1“ 1 -> 0?

image.png

我在 280039 TRM 中找不到此信息。 这是否是初始化 CMPSS 数字滤波器设置的正确方法? 如果是、请您向我解释一下原因。  
 
谢谢你。
 
此致、  
Rhee
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Rhee、

    FILINIT 位不会锁存为 0、这意味着、一旦您向该位右键 1 以初始化数字滤波器、它就会自行复位回 0

    此致、

    彼得

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Peter:

    我可以理解、将 FILINIT 位设置为 1 后、FILINIT 位将自动复位为 0。

    我想知道在写入 1 后、在其他寄存器初始化之前是否立即复位为 0。  

    下面是我现在使用的代码。 我是否使用了正确的结构?

    	EALLOW;
    	Cmpss1Regs.COMPCTL.bit.COMPDACE 				= 1;			// Comparator/DAC enable
    
    	Cmpss1Regs.COMPCTL.bit.COMPHINV 				= 0;			// 0: Output of High comparator is not inverted
    	Cmpss1Regs.COMPCTL.bit.COMPLINV 				= 1;			// 1: Output of Low comparator is inverted
    
    	Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL 			= 0;			// 0: DACxVALA is updated from DACxVALS on SYSCLK
    
    	Cmpss1Regs.COMPCTL.bit.COMPHSOURCE  			= 0;			// NEG(-) 입력: 내부 DAC 사용
    	Cmpss1Regs.COMPCTL.bit.COMPLSOURCE  			= 0;			// NEG(-) 입력: 내부 DAC 사용
    
    	Cmpss1Regs.COMPDACCTL.bit.SELREF 				= 0;			// 0: VDDA is the voltage reference for the DAC
    
    	Cmpss1Regs.DACHVALS.bit.DACVAL 					= 4020;		    // +121.6A High Side NEG(-) 입력 전압(약 3.22V, +121.6A)
    	Cmpss1Regs.DACLVALS.bit.DACVAL 					= 946;		    // -121.6A Low Side NEG(-)  입력 전압(약 0.43V, -121.6A)
    
    	/* 필터 사용 시 변경 */
    	Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN 			= 16;   		// FIFO 레지스터에 16 + 1 개의 샘플을 받음
    	Cmpss1Regs.CTRIPHFILCTL.bit.THRESH 				= 11;			// 16 + 1 개의 데이터 중에 0이나 1 이 11개 이상 되는 값을 출력
    	Cmpss1Regs.CTRIPHFILCLKCTL                    	= 9;		    // High filter sample clock prescale.
    	Cmpss1Regs.CTRIPHFILCTL.bit.FILINIT 			= 1;			// 0 No effect, 1 필터 시작
    	Cmpss1Regs.CTRIPHFILCTL.bit.FILINIT             = 0;            // SW: 반드시 토글해줘야함
    
    	Cmpss1Regs.CTRIPLFILCTL.bit.SAMPWIN 			= 16;       	// FIFO 레지스터에 16 + 1 개의 샘플을 받음
    	Cmpss1Regs.CTRIPLFILCTL.bit.THRESH 				= 11;			// 16 + 1 개의 데이터 중에 0이나 1 이 11개 이상 되는 값을 출력
    	Cmpss1Regs.CTRIPLFILCLKCTL                   	= 9;	    	// LOW filter sample clock prescale.
    	Cmpss1Regs.CTRIPLFILCTL.bit.FILINIT 			= 1;			// 0 No effect, 1 필터 시작
    	Cmpss1Regs.CTRIPLFILCTL.bit.FILINIT             = 0;            // SW: 반드시 토글해줘야함
    
        Cmpss1Regs.COMPCTL.bit.CTRIPHSEL                = 2;            // 디지털 필터의 출력 (COMPSTS[COMPHSTS]) 의 값을 CTRIPH 로  연결(A6)
        Cmpss1Regs.COMPCTL.bit.CTRIPLSEL                = 2;            // 디지털 필터의 출력 (COMPSTS[COMPLSTS]) 의 값을 CTRIPL 로  연결(A6)
    
    	Cmpss1Regs.COMPSTSCLR.bit.HLATCHCLR				= 1;			// Digital filter latch clear
    	Cmpss1Regs.COMPSTSCLR.bit.LLATCHCLR				= 1;
    	AnalogSubsysRegs.CMPHPMXSEL.bit.CMP1HPMXSEL     = 2;
    	AnalogSubsysRegs.CMPLPMXSEL.bit.CMP1LPMXSEL     = 2;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Rhee、

    对于某些边沿情况、应在 CMPSS 初始化结束时(而不是开始时)启用 COMPDACE 位。 其他一切看起来都很好。 请注意、 设置 COMPDACE 位后有一个启动时间、因此 CMPSS DAC 需要时间上电、并且在此期间不应使用 CMPSS。 启动时间约为 500us

    此致、

    彼得