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/TMS320F28032:比较器无法正确生成中断

Guru**** 2392285 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/952418/ccs-tms320f28032-comparator-cannot-properly-generate-interrupt

器件型号:TMS320F28032

工具/软件:Code Composer Studio

你(们)好

我想使用 COMP1在信号超过特定限制时生成 CBC 中断、并且我正在使用内部 DAC 设置该限制。 我将信号连接到 COMP1A、在代码中、我将反相输入设置为内部 DAC。 但是、我的 comp1B 连接到我用作 ADC 通道的信号。 当我在该 ADC 通道中没有输入时、该引脚上的电压始终为3.3V。

我的问题是、在这个设置中、比较器根本不能在 ePWM 模块中生成中断。 但是、当我通过一个电阻器将 COMP1B 接地时、中断功能正常工作。 当我读取数据表时、我认为如果我选择内部 DAC 作为比较器的反相输入、则不应考虑 comp1B 引脚。 我不确定这里的设置有什么错误。 请提供一些有关如何设置的建议。 谢谢。

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

    不确定图片为什么不能显示。

    这是我用于比较器初始化的代码、我将连接到附件中的连接

    空 InitComp (空)

    InitCompGpio();
    EALLOW;

    AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;//启用 ADC 内的带隙
    Comp1Regs.COMPCTL.all = 0x140;//传递比较器的输出
    COMP1Regs.DACVAL.ALL = 436;//636;//736;// 3.3*736/1023 = 2.375V -> 77A 最大值
    Comp1Regs.COMPCTL.bit.COMPDACEN = 1;//启用比较器块1
    EDIS;

    }/* InitComp()*/

    空 InitComp1Gpio()

    EALLOW;

    /*禁用所选输出引脚的内部上拉电阻
    以降低功耗*/
    //用户可以启用或禁用上拉。
    //注释掉其他不需要的行。

    // GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;//禁用 GPIO1的上拉(CMP1OUT)
    // GpioCtrlRegs.GPAPUD.bit.GPIO20 = 1;//禁用 GPIO20的上拉(CMP1OUT)
    // GpioCtrlRegs.GPBPUD.bit.GPIO42 = 1;//禁用 GPIO42的上拉(CMP1OUT)

    /*使用 GPIO 寄存器配置 Comp 引脚*/
    //这指定哪个可能的 GPIO 引脚将是 Comp 功能引脚。
    //注释掉其他不需要的行。

    // GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 3;//为 CMP1OUT 操作配置 GPIO1
    // GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 3;//将 GPIO20配置为 CMP1OUT 操作
    // GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3;//将 GPIO42配置为 CMP1OUT 操作

    GpioCtrlRegs.AIOMUX1.bit.AIO2 = 2;//为 CMP1A (模拟输入)操作配置 AIO2
    // GpioCtrlRegs.AIOMUX1.bit.AIO10 = 2;//为 CMP1B (模拟输入)操作配置 AIO10

    EDIS;
    }/* InitComp1Gpio()*/

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

    尊敬的 Fei:

    在我身上没有什么特别的地方。 您是否在代码中的任何位置设置了 COMPSOURCE?

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

    你(们)好、Frank

    感谢您的回复。

    我已经在 COMPCTL 寄存器中将 COMPSOURCE 设置为内部 DAC。

    Comp1Regs.COMPCTL.all = 0x140;   

    对于内部 DAC、COMPSOURCE 位设置为0。

    我还发现、如果 COMP1B 引脚电压低于3.3V、比较器工作正常。 但是当 COMP1B 引脚电压为3.3V 时、比较器永远不会产生中断。 即使我从不使用 COMP1B 作为比较器的反相输入。

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

    为了进行测试、您是否可以将 COMPSOURCE 翻转为1以查看是否仍然存在相同的行为? 您是否还在所有 CMPSS 上看到了这种行为?