打印
[DSP]

关于DSP28377D 中断配置流程

[复制链接]
569|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangmangui|  楼主 | 2019-7-31 21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP系统v118 调试过程中出现了添加天线配置函数后,系统定时器无法使用的现象,猜测是因为天线配置模块影响了定时器的开启

DSP的中断过程流程 :


[img][/img]

[img][/img]


外设产生中断的流程:

1、中断锁存至PIE的中断标志及存器的第x组第y通道 : PIEIFRx.y

2、如果PIEIERx.y设置为有效,那么终端将被传递至后一级

3、如果PIEACK.x标志位被清除,那么中断传递至下一级,并将PIEACK.x置位1

4、中断锁存至IFR.X中

5、如果IER.x有效,中断传输至下一级

6、如果INTM清零,那么CPU收到中断。

7、后端的中断则开始继续传递

8、cpu保存当前状态至stack

9、IFR.X 和 IER.X 被清除,INTM置位,EALLOW被清除

10、cpu从PIE获取中断地址,并且PIE.PIEIFRX.Y清除

11、cpu执行中断


[img][/img]



配置和是能中断过程 :

1、静止全局中断(禁止cpu中断接受)

2、是能PIE通过设置ENPIE位在PIECTRL寄存器中

3、配置和定位中断向量表;并使能PIE如下表所示

4、设置合适的PIEIERX,给PIE组和通道赋值

5、使能CPU IER是能cpu接受中断

6、在外设中是能中断

7、是能全局中断EINT OR CLRC INTM

[img][/img]



实例 : 
1、使用TI dsp 28377d 的定时器列程

第一步 : 关闭全局中断使能 DINT:


[img][/img]

第二步 : 禁止PIE使能,并且清除PIE中所有的中断标志以及中断表设置


[img][/img]


第三步 :关闭CPU 的中断使能


[img][/img]

第四步 : 初始化PIE VECTOR并且使能PIE


[img][/img]


第五步 :外设的中断配置


[img][/img]


第六步 : 使能CPU的第x组中断接受使能


[img][/img]


第七步 : 打开PIE对应的x组y通道接受使能


[img][/img]


第八步 : 打开全局中断使能


[img][/img]


2、使用v118版程序中断配置过程(修改之后的)

第一步 初始化piectr;其中已经包括语句DINT(关闭全局中断过程)

第二步 关闭PIE中断功能;通过设置PIRCTR.BIT.ENPIE = 0来实现,

第三步 清空中断设置(即PIEIER.X PIEIFR.X中原来的配置值);


[img][/img]


第四步 清空中断列表,并且使能PIE功能(通过设置PIRCTR.BIT.ENPIE = 1来实现 )


[img][/img]


第五步 清空CPU中断接受组

     [img][/img]


第六步 配置定时器的中断选项

          第26 - 30行为配置中断入口地址
   第42 - 44行为配置CPU响应中断组(其中TIMER0是通过第PIEIER1 . 7来链接到PIE上的,所以CPU按照分组响应中断,顾此处的IER |= M_INT1就是这个意思);
          第52行表示了 我需要使能PIEIER1.7通道;是因为TIMER0的中断响应链路是通过PIE的第一组,第7个通过来连通的。



[img][/img]


第七步 配置DMA中断和SPI_TX / SPI_RX 中断

     第299 - 第302行配置DMA中断响应地址

     第312 - 第313行:其中DMA_CH5和DMA_CH6是通过PIEIER7.5和PIEIER7.6 链接到PIE上的;所以首先需要使能
IER |= M_INT7 需要使能第7组通道,让CPU能够响应; IER |= M_INT6是因为SPI_TX/SPI_RX的中断是连接到PIEIER6.1和PIEIER6.2上的;所以也需要使能;

      第315 - 第316则是分别配置使能DMA_CH5 / DMA_CH6通道的使能


[img][/img]


第八步 打开全局中断使能


[img][/img]



总结 :
设置中断的过程一般如下 :
第一步 : 关闭全局中断(DINT)


第二步 :关闭PIE功能,通过设置PIECTR.BIT.ENPIE = 0;来实现


第三步 :清空PIEIER 和PIEIFR寄存器;用以清除所有的cpu中断响应组


第四步  : 清空中断向量表,即清空所有的中断地址表


第五步 :关闭CPU中断响应;cpu寄存器中也有两个寄存器用于设置中断;即IER个IFR;全部置位为0即可;


第六步 : 设置外设的中断触发 : 
               
               1)配置中断函数地址
               2)打开PIE中断通道组即使能PIEIERX.Y = 1;
               3)配置CPU的中断寄存器以打开cpu对中断的响应即IER |= M_INTX
               
第七步 : 打开全局中断使能     EINT / ERTM


中断配置的位置发生变化是有可能影响中断的触发的

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入【TI DSP 论坛】 & 【DSP 技术】           TI忠诚粉丝!

935

主题

26374

帖子

586

粉丝