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.

[参考译文] TM4C1294NCPDT:模拟比较器工作不正常

Guru**** 2450140 points
Other Parts Discussed in Thread: MSP430F2370

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623325/tm4c1294ncpdt-analog-comparator-not-working-properly

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:TM4C123MSP430F2370
你(们)好。 
我正在尝试使用 tm41294NCPDT 内部模拟比较器

我正在尝试实现低功耗 NFC/RFID 卡检测算法
我对 RC 电路进行充电、RC 电路随后放电、通过 NFC 天线、我在电压降至阈值以下时立即读取电压、在我的情况下、我使用1.65V (测试用例)比较器应生成中断

我想使用 C0+引脚从比较器0生成以下输出
1:-但问题是它在上升沿和下降沿触发中断、此外、有时它会在配置中断后立即生成中断一次
2:-我在 IAR 中调试期间观察了寄存器、我注意到比较器0寄存器比较器1寄存器也在更新(COMPACSTAT1)、但我还没有配置比较器1
3:-但我的主要优先级是生成如图所示的输出、然后在比较器输出返回1时触发中断、这意味着中断在上升沿


下面随附了代码:
谢谢
#include 
#include 
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/pwm.h"
#include "driverlib/sysctl.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"

#include "driverlib/interrupt.包含"driverlib"#include "driverlib"#include "driverlib.h"#include "driverlib.comp.h


#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "driverlib/rom.h"
#include "inc/hw_ints.h"
#include "driverlib/rom_map.h"

uint32_t g_ui32SysClock=120000000;


#ifdef

文件名/hw_ints.h;















#include "out_int_status_t = nateg_int0;void in 0_int_int_int_int_int_int_int_status_int0;void = u32_int_int_int_int_int_integ_int_int_int_int_int_int_int_int_integ_int_int_int_int_int_int_int_int_int_int_int_


int Comp_OUT;
Comp_OUT = ComparatorValueGet (COMP_BASE、0);

// ComparatorIntClear (COMP_BASE、0);

//
// bool ulStatus;
// ulStatus =ComparatorIntStatus (COMP_BASE、0、TRUE);
ComparatorIntClear (COMP_BASE、 0);
// ComparatorIntDisable (COMP_BASE、0);

X++;

// if (status=0)
// {
// GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0x1);
// STATUS=1;
//}
//
//
// if (status=1)
// {
// GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0x0);
// STATUS=0;
//}



}





int main (void)
{
g_ui32SysClock= SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);

int 计数器=20;
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);


while ((!SysCtlPeripheralReady (SYSCTL_Periph_GPIOF))&&(counter=0)
){
计数器--;
}

GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_4);
IntMasterDisable ();
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC); //为负输入启用端口 C

int counter1=20;
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOC))&&(counter1=0)
{
计数1--;
}

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); //为输出启用端口 D

int counter2=20;
while ((!SysCtlPeripheralReady (SYSCTL_Periph_GPIOD))&(counter2=0)
){
柜台2--;
}

GPIOPinTypeGPIOInput (GPIO_PORTC_BASE、GPIO_PIN_6);
GPIOPinTypeGPIOOutput (GPIO_PORTD_BASE、GPIO_PIN_0);

// GPIOPinWrite (GPIO_PORTD_BASE、 GPIO_PIN_0、1);
// SysCtlDelay (100);
// GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_0);



SysCtlPeripheralEnable (SYSCTL_Periph_COMP0); //启用比较器1
int counter3=20;
while (!SysCtlPeripheralReady (SYSCTL_Periph_COMP0))&&(counter3=0)
{
反3 -;
}

//分配引脚类型
// GPIOPinTypeComparator (GPIO_PORTC_BASE、GPIO_PIN_7); //模拟比较器1负输入。
GPIOPinTypeComparator (GPIO_PORTC_BASE、GPIO_PIN_6); //模拟比较器1正输入。
//GPIOPinTypeComparator (GPIO_PORTD_base、GPIO_PIN_0); //模拟比较器1输出。


//GPIOPinConfigure (GPIO_PIN_4); //引脚配置
//GPIOPinConfigure (GPIO_PIN_5); //不需要,因为缺省功能是模拟输入

GPIOPinConfigure (GPIO_PD0_C0O);


比较器配置(COMP_BASE、0、COMP_TRIG_NONE | COMP_ASRCP_REF
|COMP_INT_FALL | COMP_OUTPUT 正常); //比较器配置


