专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
C6000系列DSP的中断系统分析
2019-07-14 21:43
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
3820
0
1788
C6000系列DSP的中断系统分析
C6000
系列
DSP
的中断模块框图
仔细观察上图,可以看出C6455有一下几种中断:
1. Reset
2. NMI 不可屏蔽中断
3. EXCEP 硬件异常
4. 12个普通中断INT[15:4]
我们使用的最多的也就是普通中断,所以这也是本文的重点。
接下来,沿着INT[15:4]往后退,看到的是Interrupt Selector,它的功能好比一个筛子(shuffle),对所有中断事件进行选择性映射。如下图示:
看了这个图,我们又不难发现,中断选择器是一个128-->12的映射,这也就意味着,有116个系统事件被过滤掉了。
接着往回走,可以看到,中断选择器有三个输入,分别是:
RESET
Event[3:0]
Event[127:4]
RESET不看了,硬件重启。
EVENT[127:4]是系统事件
,这个事件的编号根据芯片的不同而不同,拿6455来说,部分映射情况如下面两个图片所示:
不难看出,这些编号都是固定的,基本囊括了芯片上所有模块的事件。
最后,比较特别的是Event[3:0],它是组合事件,通过下图的介绍应该就一目了然了。
可见,Event0对应 4-31号事件的组合事件,Event2对应32-63号事件的组合事件,以此类推。
那么,怎么组合呢?
这就不得不从寄存器开始说起了。首先,先看如下3个寄存器组:
(注:每组都是4个32位寄存器,每一组的EVTxxx0[3:0]都不使用,故这里不涉及到组合事件)
系统事件发生时(
124个
),它们在事件标志寄存器中(EVTFLAGx)的对应位会被置1,此时可以通过向EVTCLR寄存器中对应位写入1来清除中断标志,然后执行中断服务程序。
若不清除,那么相同事件再次发生时会产生问题。故,手动清除中断标志是必须的!且只能通过向EVTCLR寄存器中写入1来清除,不能直接向EVTFLAG寄存器写入0,因为EVTFLAG寄存器是Read Only的。
另外,EVTSET寄存器的存在意义就是我们可以手动产生中断,这一点可以让我们测试中断服务程序的功能。
介绍完上面三个基本的寄存器组,我们可以开始讨论组合事件的机制了。先看下图:
可以明显的看出,124个事件被分成了4组。然后经过两个寄存器的运算,产生组合事件。
下面介绍EVTMASK和MEVT FLAG两个寄存器组。
EVT MASK寄存器组用于决定每一个组中的哪些事件被屏蔽掉。默认情况下,没有事件被屏蔽(全0)。
鉴于最终的组合事件EVTx的发生机制是对Group中所有事件进行或运算,即只要Group中有一个事件发生,就代表组合事件发生。
举个例子:
假如EVTMASK3=0x0FFFFFFF,那么代表只有事件124,125,126,127参与组合。其他事件96-123都被忽略。
MEVT FLAG寄存器同EVT FLAG寄存器的值相同,表示事件是否发生。这样一旦知道了EVTMASK和MEVT FLAG两个寄存器的值就可以断定组合事件EVTx(0<=x<=3)是否发生了。
发送
看不清?
0条回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>