Other Parts Discussed in Thread: HALCOGEN
你好:
由于我的4357芯片的GIO引脚几乎全被占用,留给我做为输入的IO脚不好焊线,所以我打算使用N2HET作为普通的IO脚来使用,但是我在进行配置的时候遇到了些问题:
首先,我想将N2HET2 pin配置为 IO输入,下拉,没有 open-drain,一旦检测到外部输入的高电压,我将进行下一步动作。
1. 我使用的芯片封装是TMS5704357BZWTQQ1R,其中使用的物理引脚是"D3",对应的PINMUX功能是"N2HET2[12]/MIBSPI2NENA",因此我在data sheet 中的"I/O Multiplexing and Control Module (IOMM)"中的功能选择里面找到了"Control of Multiplexed Inputs",于是就找到了"PINMMR97[0]",将它设置为输入。
pinMuxReg->PINMUX[97] = SIGNAL_N2HET2_12_D3 | SIGNAL_N2HET2_13_D2 | SIGNAL_N2HET2_14_D1 | SIGNAL_N2HET2_15_K4; // n2het2[12]
2. 随后我在N2HET2的寄存器里面,使用HALCON工具对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; }
我按照这样设置完成之后,给D3引脚输入3.3V,但实际上没有任何效果,请问我是遗漏了什么部分吗? N2HET部分代码就是HALCON生成的,pinmux那部分我也是按照HALCON修改的