SysCtlDelay (100);

//设置内部基准电压
ComparatorRefSet (COMP_BASE,COMP_REF_1_65V);

//IntDisable (COMP_BASE);

ComparatorIntRegister (COMP_BASE、0、COMP_BASE_Interrupt);
ComparatorIntEnable (COMP_BASE、0);
//ComparatorIntRegister (COMP_BASE、0); INT_COMP0);
//IntEnable (INT_COMP0);

IntMasterEnable();



//SysCtlDelay (g_ui32SysClock / 96); //延迟
;

while (1)
{


COMP_OUT =比较器 ValueGet (COMP_BASE、0); //读取比较器输出
//
// int_status=ComparatorIntStatus (COMP_BASE、0、TRUE);
//
如果(Comp_OUT=0)
// {
// GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0x0);
// STATUS=1;
// SysCtlDelay (1000000);
//}
//
//
// 如果(Comp_out=1)
// {
// GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0x1);
// STATUS=0;
// SysCtlDelay (1000000);
//}
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0x1);
SysCtlDelay (1000);
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、0x0);
SysCtlDelay (1000);



}
}








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

    这是基准信号图

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想为比较器的 CO+引脚供电、等待它低于基准电压、此时会生成中断并完成我的任务
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否已使用示波器验证过、比较器输入端没有噪声在电压上升时触发下降沿?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在使用来自电路板的3伏输出、我还尝试使用引脚(开关)

    我不认为这里的噪音会成为一个问题,不是吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另外,您能否确保我的配置适合我的具体情况?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否可以将比较器的-ve 输入用作内部 基准并从正输入读取数据  

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

    我的朋友-您是否使用"内部参考?"来限制和限制您的选项?   请允许我建议-至少在您的早期设计阶段-您使用"外部可调节基准"。   Fir/I 已经(始终)完成此操作(因为我们(和客户)发现内部参考"太粗糙")、并且我们(始终)成功使用 MCU 的模拟比较器-包括 LX4F 和 TM4C123 -使用外部参考。

    我们采用了软件驱动的 DAC (另一个 ARM MCU 上的标准)、并使用它来驱动 ANA。 COMP (+)输入-在 ANA 上强制设置电压。 COMP (-)引脚-"上拉了 ANA。 Comp (输出)"、并观察到输出在输入信号越过"跳闸点"时"从低电平切换到高电平"。

    "外部基准"的另一个优势是(更好/更简单)适应"磁滞电阻器/电容器"-如果输入信号"停留"在/接近"跳闸点"。   (即中央振荡...)

    我们认为、"内部基准"会损害模拟比较器、同时会增加(另一种)复杂度-因此、在您(到目前为止)失败的尝试中、"可能是最可疑的"...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SIR 问题是、我们的设计团队已经准备好了套件、我唯一可以读取电压电平的引脚是 tm4cNCZAD I-e C2+中的 PP0、而 C2-在其他模块中已经很忙、因此我的选项有限
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这就是“过早的承诺”的问题——难道不是吗?

    MCU 的"架构"-关键/关键引脚的选择和选择是"最全面的!"

    如果您(现有)的"Plan A"(计划 A)出现故障-"Plan B"(计划 B)(正如我所建议的)不是合理的替代方案?
    是否不应让"设计团队"承担此更正的任务? 他们是负责的一方-他们不是吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 CB1_MOBILE  

    你们各方面都说得对、但我们已经完成了工作、我想我也有任何关于这个问题的选择

    我再要求一个优惠  

    请转至 ULP NFC /RFID 实施代码示例代码的链接

    谢谢  

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

    虽然我希望能够提供进一步的帮助-公司/我是"外部人员"(尽管有兴趣的外部人员)、并且长期以来一直观察到供应商使得"搜索/查找流程"(如您要求的那样)过于困难。   

    Fire/I 尚未使用您寻求的实施(ULP NFC /RFID) -因此(您的)搜索将证明与我们一样有效。

    即使您的板"完成"-也可以(应该)

    • 关闭内部基准(通过软件)
    • 将可变(适当的电平)外部电压馈送到您的 Ana Comp 输入
    • 可能会在 ANA Comp 的输出中添加一个"上拉" (我无法回忆该引脚在配置为 ANA Comp 输出时是否会在"推挽"模式下工作)

    这些"电机"不难实现-占用很少的空间(使用非常小的电位计)-并且可以添加"迟滞"(Rs 和 Cs)以防止振荡。

    同样、"内部参考"提供的调整能力是"阶梯式"、因此受到限制、我们(和我们的客户)在早期发现、对于(大多数)客户应用程序而言、步骤太大。

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

    NFC ULP 卡检测应用仅使用单个比较器引脚并依赖于内部基准。 此设计是否完美有待争论、但在 MSP430上完成时、通过单个比较器引脚和使用内部基准、确实可以使其在满足应用标准的范围内正常工作、因此该方法至少在该应用中有效。

    也就是说、从未在 TM4C 上尝试过此应用。 因此、单个比较器引脚是否足以支持 TM4C 器件是未知的。 我想假设这应该是好的、但您知道他们对假设的看法...

    Tayyab、您可能需要比较 TM4C 比较器和 MSP430F2370比较器的功能、并确保 TM4C 比较器能够满足应用手册中概述的要求。

    ULP 检测方法的固件可在应用手册 的首页中找到:www.ti.com/.../sloa184.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="CB1_MOBIST"]这就是"过早承诺"的问题-这不是吗?

    ***类似于***

    我们在这里看到的类似帖子并不是很寻常:"硬件人员向我发送了这样的电路板、并且..."

    我们的经验表明,这是一个巨大的浪费时间。 可能有更大的形容词、可能是浪费时间?

    然后硬件套件准备就绪、"软件人员"仍处于寻找示例代码的阶段?????

    当然、请抓紧时间、因为项目已延迟...

    这不是对这里的 OP 的直接批评,不管怎么说! 它只是在星期五晚上进行了2%的发展讨论。 但某种 Launchpad 应始终处于嵌入式项目的 Hello World 阶段! 虽然这个电流波形比任何其他东西都更能证明其概念、但应该使用一个模拟传感器的简单外部信号。 只有当这个概念被证明是有效的(到那时、已经有一个用于这个目的的合理程序)、硬件人员才有时间来"了解什么是有效的、并为产品创建更具体的硬件"...

    布鲁诺

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

    好的帖子-普遍同意-看起来海报的硬件组"假定"(或猜测/祈祷)-并不以有效性而闻名!

    对于那些考虑"在现实世界中使用任何 MCU 的模拟比较器"的人-请注意"节省/便利"(承诺)-但交付成本却非常高昂!    

    内部全日空 比较 参考文献主要是:

    • 数量有限
    • 步进-因此非常精细
    • 和(可能)"保存一个引脚"
    • 更繁重的软件配置、设置、测试(即"正确")

    此外-并非总是有利润率和开发时间(允许)享受这种"有点不寻常"的能力。   一个“普莱恩”的安娜。 比较 (即所有信号/Refs。 外部)可"设计并掌握"一次-然后"重复使用!"   (投资者、客户和开发团队都很喜欢!)   此外-如果 MCU "引脚太短以至于"节省一个引脚"被证明是至关重要的"-(裂缝)开发团队可能会做出"次优"选择-并且肯定会通过使用外部模拟比较器 IC 获得最佳效果!   (获得这些"短视"-两个 MCU 引脚!)

    选择是否不会解析为:"一个引脚"(正在保存?) 这会导致:

    • 性能下降
    • 独特的设计(即研究/掌握的更长时间)
    • 功能可能不可用(始终可用)(尤其是在引脚数较小、成本较低的器件(例如 Cortex M0或 M3)[ 在其他地方既有效又良好(蓬勃发展)]

    与"专用"器件相比、MCU 扩展到"厨房灌电流"角色(即执行所有操作)通常会导致"功能性能下降"、这些器件(不可重复使用)、并"设定特定功能"性能的标准...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个优势是、外部比较器可以采用线或红色方式(如果您不选择图腾柱输出)、而不是比较器昂贵。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、是的-我们已经(过去)做到了。 此外-如果电路板空间允许小型14引脚 SOIC - 4个比较器到达! (仅限一个!)
    如您所知-比较器还可能执行基本逻辑功能:(OR、AND 和 AND 反相)轻松访问比较器的所有引脚使其免受(相当严重)限制的影响(由较小的(非 ARM) MCU 描述)-在前面提到过。 (即"保存引脚"-"失去性能、灵活性和重复使用!" (笑声) (笑声) 太划算了——大家都很好!)