您好:
在使用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延时不会这么明显的