时 间 记 忆
<<  < 2024 - >  >>
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
    
 用户注册 忘记密码
友 情 连 接
博 客 信 息
  • 日志:54
  • 评论:1
  • 留言:0
  • 访问:1509


 
教你学DSP28335 第六讲 中断系统及应用
[ 2022/1/21 23:39:00 | By: 欧高技术 ]
 
一、CPU进行正常程序处理的时候,有时会被要求接收更高级别指令或实时性要求更高的任务,不得不中断当前的程序处理,而去响应后者,即进入新的中断服务程序。当处理完这些任务后,要继续刚才的处理,因此在执行新的中断服务程序的时候,必须要保存执行现场以确保在完成更高级别任务或指令时能够再接着做刚才被打断的任务,整个过程就是CPU的中断响应机制。额外过来的任务未必是更高一级的任务,没必要一定要中断当前任务去响应它,当然有时候,过来的任务非立即执行不可,因此这些中断请求被分类管理。这些中断请求被分为可屏蔽中断,与不可屏蔽中断两大类。可屏蔽中断就是根据目前处理任务的优先级别来考虑其是否优先处理,或者是立即处理,可以根据实际情况来设置优先级别以及决定到底要不要响应此类中断,而不可屏蔽中断,只要接到中断请求,就要做出中断处理。同时多个任务到来,究竟先处理哪个中断请求,这就需要对各个中断进行优先级别排序。下边详细介绍F28335的中断机制。

二、F28335有很多的资源,有很多的外设,这些外设与相关资源都有可能发布新的任务让内核来判断与处理,也就是F28335的可能中断源有很多。F28335的中断源可分为片内外设中断源,如PWM、CAP、QEP、定时器等片外中断源,外部中断输入引脚XINT1、XINT2引入的外部中断源。这些中断源将中断请求信号传递给内核就肯定需要中断线,F28335的中断线是有限的。

三、F28335内部有16个中断线,其中包括2个不可屏蔽中断(RESET和NMI)14个可屏蔽中断。可屏蔽中断通过相应的中断使能寄存器使能或者禁止产生的中断,在这14个可屏蔽中断中,其中定时器1与定时器2产生的中断请求通过INT13、INT14中断线到达CPU,这两个中断已经预留给了实时操作系统,因此剩下12个可屏蔽中断可供外部中断和处理器内部的单元使用。F28335的外设中断源远不止12个,有58个,如何将这58个外设中断源分配给这12个中断线,这就需要F28335 PIE外设中断扩展模块来完成。F28335的中断源以及连接如图6.1所示:

图6.1

四、F28335的中断采用的是三级中断机制,分别为外设级中断PIE级中断CPU级中断,最内核部分为CPU级中断,也就是CPU只能响应从CPU中断线上过来的中断请求,但F28335中断源众多,CPU没有那么多中断线,在有限中断线的情况下,只能安排中断线进行复用,其复用管理就有了中间层的PIE级中断,外设要能够成功产生中断响应,就要首先经外设级中断允许,然后经PIE允许,然后经CPU允许,最终CPU做出响应。

图6.3

五、F28335处理器内部集成了多种外设,每个外设都会产生一个或者多个外设级中断。由于CPU没有能力处理所有外设级的中断请求,因此F28335的CPU让出了12个中断线交给PIE模块进行复用管理。图6.4给出了中断扩展模块的结构图。

图6.4 PIE中断扩展模块

5.1 PIE将外设中断分成了12个组,分别对应着CPU的12个可屏蔽中断线,每1组由8个外设级中断组成,这8个外设中断分别对应相应外设接口的中断引脚,PIE通过一个8选1的多路选择器将这8个外设中断组成1组。具体连接关系如表6.1所列。实际有效外设中断为58个,其余为保留。PIE第一组中断分别为WAKE信号、TIMER0信号、ADC信号、XINT2、XINT1、第三个中断保留、SEQ2、SEQ1。

