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.

[参考译文] F28M35H52C:Concerto F28M35H52C控制卡某些GPIO和#39;无法正常工作。

Guru**** 2391025 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/653123/f28m35h52c-concerto-f28m35h52c-control-cards-some-gpio-s-are-not-working-properly

部件号:F28M35H52C

您好,

在协力控制卡上,我正在使用一些GPIO作为输出,并尝试在1秒计时器中断中切换它们以进行测试。  

Int计数=0;
__interrupt void CPU_timer0_isr (void)

PieCtrlRegs.PIEACG.ALL = PIEACK_GROUP1;

COUNT++;
如果(count=1)

// GPIO高  

GpioG1DataRegs.GPADAT.bit.GPIO23   =1;

GpioG1DataRegs.GPADAT.bit.GPIO25   =1;

GpioG1DataRegs.GPBDAT.bit.GPIO42   =1;

GpioG1DataRegs.GPBDAT.bit.GPIO45   =1;

GpioG1DataRegs.GPBDAT.bit.GPIO46   =1;

}

否则,如果(count = 2)

// GPIO低  

GpioG1DataRegs.GPADAT.bit.GPIO23   =0;

GpioG1DataRegs.GPADAT.bit.GPIO25   =0;

GpioG1DataRegs.GPBDAT.bit.GPIO42   =0;

GpioG1DataRegs.GPBDAT.bit.GPIO45   =0;

GpioG1DataRegs.GPBDAT.bit.GPIO46   =0;

计数=0;

}

对于以上所有GPIO,我已 正确配置了DIR和Mux寄存器。 但GPIO仍无法切换。

我还使用了另一种切换GPIO的方法,如下所示

 

Int计数=0;
__interrupt void CPU_timer0_isr (void)

PieCtrlRegs.PIEACG.ALL = PIEACK_GROUP1;

GpioG1DataRegs.GPATOGLE.bit.GPIO23   =1;

GpioG1DataRegs.GPATOGLE.bit.GPIO25  =1;

GpioG1DataRegs.GPBTOGLE.bit.GPIO42   =1;

GpioG1DataRegs.GPBTOGLE.bit.GPIO45   =1;

GpioG1DataRegs.GPBTOGLE.bit.GPIO46   =1;

}

在这种方法中,GPIO23和GPIO25正在切换。但其他方法则没有。 另外,我在调试时观察到,在寄存器级别上,这些位没有得到切换。

请帮我解决这个问题。

此致,

Sandeep

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

    您好,Sandeep,

    下面说明了为什么写至DAT寄存器的操作不符合您的预期:
    http://processors.wiki.ti.com/index.php/General_Purpose_IO_(GPIO)_FAQ_for_C2000#Q:_Back-to-back_DAT_register_writes_do_not_work_as_expected

    ===

    请注意,您面临挑战的GPIO42,45,46具有USB功能。  因此,您可能需要使用AMSEL位禁用这些针脚上的USB。  有关详细信息,请参阅F28M35x TRM的GPIO部分。

    ===

    希望这能有所帮助!


    谢谢!
    Brett

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

    Brett,您好!

    按照建议,我修改了代码。我使用了SET和CLEAR来切换GPIO。它的工作正常,没有任何延迟。

    此外,我还对Cortex M3固件进行了以下更改,  

    GPIOPadConfigSet (GPIO _PORTG_BASE,0xEF,GPIO PIN_TYPE_STD_WPU);

    进行此更改后,GPIO42,45和46将从C2x内核切换。

    请告诉我正确吗?

    此致,

    Sandeep

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

    您好,Sandeep,

    是的,我相信你做的对。

    GPIOPadConfigSet配置AMSEL位,可解决您在GPIO42,45和46中看到的问题。


    谢谢!
    Brett