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.

[参考译文] TMS570LC4357:无法将 N2HET[12]用作 GIO 引脚配置寄存器

Guru**** 2473260 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1029970/tms570lc4357-failed-to-use-n2het-12-as-gio-pin-configuration-register

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

客户打算将 N2HET 用作普通 IO 引脚、因为客户4357芯片的 GIO 引脚几乎全部占用、并且 IO 引脚作为输入不容易进行电线焊接。 但他在配置过程中遇到了以下问题:
1.客户打算将 N2HET2引脚配置为 IO 输入、将其下拉、并且没有开漏。 一旦检测到外部输入的高电压、它将被运行。
2.客户使用的芯片封装为 TMS5704357BZWTQ1R、物理引脚为"D3"、相应的 PINMUX 功能为"N2HET2[12]/MIBSPI2NENA"。 客户在数据表中"I/O 复用和控制模块(IOMM)"的功能选择中找到"复用输入的控制"、然后找到"PINMMR97[0]"并将其设置为输入。 有关详细信息、请参阅下图。

pinMuxReg->PINMUX[97] = SIGNAL_N2HET2_12_D3 | SIGNAL_N2HET2_13_D2 | SIGNAL_N2HET2_14_D1 | SIGNAL_N2HET2_15_K4; // n2het2[12]

然后、客户使用 HALCON 工具在 N2HET2寄存器中配置 N2HET2[12]、并生成了以下代码:

hetREG2->GCR = ( 0x00000001U | (uint32)((uint32)1U << 24U)| (uint32)((uint32)1U << 16U)| (0x00020000U));
    hetREG2->INTENAC = 0xFFFFFFFFU;
    hetREG2->INTENAS =  0x00000000U;

    hetREG2->PFR = (uint32)((uint32) 6U << 8U)| ((uint32) 0U);
	
    // Enable/Disable Parity check
    hetREG2->PCR = (uint32) 0x00000005U;

    /** - Fill HET RAM with opcodes and Data */
    (void)memcpy((void *)hetRAM2, (const void *)het2PROGRAM, sizeof(het2PROGRAM));

    //Setup prescaler values
    hetREG2->PFR = (uint32)((uint32) 6U << 8U)| ((uint32) 0U);
    // Set the default value of pin
    
    hetREG2->DOUT = (U32)((U32)0U << FORCED_UPDATE_PIN);
 
    // Set the N2HET2[3] pin as input
    hetREG2->DIR = (U32)((U32)0U << FORCED_UPDATE_PIN);

    // Enable the pull up/down.
    hetREG2->PULDIS = (U32)((U32)0U << FORCED_UPDATE_PIN);
		
    // Enable the pull down.
    hetREG2->PSL = (U32)((U32)0U << FORCED_UPDATE_PIN);

    //hetREG2->HRSH = (U32)((U32)1U << FORCED_UPDATE_PIN);

    //Set HET pins open drain enable 
    hetREG2->PDR = (uint32) 0x00000000U;
	
    // Check the pin if high then update.
    if ((hetREG2->DIN & (0x1 << FORCED_UPDATE_PIN) ) == 1)
    {
       
       CPUUPDATE=1;
    }

代码的 N2HET 部分由 HALCON 生成、并且引脚复用部分也根据 HALCON 被修改。 完成上述设置后、客户向 D3引脚输入3.3V 电压、但实际上没有影响。 客户想知道是否有部件缺失或错误?

此致、

樱桃周

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

    您好、Cherry、

    如果只使用 N2HET 引脚作为 GIO,则不必运行 hetInit(),其中 NHET 汇编代码被复制到 NHET RAM 并被执行。 在 HALCoGen 生成的 NHET 汇编代码中、N2HET2[12]用于边沿检测。

    下面是使用 N2HET 引脚作为 GIO 的示例:

    #include "het.h"

    #include "Gio.h"

    main(){

       gioInit();

       gioSetDirection (hetPORT2、0xFFFFFFF);//N2HET2[12]作为输入、其他为输出

       如果((gioGetBit (hetPORT2、12)==1)
       {

           CPUPDATE=1;
       }

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

    N2HET2[12]:pinMuxReg ->PINMUX[97]= SIGNAL_N2HET2_12_D3 | SIGNAL_N2HET2_13_D2 | SIGNAL_N2HET2_14_D1 | SIGNAL_N2HET2_15_K4;

    N2HET2[12]的这个引脚多路复用配置被用作输入是正确的。