5.2 与外设级中断类似,在PIE模块内每组中断有相应的中断标志位(PIEIFRx)和使能位(PIE-IERx.y)。除此之外,每组PIE中断(INT1~INT12)有一个响应标志位(PIEACK)。图6.5给出了PIEIFR和PIEIER不同设置时的PIE硬件的操作流程。

5.3 一旦PIE控制器有中断产生,相应的中断标志位(PIEIFRx.y)将置1。如果相应的PIE中断使能位也置1,则PIE将检查相应的PIEACKx以确定CPU是否准备响应该中断。如果相应的PIEACKx位清零,PIE向CPU申请中断;如果PIEACKx置1,PIE将等待到相应的PIEACKx清零才向CPU申请中断。PIE通过对PIEACKx的位控制来控制每1组中只有1个中断能被响应,一旦响应后,就需要将PIEACKX相应为清零,以让它能够响应该组中后边过来的中断。

INTX

INTx.8

INTx.7

INTx.6

INTx.5

INTx.4

INTx.3

INTx.2

INTx.1

1

WAKE

TIMER0

ADC

XINT2

XINT1

保留

SEQ2

SEQ1

2

保留

保留

EPWM6 _TZINT

EPWM5_TZINT

EPWM4_TZINT

EPWM3_TZINT

EPWM2_TZINT

EPWM1_TZINT

3

保留

保留

EPWM6_INT

EPWM5_INT

EPWM4_INT

EPWM3_INT

EPWM2_INT

EPWM1_INT

4

保留

保留

ECAP6_INT

ECAP5_INT

ECAP4_INT

ECAP3_INT

ECAP2_INT

ECAP1_INT

5

保留

保留

保留

保留

保留

保留

EQEP1 _INT

EQEP1_INT

6

保留

保留

MX INTB

MR INTB

MXI NTA

MRI NTA

SPITX INTA

SPIRXINTA

7

保留

保留

DINT CH6

DINT CH5

DINT CH4

DINT CH3

DINT CH2

DINTCH1

8

保留

保留

SCI TXINTC

SCI RXINTC

保留

保留

I2CIN T2A

I2CIN T1A

9

ECAN1 INTB

ECAN0 1NTB

ECAN1 INTA

ECAN01 NTA

SCITX INTB

SCI RXINT

SCI TXINTA

SCI RXINTA

10

保留

保留

保留

保留

保留

保留

保留

保留

11

保留

保留

保留

保留

保留

保留

保留

保留

12

LUF

LVF

保留

XINT7

XINT6

XINT5

XINT4

XINT3


5.4 一旦CPU申请中断,CPU级中断标志位(IFR)将置1。中断标志位锁存到标志寄存器后,只有CPU中断使能寄存器(IER)或中断调试使能寄存器(DBGIER)相应的使能位和全局中断屏蔽位(INTM)被使能时才会响应中断申请。

5.5 CPU级使能可屏蔽中断采用CPU中断使能寄存器(IER)还是中断调试使能寄存器(DBGIER)与中断处理方式有关。标准处理模式下,不使用中断调试使能寄存器(DBGIER)。只有当F28335使用实时调试(Real-time Debug)且CPU被停止(Halt)时,才使用中断调试使能寄存器(DBGIER),此时INTM不起作用。如果F28335使用实时调试而CPU仍然工作运行,则采用标准的中断处理。

5.6 CPU响应中断,就是CPU要去执行相应的中断服务程序,其响应过程是CPU将现执行程序的指令地址压入堆栈,跳转到中断服务程序入口地址,中断服务程序的入口地址就是中断向量表,这个中断向量表用2个16位寄存器存放。入口地址是22位的,地址的低16位保存在该向量的低16位;地址的高16位则保存在它的高6位,更高的10位保留。

名称

向量ID

地址

长度/16位

描述

CPU优先级

PIE组优先级

Reset

0

0x0000 0D00

