微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640 IO中断故障问题

CC2640 IO中断故障问题

时间:10-02 整理:3721RD 点击:

我用cc2640做中断,对外面的反应做处理,但是现在我在IO上用逻辑分析仪捕捉的信号是(25Mhz采样,上下跳变均出现,而软件输出并不对应):

而在CCS中debug中输出的信息是(与逻辑分析仪捕捉到的不一致,逻辑分析仪25Mhz采样并未出现干扰,逻辑分析仪中高有效为2.8V,1v以上的都测过,都没有毛刺或干扰):

/*
 * 
 */
static uint32_t InterruptCnt = 0;
static uint32_t InterruptHighCnt = 0;
static uint32_t InterruptLowCnt = 0;

Q_Touch_PAD_STATE Q_Touch_PadState = Q_Touch_PAD_END;
__STATIC_INLINE void Q_Touch_InterruptCallBackFxn(PIN_Handle handle, PIN_Id pinId)
{
	uint_t PinValue;

	CPUdelay(100);	// 100
	PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
	
	if(PinValue == 1)	// high voltage , touched
	{
		CPUdelay(100);	// 100
		PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
		if(PinValue == 1)	// high voltage , touched
		{	
#ifdef Qting_DEBUGInterruptHighCnt++;System_printf("InterruptHighCnt = %lu\n\n", (ULong)InterruptHighCnt);System_flush();
#endifQ_Touch_PadState = Q_Touch_PAD_TOUCHED;
		}
		else;
	}
	else if(PinValue == 0)	// low voltage , not touch
	{
		CPUdelay(1);	// 100
		PinValue = PIN_getInputValue(Qting_TOUCH_FB_PIN);
		if(PinValue == 0)	// low voltage , not touch
		{
#ifdef Qting_DEBUGInterruptLowCnt++;System_printf("InterruptLowCnt = %lu\n", (ULong)InterruptLowCnt);System_flush();
#endifQ_Touch_PadState = Q_Touch_PAD_REMOVED;
//if(InterruptLowCnt != InterruptHighCnt)//	System_printf("Cnt Error! \n");
		}
	}
	else
		;
#ifdef Q_DEBUG
	InterruptCnt++;
	//System_printf("InterruptCnt = %lu\n\n", (ULong)InterruptCnt);
	//System_flush();
	
#endif
}

是否有有人遇到此类问题,或是TI工程师帮忙看看,谢谢了

Rex Kung,

首先问一下你的中断触发是上升沿还是下降沿触发的?

双边触发的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top