一、验证思路
1、中断寄存器测试
通过阅读协议发现,INTSTATU和INTCLEAR两个寄存器的地址是一样的,一般来说INTSTATU是读有效,而INTCLEAR寄存器是写有效,首先检查一下同一个地址能否映射两个寄存器;结果发现同一个地址无法映射到两个寄存器,通过修改寄存器名称,把编译通过,只是名称不同,其实还是映射到一个寄存器而已;
2、中断功能测试
中断主要由三个寄存器控制,分别是interrupt enable、interrupt polarity和interrupt type共四种组合, 16bit都可以分别产生不同类型中断,具体功能如下:
分别对16bit中断进行遍历,也就是对每1bit位进行4种中断的组合,最后通过外部信号portin进行各个bit位触发中断,每一种中断被触发记录后,分别清除后(清除type和polarity),才能触发其他类型的中断,最后由信号GPIOINT和COMBINT来判断中断的当前状态;
当前的中断类型配置为low_level(电平触发,低电平有效)在portin由高拉低后,因为portin到fclk需要做同步,如果等待2拍FCLk后读回数据,driver组件会在下降沿采集,如果经过3拍(FCLK)读回数据的话,会在上升沿刚好采样;portin拉高后,随后拉低,清除当前中断,再对其他类型中断进行遍历,如电平触发,高电平有效;边沿触发,上升有效,边沿触发,下升沿有效。