2

复位 总是从地址位0x3FFFC0的Boot ROM 中获取

1最高

 

INT1

1

0x0000 0D02

2

未使用,参考PIE组1

5

INT2

2

0x0000 0D04

2

未使用,参考PIE组2

6

INT3

3

0x0000 0D06

2

未使用,参考PIE组3

7

INT4

4

0x0000 0D08

2

未使用,参考PIE组4

8

INT5

5

0x0000 0D0A

2

未使用,参考PIE组5

9

INT6

6

0x0000 0D0C

2

未使用,参考PIE组6

10

INT7

7

0x0000 0D0E

2

未使用,参考PIE组7

11

INT8

8

0x0000 0D10

2

未使用,参考PIE组8

12

INT9

9

0x0000 0D12

2

未使用,参考PIE组9

13

INT10

10

0x0000 0D14

2

未使用,参考PIE组10

14

INT11

11

0x0000 0D16

2

未使用,参考PIE组11

15

INT12

12

0x0000 0D18

2

未使用,参考PIE组12

16

INT13

13

0x0000 0D1A

2

XINT13或CPU定时器1

17

INT14

14

0x0000 0D1C

2

CPU定时器2(用于TI/RTOS)

18

DATALOG

15

0x0000 0D1E

2

CPU数据记录中断

19(最低)

RTOSINT

16

0x0000 0D20

2

CPU实时操作系统中断

4

EMUINT

17

0x0000 0D22

2

CPU仿真中断

2

NMI

18

0x0000 0D24

2

外部不可屏蔽中断

3

ILLEGAL

19

0x0000 0D26

2

非法操作

USER1

20

0x0000 0D28

2

用户定义的软件操作(TRAP)

USER2

21

0x0000 0D2A

2

用户定义的软件操作(TRAP)

USER3

22

0x0000 0D2C

2

用户定义的软件操作(TRAP)

USER4

23

0x0000 0D2E

2

用户定义的软件操作(TRAP)

USER5

24

0x0000 0D30

2

用户定义的软件操作(TRAP)

USER6

25

0x0000 0D32

2

用户定义的软件操作(TRAP)

USER7

26

0x0000 0D34

2

用户定义的软件操作(TRAP)

USER8

27

0x0000 0D36

2

用户定义的软件操作(TRAP)

USER9

28

0x0000 0D38

2

用户定义的软件操作(TRAP)

USER10

29

0x0000 0D3A

2

用户定义的软件操作(TRAP)

USER11

30

0x0000 0D3C

2

用户定义的软件操作(TRAP)

USER12

31

0x0000 0D3E

2

用户定义的软件操作(TRAP)

 


PIE组1向量-复用CPU的INT1中断

INT1.1

32

0x0000 0D40

2

SEQ1INT(ADC)

5

1(最高)

INT1.2

33

0x0000 0D42

2

SEQ2INT(ADC)

5

2

INT1.3

34

0x0000 0D44

2

保留

5

3

INT1.4

35

0x0000 0D46

2

XINT1

5

4

INT1.5

36

0x0000 0D48

2

XINT2

5

5

INT1.6

37

0x0000 0D4A

2

ADCINT(ADC)

5

6

INT1.7

38

0x0000 0D4C

2

TINT0(CPU定时器0)

5

7

INT1.8

39

0x0000 0D4E

2

WAKEINT(LPM/WD)

5

8(最低)


PIE 组2 向量-复用CPU的INT2中断

INT1.1

32

0x0000 0D40

2

SEQ1INT(ADC)

5

1(最高)

INT1.2

33

0x0000 0D42

2

SEQ2INT(ADC)

5

2

INT1.3

34

0x0000 0D44

2

保留

5

3

INT1.4

35

0x0000 0D46

2

XINT1

5

4

INT1.5

36

0x0000 0D48

2

XINT2

5

5

INT1.6

37

0x0000 0D4A

2

ADCINT(ADC)

