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

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

此问题尚无答案
All Replies
  • 秀才175分

    您好:

          在使用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_TEST 0 把GPIO设为输入,情况也是一样。

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

        等会去公司上传代码。

    硬件及软件版本如下:

    DSP Core0 的裸机程序

    EVMK2E VER 4 开发板

    CCS7.3 + 8.1 Compiler

    PROCESSER-SDK-RTOS-K2HK v4.01

  • 秀才175分

    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 例程的中断映射。请不要误会。

  • 秀才175分
    GPIO.7z

    附上程序代码

  • 秀才175分

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

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

       

  • 秀才175分

    使用CIC2即可解决问题。

  • 秀才175分

    您好:

    由于使用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

  • 秀才175分

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

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

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

  • 秀才175分

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

    附上波形:

  • 探花13655分

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

    上述内容如果回答了您的问题,请点击标签栏“是”按钮。您的轻轻一点,会帮助我们更好的管理论坛内容,谢谢!

  • 秀才175分

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

    ,

  • 探花13655分

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

    上述内容如果回答了您的问题,请点击标签栏“是”按钮。您的轻轻一点,会帮助我们更好的管理论坛内容,谢谢!

  • 秀才175分

     就是裸机程序,源程序见回复3.

    单任务,就几个中断(GPIO/Timer)+main函数 。

    上图蓝色波形是GPIO8的真实波形,把中配置成上升和下降都触发,在中断中不停的切换另外一个GPIO口(LED),见红色波形。

    其实在仔细观察波形,发现不知什么原因GPIO8的中断多执行了一次,没有看到gpio8的波形有变化,不知道为什么?

    更为奇怪的的是同样的CODE,在EVMK2E(66AK2E05)中完全没有问题,偏偏在EVMK2H(66AK2H14)中出现此问题。

    公司已经购买好几块EVMK2H作为控制板卡,测试板卡中FPGA 产生周期信号给DSP的GPIO,此后DSP 在处理中断事务。

    EVMK2H中,使用另外的一个GPIO口,如GPIO0,使用CIC2的GPIO_INT0 产生中断源给DSP INTC, 波形正常

    使用GPIO8 (配置成输入)的中断,不管是把GPIO_INT8 直接映射到INTC 还是通过CIC2间接映射到INTC,波形不正常

    如果把GPIO8配置成输出,在TIMER 中断中不停地切换GPIO8的状态,波形也正常

    难道是ARM (Linux)那边出了触发的?没见到GPIO的电平的任何变化。

    Linux那边使用的是出厂的FileSystem。再说ARM也改变不了DSP的INTC控制器吧。