我们在产品中使用 TI Concerto 微处理器 F28M36P63C2ZWT。 有两个 GPIO 引脚(GPIO12、GPIO13)被用作外部输入来触发 I/O 上发生的事件(下降沿) 为了滤除噪声、我们在这两个 GPIO 引脚上实施鉴定时间设置。 我们期望在输入信号脉冲宽度超过鉴定时间时触发中断。 但是、当我们使用函数发生器生成的给定脉冲对其进行测试时、我们发现只要脉冲宽度大于140ns、无论在限定时间中设置了什么、都可以触发中断 (即使在使用周期的最大0xFF 和6个样本的情况下、我们也在17us 进行了测试)。
下面是我们将 GPIO12设置为 XINT3的代码、鉴定时间为17us。
//设置鉴定时间段
GpioCtrlRegs.GPACTRL.bit.QUALPRD1 = 0xFF;//对于 GPIO 8-15、2*(6-1)* 6.7*255 (@150MHz)= 17、085ns
GpioG1CtrlRegs.GPAMUX1.bit.GPIO12 = 0;// GPIO
GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;//设置为输入
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 2;//使用6个样本的输入限定器
GpioTripRegs.GPTIP6SEL.bit.GPTIP6SEL = 12;//将 GPTIP6SEL 行程输入3 (XINT3)映射到 PA0_GPIO012
XIntertRegs.XINT3CR.bit.Polarity = 0;//0-下降沿、故障事件低电平有效
XIntertRegs.XINT3CR.bit.ENABLE = 1;//启用外部中断
根据 TI 文档 SPRS825F、中断脉冲持续时间应是带有限定符的 tw (QSW)+1Tx (SCO)。 当我们将 QUALPRD 设定为0xFF 时,它应该给出 tw (QSW)=2*(6-1)*255*6.7ns=17,085ns。 长度小于此值的任何脉冲都不应触发中断。 我们测试了脉宽为100ns 至20us 的输入信号。 只要宽度大于140ns、它就会触发中断。
如果上面的代码没有限定符与中断一起工作、会出现什么问题?