Part Number:TMS570LC4357Other 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 checkhetREG2->PCR = (uint32) 0x00000005U;/** - Fill HET RAM with opcodes and Data */(void)memcpy((void *)hetRAM2, (const void *)het2PROGRAM, sizeof(het2PROGRAM));//Setup prescaler valueshetREG2->PFR = (uint32)((uint32) 6U << 8U)| ((uint32) 0U);// Set the default value of pinhetREG2->DOUT = (U32)((U32)0U << FORCED_UPDATE_PIN);// Set the N2HET2[3] pin as inputhetREG2->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 enablehetREG2->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修改的
Susan Yang:
感谢您对TI产品的关注!为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上,将由资深的英文论坛工程师为您提供帮助。
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/
,
li xy:
我的公司邮箱屏蔽了英文论坛发来的激活邮件,导致了我没办法去英文论坛问
,
Susan Yang:
您可以先参考一下下面的讨论,若还是不能正确配置的话,我会在英文E2E发帖
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608025/ccs-tms570lc4357-accessing-n2het-as-gio
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/939381/ccs-tms570lc4357-interrupts-for-n2het1-2-as-gpio
,
Cherry Zhou:
您好,如果您只使用 N2HET 引脚作为 GIO ,则不必运行 hetInit(),其中的NHET 汇编代码会被复制到 NHET RAM 并执行。 在 HALCoGen 生成的 NHET 汇编代码中,N2HET2[12] 用于边缘检测。以下为使用 N2HET 引脚作为 GIO 的示例,供您参考:
#include "het.h"
#include "gio.h"
main(){
gioInit();
gioSetDirection(hetPORT2, 0xFFFFEFFF); //N2HET2[12] as input, others are output
if ((gioGetBit(hetPORT2, 12) == 1) { CPUUPDATE=1; }
}
以及您用作INPUT的 N2HET2[12] 的 pinmux 配置是正确的。Pinmux for N2HET2[12]:pinMuxReg->PINMUX[97] = SIGNAL_N2HET2_12_D3 | SIGNAL_N2HET2_13_D2 | SIGNAL_N2HET2_14_D1 | SIGNAL_N2HET2_15_K4;
希望以上解答对您有所帮助,谢谢。