5

6

INT1.7

38

0x0000 0D4C

2

TINT0(CPU定时器0)

5

7

INT1.8

39

0x0000 0D4E

2

WAKEINT(LPM/WD)

5

8(最低)


PIE 组3 向量-复用CPU的INT3中断

INT3.1

48

0x0000 0D60

2

ePWM1_INT(ePWM1)

7

1(最高)

INT3.2

49

0x0000 0D62

2

ePWM2_INT(ePWM2)

7

2

INT3.3

50

0x0000 0D64

2

ePWM3_INT(ePWM3)

7

3

INT3.4

51

0x0000 0D66

2

ePWM4_INT(ePWM4)

7

4

INT3.5

52

0x0000 0D68

2

ePWM5_INT(ePWM5)

7

5

INT3.6

53

0x0000 0D6A

2

ePWM6_INT(ePWM6)

7

6

INT3.7

54

0x0000 0D6C

2

保留

7

7

INT3.8

55

0x0000 0D6E

2

保留

7

8(最低)


PIE 组4 向量-复用CPU的INT4中断

INT4.1

56

0x0000 0D70

2

eCAP1_INT(eCAP1)

8

1(最高)

INT4.2

57

0x0000 0D72

2

eCAP2_INT(eCAP2)

8

2

INT4.3

58

0x0000 0D74

2

eCAP3_INT(eCAP3)

8

3

INT4.4

59

0x0000 0D76

2

eCAP4_INT(eCAP4)

8

4

INT4.5

60

0x0000 0D78

2

eCAP5_INT(eCAP5)

8

5

INT4.6

61

0x0000 0D7A

2

eCAP6_INT(eCAP6)

8

6

INT4.7

62

0x0000 0D7C

2

保留

8

7

INT4.8

63

0x0000 0D7E

2

保留

8

8(最低)


PIE 组5 向量-复用CPU的INT5中断

INT5.1

64

0x0000 0D80

2

eQEP1_INT(eCAP1)

9

1(最高)

INT5.2

65

0x0000 0D82

2

eQEP2_INT(eQEP2)

9

2

INT5.3

66

0x0000 0D84

2

保留

9

3

INT5.4

67

0x0000 0D86

2

保留

9

4

INT5.5

68

0x0000 0D88

2

保留

9

5

INT5.6

69

0x0000 0D8A

2

保留

9

6

INT5.7

70

0x0000 0D8C

2

保留

9

7

INT5.8

71

0x0000 0D8E

2

保留

9

8(最低)


PIE 组6 向量-复用CPU的INT6中断

INT6.1

72

0x0000 0D90

2

SPIRXINTA(SPI-A)

10

1(最高)

INT6.2

73

0x0000 0D92

2

SPITXINTA(SPI-A)

10

2

INT6.3

74

0x0000 0D94

2

MRINTB(McBSP-B)

10

3

INT6.4

75

0x0000 0D96

2

(McBSP-B)(SPI-B)

10

4

INT6.5

76

0x0000 0D98

2

MRINTA(McBSP-A)

10

5

INT6.6

77

0x0000 0D9A

2

MXINTA(McBSP-A)

10

6

INT6.7

78

0x0000 0D9C

2

保留

10

7

INT6.8

79

0x0000 0D9E

2

保留

10

8(最低)


PIE 组7 向量-复用CPU的INT7中断

INT7.1

80

0x0000 0DA0

2

DINTCH1 DMA通道1

11

1(最高)

INT7.2

81

0x0000 0DA2

2

DINTCH2 DMA通道2

11

2

INT7.3

82

0x0000 0DA4

2

DINTCH3 DMA通道3

11

3

INT7.4

83

0x0000 0DA6

2

DINTCH4 DMA通道4

11

4

INT7.5

84

0x0000 0DA8

2

DINTCH5 DMA通道5

11

5

INT7.6

85

0x0000 0DAA

2

