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/F28M36P63C2:GPIO 68和66 DAT 寄存器值未被拉高

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/752471/ccs-f28m36p63c2-gpio-68-and-66-dat-register-value-is-not-pulled-high

器件型号:F28M36P63C2

工具/软件:Code Composer Studio

您好!

我使用 GPIO66和 GPIO68作为输出、在发生系统故障时点亮 LED。 使用 ADC 读数监测故障、并在发生故障时设置标签。

在本例中、我将监控系统过流和系统过压故障。 当标签被置位时、GPIO 输出引脚被拉至高电平、这将导致灯打开。 以下是一段代码、

if (SystemTag.bit.FaultOC==1)
{
CheckVar1=100;
GpioG1DataRegs.GPCSET.BIO68=1;//OutputOverCurrentLightOn
}

if (SystemTag.bit.FaultOutOV=1)
{
GpioG1DataRegs.GPCSET.BIT.GPIO66=1;//OutputOverVoltageVarOn

}

我查看了观察窗口上的标签、两个故障标签都设置为1。 我还可以验证编译器是否进入了条件块、因为 CheckVar1和 CheckVar2被分配了值100。

但是 GpioG1DataRegs.GPCDAT.bit.GPIO66和 GpioG1DataRegs.GPCDAT.bit.GPIO68值仍然为低电平(0)。

我已将 MUX 设置为 GPIO、并将其中两个配置为输出引脚、请参阅下面的代码。

// LED 配置为输出
EALLOW;

GpioG1CtrlRegs.GPCMUX1.bit.GPIO68= 0;//将多路复用器设置为 GPIO (默认值)//过流
GpioG1CtrlRegs.GPCDIR.bit.GPIO68=1;//设置为输出

GpioG1CtrlRegs.GPCMUX1.bit.GPIO66= 0;//将多路复用器设置为 GPIO (默认值)//过压
GpioG1CtrlRegs.GPCDIR.bit.GPIO66=1;//设置为输出

EDIS; 

我可以排除硬件问题、因为我在多个电路板上试用了软件、并且遇到了相同的问题。

我在这里错过了什么? 任何想法或建议都将不胜感激。  

谢谢、

Srini.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否已将 GPIO 的控制权正确授予 C28x 内核? 这将在您的 M3内核初始化代码期间发生。

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

    Mark、您好!

    我使用了控制套件中的 setup.m3文件作为 M3软件。 我认为这涵盖了我的所有基础,我认为这样做是对的吗? 请参阅下面的代码片段

    //为 C28提供对所有 GPIO 的控制
    GPIOPinConfigureCoreSelect (GPIO_Porta_base、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTB_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTC_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTD_base、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_Porte _BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTF_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTG_base、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_Porth_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTJ_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTK_base、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTL_base、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTM_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTN_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTP_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTQ_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTR_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTS_BASE、0xFF、GPIO_PIN_C_CORE_SELECT);
    
    
    



    谢谢、
    Srini.

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

    是的、将 setup_m3项目加载到 M3内核、该内核可满足您的需求。

    您是否能够在示波器上观察到这些引脚? 您能否看到在设置这些引脚时是否存在任何毛刺脉冲? 您的上拉电阻器是否太强、以至于 GPIO 实际上试图将其拉高、但它是中等电平?
    一个愚蠢的问题/评论-您确定在设置调用后不会将 GPIO 清除为低电平吗? 将 GPIO 设置为高电平后、立即在代码中放置一个断点、以确保在设置之后没有执行其他代码。

    是否可以暂时使用备用 GPIO 代替? 行为是否相同?


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