TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LC4357: 使用N2HET[12]作为GIO脚,配置 寄存器失败

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;

希望以上解答对您有所帮助,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LC4357: 使用N2HET[12]作为GIO脚,配置 寄存器失败
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1