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.

[参考译文] TM4C123GH6PM:模拟比较器:0.275内部基准电压,PC7作为比较器,PF0是输出端口,当 PC7连接到不同的电压时,我的 LED 会改变,但 PF0始终为高电平。

Guru**** 2540720 points
Other Parts Discussed in Thread: LM339

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/826824/tm4c123gh6pm-analog-comparator-0-275-internal-reference-voltage-pc7-as-comp--pf0-is-output-port-my-led-changes-when-pc7-connects-to-different-voltage-but-pf0-is-always-high

器件型号:TM4C123GH6PM
主题中讨论的其他器件:LM339
/*
* Comparator_Init.c
*
*模拟比较器的配置方式,关于输出 F0、1无反应的问题尚未解决
*创建日期:2019年7月30日
* 作者:管理员
*/

#include 
#include 
#include "inc/hw_gpio.h"
#include "comp/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/Gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib_gpin/define
#define #define #define #define "driverlib"#define #driverlib_gpine/gpio.h"#define #define #define #define #define #define #define #include "driverlib_gpin/driverlib_ine.h"#define #define #define #define #define #define #define









//uint32_t g_ui32SysClock;//系统时钟频率,单位为 Hz。

SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN);

//g_ui32SysClock = SysCtlClockGet ();

IntMasterEnable();//启用处理器中断

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);//启用端口 C
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);//启用端口 F

/* HWREG (GPIO_PORTF_BASE + GPIO_LOCK)= GPIO_LOCK_KEY;
HWREG (GPIO_PORTF_BASE + GPIO_O_CR)= 0x01;
HWREG (GPIO_PORTF_BASE + GPIO_O_LOCK)= 0;*

SysCtlPeripheralEnable (SYSCTL_Periph_COMP0);//启用比较器0
while (!SysCtlPeripheralReady (SYSCTL_Periph_COMP0))//等待 COMP 模块准备就绪
{
}

GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、红色|蓝色|绿色);//为 LED 启用 GPIO 引脚(PF1红色、PF2蓝色、PF3绿色)

ComparatorRefSet (COMP_BASE、COMP_REF_0_275V);//配置内部电压基准
// GPIOPinTypeComparatorOutput (GPIO_PORTF_BASE、GPIO_PIN_0);//比较器输出
GPIOPinConfigure (GPIO_PF0_C0O);
HWREG (0x40025000 + 0x420)|= 0x01;
HWREG (0x40025000 + 0x52C)|= 0x09;

GPIOPinTypeComparator (GPIO_PORTC_BASE、GPIO_PIN_7);//比较器输入

比较器配置(COMP_BASE、0、(COMP_TRIG_NONE | COMP_INT_Both | COMP_ASRCP_REF | COMP_OUTPUT_NORMAL));//配置比较器0

while (1)
{
if (ComparatorValueGet (COMP_BASE、0)= true)
{
GPIOPinWrite (GPIO_PORTF_BASE、红色|蓝色|绿色、绿色);//< 0.275V
}
其他
{
GPIOPinWrite (GPIO_PORTF_BASE、红色|蓝色|绿色、红色);//> 0.275V
}

}





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

    您好!

    感受您的痛苦-但可能(部分)是由以下原因造成的:

    • 无法从其默认'NMI'角色解锁 PF0。   (尝试使用的代码已被静音。)
    • 希望使用 MCU 的"厨房灌电流"功能之一-但这一个"没有完全描述/记录"。   (GPIOPinType()在模拟比较器的输出中出现(long)缺失!   (不应(某处)解决"不一致"问题?)

    先前的帖子指出、您是"竞赛参与者"、但您选择了 MCU 功能-您/其他人认为该功能具有"挑战性"、而"离散模拟比较器"(1通道、2通道、甚至4通道)已证明简单、价格低廉、 并且可以轻松地"重复使用"-当您(稍后)从"其他"迁移到命名的 MCU 时!  

    事实证明、"尝试将一个不平衡的 MCU 外设与之进行同轴连接"是很难证明的-当"现成的 Jellybean IC" (以 LM339为例)提供了一个获得良好认可、价格低廉、易用/即时的 Soluton!

    一些高级 MCU 用户(主要)使用以下 MCU 功能:

    • 仅基于 MCU
    • 在 MCU 中实现最佳性能
    • 实现"超小型目标 PCB "
    • 都"记录良好/经过验证-并且工作简单"
    • 并满足应用的精度、性能和"投入的时间/精力"需求

    模拟比较器不采用该分组!   "固定"电压比较电平(相对而言)粗略、如果稍后部署"命名" MCU、则必须添加(和更改)软件、正如您/其他人所观察到的、操作成功似乎"不保证!"   能够快速高效地"重复使用"现有的"IP"(在本例中为-具有离散 ANA 的光绘文件)。 比较器)受到竞争限制的人(可能也会受到您的重视)、即使"拥有道路"也是如此。

    更简单的方法(已知良好/不会发生任何事情)、并且其性能等于和/或超过"MCU"(已剥离)版本的性能、通常证明 是一种"高度有利"的选择!