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.

[参考译文] CCS/TMS320F280041C:PGA 输入问题的 CMPSS

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/953698/ccs-tms320f280041c-cmpss-with-pga-input-problem

器件型号:TMS320F280041C

工具/软件:Code Composer Studio

您好! I`m 使用增益为3的 PGA 输入:

void initPGA (void)
{
PGA_setGain (PGA1_base、PGA_GAIN_3);
PGA_setFilterResistor (PGA1_base、PGA_LOW_PASS_FILTER_DISABLED);
PGA_ENABLE (PGA1_BASE);
}

void initADC (void)
{
//
//将 VREF 设置为内部
//
ADC_setVREF (ADCA_BASE、ADC_reference_internal、ADC_reference_3_3V);
ADC_setVREF (ADCB_BASE、ADC_reference_internal、ADC_reference_3_3V);
ADC_setVREF (ADCC_BASE、ADC_reference_internal、ADC_reference_3_3V);
//
//将 ADCCLK 分频器设置为/4
//
ADC_setPrescaler (ADCA_BASE、ADC_CLK_DIV_4_0);
ADC_setPrescaler (ADCB_BASE、ADC_CLK_DIV_4_0);
ADC_setPrescaler (ADCC_BASE、ADC_CLK_DIV_4_0);
//
//将脉冲位置设置为晚期
//
ADC_setInterruptPulseMode (ADCA_BASE、ADC_PULSE_END_of _CONV);
ADC_setInterruptPulseMode (ADCB_BASE、ADC_PULSE_END_of _CONV);
ADC_setInterruptPulseMode (ADCC_BASE、ADC_PULSE_END_of _CONV);

//
//为 ADC 加电、然后延迟1ms
//
ADC_enableConverter (ADCA_BASE);
ADC_enableConverter (ADCB_BASE);
ADC_enableConverter (ADCC_BASE);
DEVICE_DELAY_US (1000);
}

void initCMPSS (void)
{
init_CMPSS 模块(CMPSS1_base);
}

void init_CMPSS_Modul (uint32_t sellectedModul)
{
//
//启用 CMPSS 并将负输入信号配置为来自
// DAC
//
CMPSS_enableModule (sellectedModul);
CMPSS CONFIGHighComparator (自插模块、CMPSS INSRC_DAC);
CMPSS CONFIGLowComparator (自插模块、CMPSS INSRC_DAC);


//
//使用 VDDA 作为 DAC 的基准并将 DAC 值设置为的中点
//任意引用。
//
CMPSS CONFIGDAC (自定义模块、CMPSS DACREF_VDDA | CMPSS DACVAL_SYSCLK | CMPSS DACSRC_Shdw);

CMPSS_setDACValueHigh (sellectedModul、CMPSS_highvalue);

CMPSS_setDACValueLow (sellectedModul、CMPSS_LowValue);

//
//配置数字过滤器。 在本示例中、最大值为
//用于时钟预分频、采样窗口大小和阈值。
//

CMPSS_CONFIGFilterHigh (sellectedModul、0x3FF、32、31);

CMPSS_CONFIGFilterLow (sellectedModul、0x3FF、32、31);

//
//初始化过滤器逻辑并开始过滤
//
CMPSS_initFilterHigh (sellectedModul);

CMPSS_initFilterLow (sellectedModul);

//
//配置输出信号。 CTRIPH 和 CTRIPOUTH 都将由馈送
//滤波器输出。
//
CMPSS_CONFIGOutputsHigh (sellectedModul、CMPSS_TRIP_FILTER |
CMPSS_TRIPOUT_FILTER);

CMPSS_CONFIGOutputsLow (sellectedModul、CMPSS_TRIP_FILTER |
CMPSS_TRIPOUT_FILTER);

} 

问题出在这里! 在这种情况下、当我读取 PGA 值时、PGA1引脚上的实际电压乘以3、因此对于0.17V、我的结果大约为600。 但 CMPSS`s 在乘法之前取值、因为如果我必须将 DAC 的值设置得非常低。 因此、我尝试更改 CMPSS 输入的输入 MUX 值、但没有成功。 在我的`m 中、我使用所有 PGA 输入。 更改 CMPSS 输入的过程是什么?  

谢谢!

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

    我想实现这个目标->如果电压处于中点,例如0.2V 输入(增益=3),则两个滤波器都有输出1。 如果电压高于 COMP1 DAC 值、则输出值为0。 如果压降低于 COMP2值、则同一个 COMP 在输出端具有0。 或类似的东西。 n`t、我无法实现这一点。 我不知道n`tn`t、但比较器对输入电压的反应却是正确的。 是否有任何示例!

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

    有一些用于配置 CMPSS 输入的多路复用器。 您有没有看过技术参考手册中的模拟子系统一章? 有一些方框图和表格解释了不同的选项。 在 driverlib 中、相应的函数位于 asysctl.h 中、都以"ASysCtl_selectCMP"开头

    惠特尼

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