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

EVMK2H GPIO8(Set dir as input) interrupt 不按预期触发的问题(调试两天了)

您好:

      在使用TI 官方的EVMK2H的开发板(VER4,66AK2H14),把GPIO8配置成输入,上升沿和下降沿都触发, 中断的周期不按预期触发。

      但是如果把GPIO8 配置成输出,然后在定时器周期中断服务函数中切换GPIO8的输出寄存器,这时GPIO8的中断周期按预期触发、

     实验步骤:

       1.关闭所有中断使能

     2.配置好GPIO8的输入输出,中断沿的设置,使能GPIO Z中断

      3.直接把82 GPIO_INT8 Local GPIO interrupt映射到CPU INT4,

      4.配置TIMER 寄存器及相关中断,直接映射到CPU INT12. 

      5.使能所有的相关中断寄存器期.     

       6.1:如果把GPIO8 配置成输出,在Timer ISR 中切换GPIO8 的状态,GPIO ISR 触发周期正常。

         用示波器观察120Pin 接口的Pin78(SOC_GPIO_08),波形符合预期。

      6.2:如果把GPIO8 配置成输入,失效掉Timer ISR 中切换GPIO8的程序,原则上不应该有中断发生,

           GPIO8 没有外部输入源,下拉到地,用示波器观察120Pin 接口的Pin78(SOC_GPIO_08),没有波形,

           奇怪的是GPIO8 ISR 不停的在触发,也没有什么周期可言。

            也试过其他GPIO9/10,当配置成输入时,同样的情况发生。

     6.3:通过120 PIN Expending Header 外接GPIO8输入源(FPGA 产生中期信号),也是同样的情况发生。

              确定过GPIO8 的PIN没有搞错,在main函数中while(1){  readGPIO8 IN_DATA,set it to GPIO12(DBG RED LED),示波器显示波形和输入同步。

   7.实在是没办法了,就使用官方提供的K2_STK_DSP_v1.1/GPIO 的例子,使用的Combine Interrupt,我自己的直接把GPIO8映射到DSP INT4,把MCSDK 改成ProcesserSDK,只combine GPIO8 interrupt,去掉GPIO9/10/11/12 防止干扰分析问题,把x#define GPIO_LOOP_BACK_TEST 1 改成 #define GPIO_LOOP_BACK_TEST0 把GPIO设为输入,情况也是一样。

    已经调试2 天了,实在想不到哪里出错,请大家帮帮忙,感谢!

    等会去公司上传代码。

硬件及软件版本如下:

DSP Core0 的裸机程序

EVMK2E VER 4 开发板

CCS7.3 + 8.1 Compiler

PROCESSER-SDK-RTOS-K2HK v4.01

Tiger Huang:

7.实在是没办法了,就使用官方提供的K2_STK_DSP_v1.1/GPIO 的例子,使用的Combine Interrupt,我自己的直接把GPIO8映射到DSP INT4,把MCSDK 改成ProcesserSDK,只combine GPIO8 interrupt,去掉GPIO9/10/11/12 防止干扰分析问题,把x#define GPIO_LOOP_BACK_TEST 1 改成 #define GPIO_LOOP_BACK_TEST 0 把GPIO设为输入,情况也是一样

我自己的直接把GPIO8映射到DSP INT4 的意思是说我自己的程序,我并没有修改 官方 GPIO 例程的中断映射。请不要误会。

Tiger Huang:

回复 Tiger Huang:

附上程序代码

Tiger Huang:

回复 Tiger Huang:

什么都没改,换成EVMK2E 的开发板中断都没有问题,难道是EVMK2H板的硬件有问题?

EVMK2E GPIO_8/9/10/11没有复用,EVMK2H的GPIO 8/9/10/11 复用其他接口.如果是这个原因吗?如果是,怎么使用GPIO_0–GPIO7的中断?

   

Tiger Huang:

使用CIC2即可解决问题。

Tiger Huang:

您好:

由于使用EVMK2H的开发套件遇到GPIO_08–GPIO_15的中断有些问题不知道如何解决。

EVMK2H的GPIO_08–GPIO_11 有第三功能,GPIO_12_GPIO_15 用在LED 上, 所有想试下GPIO_00-GPIO_07 之间的中断,

但是在DSP CorePac 文档中没有找到相应的GPIO_00-GPIO_07 的中断向量,只找到GPIO_08 至GPIO_15的中断向量,

如何在DSP Core 中使用GPIO_00-GPIO07 的中断呢?

谢谢!

Tiger

Tiger Huang:

回复 Tiger Huang:

使用CIC2 中的GPIO0即可解决此问题,还好项目中还留有预留GPIO,改下板就可以了。

同样的代码,EVMK2E(66AK2E05) GPIO_08 中断就可以正常,

而EVMK2H(66AK2H14,REV 4) GPIO_08  至GPIO_15的输入中断不正常,输出中断都正常,TI 的同事能帮忙确认一下吗?

Tiger Huang:

回复 Tiger Huang:

使用CIC2 产生GPIO_INT8 映射到INTC 和直接映射GPIO_INT8 到INTC ,GPIO_INT8 中断出现相同的问题。

附上波形:

Thomas Yang1:

回复 Tiger Huang:

你在while循环里加点延时,上下降沿切换间隔时间长点,试试看是什么状态呢?

Tiger Huang:

回复 Thomas Yang1:

前面的波形的周期是700us,现在的是50ms。

,

Thomas Yang1:

回复 Tiger Huang:

系统里有没有在跑其他进程,是多任务还是只有这个GPIO程序?中断也是只有1个?按道理CIC延时不会这么明显的

赞(0)
未经允许不得转载:TI中文支持网 » EVMK2H GPIO8(Set dir as input) interrupt 不按预期触发的问题(调试两天了)
分享到: 更多 (0)