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修改的