DINTCH6 DMA通道6

11

6

INT7.7

86

0x0000 0DAC

2

保留

11

7

INT7.8

87

0x0000 0DAE

2

保留

11

8(最低)


PIE 组8向量-复用CPU的INT8中断

INT8.1

88

0x0000 0DB0

2

I2CINT1A(I2C-A)

12

1(最高)

INT8.2

89

0x0000 0DB2

2

I2CINT2A(I2C-A)

12

2

INT8.3

90

0x0000 0DB4

2

保留

12

3

INT8.4

91

0x0000 0DB6

2

保留

12

4

INT8.5

92

0x0000 0DB8

2

SCIRXINTC(SCI-C)

12

5

INT8.6

93

0x0000 0DBA

2

SCITXINTC(SCI-C)

12

6

INT8.7

94

0x0000 0DBC

2

保留

12

7

INT8.8

95

0x0000 0DBE

2

保留

12

8(最低)


PIE 组9向量-复用CPU的INT9中断

INT9.1

96

0x0000 0DC0

2

SCIRXINTA(SCI-A)

13

1(最高)

INT9.2

97

0x0000 0DC2

2

SCITXINTA(SCI-A)

13

2

INT9.3

98

0x0000 0DC4

2

SCIRXINTB(SCI-B)

13

3

INT9.4

99

0x0000 0DC6

2

SCITXINTB(SCI-B)

13

4

INT9.5

100

0x0000 0DC8

2

ECAN0INTA(eCAN-A)

13

5

INT9.6

101

0x0000 0DCA

2

ECAN1INTA(eCAN-A)

13

6

INT9.7

102

0x0000 0DCC

2

ECAN0INTB(eCAN-B)

13

7

INT9.8

103

0x0000 0DCE

2

ECAN1INTB(eCAN-B)

13

8(最低)


PIE 组10向量-复用CPU的INT10中断

INT10.1

104

0x0000 0DD0

2

保留

14

1(最高)

INT10.2

105

0x0000 0DD2

2

保留

14

2

INT10.3

106

0x0000 0DD4

2

保留

14

3

INT10.4

107

0x0000 0DD6

2

保留

14

4

INT10.5

108

0x0000 0DD8

2

保留

14

5

INT10.6

109

0x0000 0DDA

2

保留

14

6

INT10.7

110

0x0000 0DDC

2

保留

14

7

INT10.8

111

0x0000 0DDE

2

保留

14

8(最低)


PIE 组11向量-复用CPU的INT11中断

INT11.1

112

0x0000 0DE0

2

保留

15

1(最高)

INT11.2

113

0x0000 0DE2

2

保留

15

2

INT11.3

114

0x0000 0DE4

2

保留

15

3

INT11.4

115

0x0000 0DE6

2

保留

15

4

INT11.5

116

0x0000 0DE8

2

保留

15

5

INT11.6

117

0x0000 0DEA

2

保留

15

6

INT11.7

118

0x0000 0DEC

2

保留

15

7

INT11.8

119

0x0000 0DEE

2

保留

15

8(最低)


PIE 组12向量-复用CPU的INT12中断

INT12.1

120

0x0000 0DF0

2

XINT3

16

1(最高)

INT12.2

121

0x0000 0DF2

2

XINT4

16

2

INT12.3

122

0x0000 0DF4

2

XINT5

16

3

INT12.4

123

0x0000 0DF6

2

XINT6

16

4

INT12.5

124

0x0000 0DF8

2

XINT7

16

5

INT12.6

125

0x0000 0DFA

2

保留

16

6

INT12.7

126

0x0000 0DFC

2

LVF FPU

16

7

INT12.8

127

0x0000 0DFE

2

LUF FPU

16

8(最低)


参考:
 
  • 标签:数字信号处理器 
  • 群组:DSP开发知识 
  • 发表评论:
    粗体 斜体 下划线 插入引用 插入表情
    Powered by ASTAR.