C6727项目出现一个小问题:开关按钮在操作的瞬间,它产生的开关声会进入内藏的麦克风,带着耳机听的时候,感觉很不爽。于是想在开关操作瞬间,静音一 段时间,这需要开关直接对DSP产生中断,可是原先的硬件设计上,是把开关和DSP的UHPI引脚相连,在DSP空闲时对开关进行轮询。
仔细查了 C6727的datasheet,发现C6727没有通用的中断引脚,只能将McASP的AMUTEIN信号通过dMAX向DSP产生中断。而 AMUTEIN也没有对应的引脚,它需要通过设置CFGMCASP寄存器来决定DSP的哪个引脚来做AMUTEIN信号。没想到弄一个外部中断这么麻烦, 下面就把设置外部中断的完整步骤列出来,以McASP0为例:
1.设置CFGMCASP0寄存器,这个寄存器决定DSP哪个引脚将作为AMUTEIN的信号输入。例如我选择了CFGMCASP0 = 0x00000001,也就是选择了AXR0[7]引脚。
2.设置McASP的寄存器PFUNC和PDIR,使AXR0[7]成为通用输入引脚。
3.设置McASP的寄存器AMUTE的INEN位为0,让McASP忽略AMUTEIN信号。
4.设置dMAX的Event26(MCASP0ERR)的Event Entry,让MCASP0ERR信号直接对DSP产生中断,这个Event Entry中可以选择向DSP产生哪个中断,我选择的是INT15。这样,AMUTEIN信号会对dMAX产生MCASP0ERR event,再由dMAX把这个event转换为DSP的中断INT15。
5.开启DSP的中断INT15,并编写中断服务程序。
6.设置dMAX的DEPR寄存器的来决定中断的极性,即是上升沿还是下降沿产生中断。 |